mysql 多实例pid 同名_MySQL启多个实例

很多朋友都想在一台服务器上运行多个MySQL Instance,究竟怎么做呢?

首先要明晰几个原理, 简称为mysqld读取my.cnf的顺序:

第一搜,首先读取/etc/my.cnf,多实例这个配置文件不会存在。:-(

第二搜,$datadir/my.cnf,在data目录下寻找此配置文件。

第三搜,defaultfile=/path/my.cnf 通常写在命令行上,mysqld_safe defaultfile=/tmp/my.cnf &等执行。

第四搜,~/my.cnf 当前用户下的配置文件。

mysqld多进程运行的必要条件,就是pid文件,datadir,socket,port是独立分开的。

| Variable_name | Value |

| datadir | /home/mysql/ |

| Variable_name | Value |

| socket | /home/mysql/mysql.sock |

| Variable_name | Value |

| pid_file | /home/mysql/mysql.pid |

| Variable_name | Value |

| port | 3306 |

单一版本实现多实例

#pwd

/usr/local/

#touch my_multi.cnf

#cat my_multi.cnf

[mysqld_multi]

mysqld = /usr/bin/mysqld_safe

mysqladmin = /usr/bin/mysqladmin

user = root

[mysqld1]

socket = /tmp/mysql_3301.sock

port = 3301

pid-file = /usr/local/mysql_3301/data/mysql_3301.pid

datadir = /usr/local/mysql_3301/data/

log = /usr/local/mysql_3301/data/mysql_3301.log

user = mysql

[mysqld2]

socket = /tmp/mysql_3302.sock

port = 3302

pid-file = /usr/local/mysql_3302/data/mysql_3302.pid

datadir = /usr/local/mysql_3302/data/

log = /usr/local/mysql_3302/data/mysql_3302.log

user = mysql

启动mysqld 的两个实例

/usr/bin/mysqld_multi –config-file=./my_multi.cnf start 1,2

Starting mysqld daemon with databases from /usr/local/mysql_3301/data/

Starting mysqld daemon with databases from /usr/local/mysql_3302/data/

查看3301,3302端口是否被监听

# netstat -lt |grep 33

tcp 0 0 *:3301 *:* LISTEN

tcp 0 0 *:3302 *:* LISTEN

测试mysql是否可以连通

#pwd

/usr/local/

通过/tmp/mysql_3301.sock连接3001端口的mysqld

# bin/mysql -u root -S /tmp/mysql_3301.sock -e “SELECT @@VERSION;”

停止3001端口的mysqld

# /usr/bin/mysqld_multi –config-file=./my_multi.cnf stop 1

STOPPING server from pid file /usr/local/mysql_3301/data/mysql_3301.pid

091010 11:56:04 mysqld ended

再次连接,系统会提示错误

# bin/mysql -u root -S /tmp/mysql_3301.sock -e “SELECT @@VERSION;”

ERROR 2002 (HY000):

Can’t connect to local MySQL server through socket ‘/tmp/mysql_3301.sock’ (2)

相同的步骤测试3002端口的mysqld,输出与上面相同。

# /usr/bin/mysql -u root -S /tmp/mysql_3302.sock -e “SELECT @@VERSION;”

# /usr/bin/mysqld_multi –config-file=./my_multi.cnf stop 2

# /usr/bin/mysql -u root -S /tmp/mysql_3302.sock -e “SELECT @@VERSION;”

补充上两句:

[Nova@imdba.cn mysql]# cp ../mysql-5.0.67/support-files/my-large.cnf /etc/my.cnf

[Nova@imdba.cn mysql]# cp ../mysql-5.0.67/support-files/mysql.server /etc/rc.d/init.d/mysqld

[Nova@imdba.cn mysql]# chkconfig –add mysql

[Nova@imdba.cn mysql]# chkconfig –level mysql 345 on

[Nova@imdba.cn mysql]# chkconfig –list mysql

http://www.imdba.cn/2009/10/10/more_mysqld_in_one_server/

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-10-12 11:03

浏览 712

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值