一台机器的多个实例 mysqld_multi

博客已经搬家,请访问如下地址:http://www.czhphp.com

根据Mysql管理手册中提到:每个Mysql的服务都可为独立的,所以它都调用一个my.cnf中各自不同的启动选项–就是下文中将提到的GNR值,使用不同的端口,生成各自的套接文件,服务的数据库都是独立的。
所需要的准备有:(其实都是现成的)
1.只需要安装一套mysql的服务器软件就ok
2.需要有mysqld_multi
3.需要修改/etc/my.cnf

解释:
1../configure –prefix=/usr/local/mysql –datadir=/usr/local/mysql/data1 –sysconfdir=/etc
备注:–prefix将MYSQL安装到/usr/local/mysql,
–datadir将数据库生成/usr/local/mysql/data1
–sysconfdir是指定mysql使用到的my.cnf配置文件的搜索路径为/etc
其他mysql安装过程略.

2.mysqld_multi是管理多个mysqld的服务进程,这些服务进程使用不同的unix socket或是监听于不同的端口。他可以启动、停止和监控当前的服务状态。

3.程序在my.cnf(或是在–config-file自定义的配置文件)中搜索 [mysqld#]段,”#”可以是任意的正整数。这个正整数就是在下面提及的段序列,即GNR。段的序号做为mysqld_multi的参数,来区别不同的段,这样你就可以控制特定mysqld进程的启动、停止或得到他的报告信息。这些组里的参数就像启动一个mysqld所

下面贴出我的my.cnf文件片段

 

[mysqld_multi]
 mysqld     = /usr/bin/mysqld_safe
 mysqladmin = /usr/bin/mysqladmin
 user       = mysqlmulti

 password   = mysqlmulti
 log    = /home/client/log/mysql/log-multi.err
 # The MySQL server
 [mysqld1]
 user       = client
 port       = 3307
 socket     = /home/client/data/mysql_3307/mysqld.sock
 datadir    = /home/client/data/mysql_3307
 pid-file   = /home/client/data/mysql_3307/mysqld.pid
 log-err    = /home/client/log/log-3307.err
 log        = /home/client/log
 #skip-locking   
 character_set_server = utf8
 
 [mysqld2]
 user       = client
 port       = 3308
 socket     = /home/client/data/mysql_3308/mysqld.sock
 datadir    = /home/client/data/mysql_3308
 pid-file   = /home/client/data/mysql_3308/mysqld.pid
 log-err    = /home/client/log/log-3308.err
 log        = /home/client/log
 #skip-locking
 character_set_server = utf8

这里我的配置文件中有mysql1, mysqld2两个服务,分别使用3306,3307两个端口,每个datadir路径也不同。其他的一些设置可用my.cnf原来的内容

 

 

使用方法:# mysqld_multi [options] {start|stop|report} [GNR[,GNR]…]

start,stop和report是指你想到执行的操作。你可以在单独的服务或是多服务上指定一个操作,区别于选项后面的GNR列表。如果没有指定GNR列表,那么mysqld_multi将在所有的服务中根据选项文件进行操作。

每一个GNR的值是组的序列号或是一个组的序列号范围。此项的值必须是组名字最后的数字,比如说如果组名为mysqld17,那么此项的值则为 17.如果指定一个范围,使用”-”(破折号)来连接二个数字。如GNR的值为10-13,则指组mysqld10到组mysqld13。多个组或是组范围可以在命令行中指定,使用”,”(逗号)隔开。不能有空白的字符(如空格或tab),在空白字符后面的参数将会被忽略。

 

 

sudo /usr/bin/mysqld_multi --config-file=/home/client/conf/my.cnf start 1 启动

sudo /usr/bin/mysqld_multi --config-file=/home/client/conf/my.cnf stop 1 停止

 

sudo /usr/bin/mysqld_multi --config-file=/home/client/conf/my.cnf start 2 启动

sudo /usr/bin/mysqld_multi --config-file=/home/client/conf/my.cnf stop 1 停止

 

以此类推,或者这样

sudo /usr/bin/mysqld_multi --config-file=/home/client/conf/my.cnf start 1-n 启动n个实例

 

还可以查看某个服务是否启动

sudo /usr/bin/mysqld_multi --config-file=/home/client/conf/my.cnf report 2

Reporting MySQL servers
MySQL server from group: mysqld2 is running   

 

 

查看启动:

# ps aux
 /usr/bin/mysqld_safe --user=client --port=3307 --socket=/home/client/data/mysql_3307/mysqld.sock --datadir=/home/client/data/mysql_3307 --pid-file=/home/client/data/mysql_3307/mysqld.pid --log-err=/home/client/log/log-3307.err --log=/home/client/log --character_set_server=utf8
 /usr/bin/mysqld_safe --user=client --port=3308 --socket=/home/client/data/mysql_3308/mysqld.sock --datadir=/home/client/data/mysql_3308 --pid-file=/home/client/data/mysql_3308/mysqld.pid --log-err=/home/client/log/log-3308.err --log=/home/client/log --character_set_server=utf8

 

 

二. 如何连接进入指定的mysql服务器

mysql -uroot  -S/home/client/data/mysql_3307/mysqld.sock

 

[czh@dev1 mysql]$ mysql -uroot  -S/home/client/data/mysql_3307/mysqld.sock  
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.0.45-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

 

创建用户和数据库

 

[czh@dev1 mysql]$ mysql -uroot -P3307 -h127.0.0.1  
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.0.45-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database favorite default character set utf8;

mysql>grant all privileges on favorite.* to client@**.**.**.** identified by 'password';

mysql>grant shutdonw on *.* to 'mysqlmulti'on'localhost' identity by 'mysqlmulti';
mysql>flush privileges;
mysql>quit;

现在可以使用创建的用户登录了

 

mysql -uclient -ppassword -P3307 -h**.**.**.**

就写到这里吧。

博客已经搬家,请访问如下地址:http://www.czhphp.com

posted @ 2010-12-24 16:17  曹振华  阅读(833)  评论(0编辑  收藏  举报