实际工作中,由于公司的服务器资源有限等各种原因,可能会用到多实例mysql。我的安装记录分享下。

一、介绍

   mysql不同实例间是相互独立的,运行在不同的端口上,没有任何联系。所以每个实例要有自己的my.cnf,datadir,pid,port,socket。

   my.cnf最好放在自己对应的目录下,通常以my3307.cnf、my3308.cnf等。

   datadir最好也要根据不同的端口命不同的名字,比如mysql3307、mysql3308等。

   pid要在配置文件中设置路径,多个实例不能重复。

   port要在配置文件中指定,多个实例不能重复。

   socket要在配置文件中设置路径,这个路径要留意,因为我们登录mysql时要指定这个路径。

   

二、实例配置

   配置方法有两只,一种是全新编译安装,指定不同的安装路径。另一种安装一次然后cp安装目录。

   我们使用cp安装目录的方法,因为这个比较省时间(哈哈)。如果数据库正在使用,最好停掉数据库,不然有可能会损坏文件。

   

   假设mysql安装目录为data/mysql,那么先cp两份,当然想做几个实例就cp几份。

   cp -r /data/mysql /data/mysql_3307

   cp -r /data/mysql /data/mysql_3308

   然后修改下所有者,不然会报错

   chown -R mysql.mysql /data/mysql_3307

   chown -R mysql.mysql /data/mysql_3308

   

   假设mysql配置文件为/etc/my.cnf,我们也cp两份,也可以在cp mysql/support-files/my-medium.cnf这个模板。放到自己对应的安装目录下,分别命名为my3307.cnf、my3308.cnf。

   cp /etc/my.cnf /data/mysql3307/my3307.cnf

   cp /etc/my.cnf /data/mysql3307/my3308.cnf

   然后修改配置文件内容,主要如下。

vi /data/mysql_3307/my3307.cnf


[client]

port            = 3307

socket          = /tmp/mysql.sock

[mysqld]

port            = 3307

socket          = /tmp/mysql3307.sock

pid-file        = /data/mysql3307/mysql3307.pid

skip-external-locking

key_buffer_size = 16M

max_allowed_packet = 1M

table_open_cache = 64

sort_buffer_size = 512K

net_buffer_length = 8K

read_buffer_size = 256K

read_rnd_buffer_size = 512K

myisam_sort_buffer_size = 8M

log-bin=mysql-bin

binlog_format=mixed

server-id       = 1

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 20M

sort_buffer_size = 20M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout


vi /data/mysql_3308/my3308.cnf


[client]

port            = 3307

socket          = /tmp/mysql.sock

[mysqld]

port            = 3307

socket          = /tmp/mysql3308.sock

pid-file        = /data/mysql3308/mysql3308.pid

skip-external-locking

key_buffer_size = 16M

max_allowed_packet = 1M

table_open_cache = 64

sort_buffer_size = 512K

net_buffer_length = 8K

read_buffer_size = 256K

read_rnd_buffer_size = 512K

myisam_sort_buffer_size = 8M

log-bin=mysql-bin

binlog_format=mixed

server-id       = 1

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 20M

sort_buffer_size = 20M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout


(注:配置文件里没有指定安装目录配置文件路径,我们在启动时指定。)


三、启动实例


usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3307/mysql3307.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3307 --user=mysql &


/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3308/mysql3308.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3308 --user=mysql &


四、测试

netstat -lt|grep 33

tcp        0      0 *:3307                      *:*                    


   LISTEN      

tcp        0      0 *:3308                      *:*                    


   LISTEN