环境:linux 64位 centos 6.4

服务器上本来rpm 安装了mysql 5.1,现在想额外开个3307端口的实例。

操作步骤如下:

1、拷贝数据

# cd /var/lib
# cp -R mysql mysql2
# cp  /etc/my.cnf  /etc/my3307.cnf
# nano /etc/my3307.cnf (主要就是修改port,datadir,sock)
[client]
 port=3307[mysqld]
 port =3307
 datadir=/var/lib/mysql2
 socket=/var/lib/mysql2/mysql.sock
 user=mysql
 key_buffer_size=256M
 default-character-set=utf8

2、启动mysql 3307

# /usr/bin/mysqld_safe --defaluts-files=/etc/my3307.cnf --user=mysql &

3、查看启动是否成功

# ps -ef | grep mysql

4、连接mysql

# mysql -uroot -p --port=3307

进入mysql ,但是运行以下命令 show global variables like 'port';  显示的端口号是3306,why??????

但是通过以下这两种方式连接mysql,以下命令 show global variables like 'port';  显示的端口号是正确的,是3307。 why????

# mysql -uroot -p -S /var/lib/mysql2/mysql.sock
# mysql -uroot -p  --protocol=tcp --port=3307

5、多实例启动,mysqld_multi配置实例


Mysqld_multi介绍

根据Mysql管理手册中提到:每个Mysql的服务都可为独立的,所以它都调用一个my.cnf中各自不同的启动选项--就是下文中将提到的GNR值,使用不同的端口,生成各自的套接文件,服务的数据库都是独立的.

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

程序在my.cnf(或是在--config-file自定义的配置文件)中搜索[mysqld#]段,"#"可以是任意的正整数。这个正整数就是在下面提及的段序列,即GNR。段的序号做为mysqld_multi的参数,来区别不同的段,这样你就可以控制特定mysqld进程的启动、停止或得到他的报告信息。这些组里的参数就像启动一个mysqld所需要的组的参数一样。但是,如果使用多服务,必须为每个服务指定一个unix socket或端口

(1)、# nano /etc/my.cnf
[mysqld_multi]
 mysqld=/usr/bin/mysqld_safe
 mysqladmin=/usr/bin/mysqladmin
 user=multi_admin
 password=multipasslog=/var/lib/mysql2/multi.log

 [mysqld3306]
 port=3306
 basedir=/usr
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 default-character-set=utf8

 [mysqld3307]
 port=3307
 basedir=/usr
 datadir=/var/lib/mysql2
 socket=/var/lib/mysql2/mysql.sock
 default-character-set=utf8

(2)、创建mysqld_multi用户

创建用于关闭数据库的账号,所以只需要shutdown权限。此帐号需在my.cnf里面配置。

grant shutdown *.* to 'multi_admin'@'localhost' identified by 'multipass';

(3)、Mysqld_multi启动、关闭、状态检查

要想调用mysqld_multi,使用下面的语法:

mysqld_multi [options] {start|stop|report} [GNR[,GNR] ...]

start、stop和report表示你想要执行的操作。你可以在单个服务器或多个服务器上执行指定的操作,取决于选项名后面的GNR 列。如果没有该列,mysqld_multi为

选项文件中的所有服务器执行该操作。

每个GNR值代表一个选项组号或组号范围。GNR值应为选项文件中组名末尾的号。例如,组[mysqld17]的GNR为17。要想指定组号的范围,用破折号间隔开第1个

和最后1个号。GNR值10-13代表组[mysqld10]到[mysqld13]。可以在命令行中指定多个组或组范围,用逗号间隔开。GNR列不能有空格字符(空格或tab);空格字符

后面的内容将被忽略掉。

该命令使用选项组[mysqld3307]启动单个服务器:
 /usr/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf  start 3307
该命令停止多个服务器,使用选项组[mysql8]和[mysqld10]至[mysqld13]:
/usr/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf stop 8,10-13
或者换一下形式关闭单个服务器
mysqladmin -u root -S /var/lib/mysql2/mysql.sock shutdown
该命令查看多个服务器,使用选项组[mysql8]和[mysqld10]至[mysqld13]:
/usr/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf  report 8,10-13

6、mysqld_multi 开机自启动

#nano /etc/rc.local  添加以下内容
/usr/bin/mysqld_multi  --defaults-file=/etc/my.cnf start 3306,3307