环境: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配置实例
根据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=multipass
log=/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