Linux MySQL 多实例配置

Linux MySQL 多实例配置

概述

由于一些测试或者开发上的需要,我们可能需要多个的Mysql服务,但是在多个服务器上部署Mysql无疑成本太高,
幸好MySQL提供了一个在一台服务器上运行多个mysql实例的工具:mysqld_multi。这个工具可以管理多个mysqld进程,而这些进程监听在不同的socket文件和端口上。通过这个工具,还可以启动和停止这些mysqld进程,也可获取到运行状态。

配置

要mysqld_multi工作,我们需要对mysql的配置文件进行修改。假设我们已经在Linux下安装好了MySQL
(以我的机器为例,MySQL安装在/var/lib/mysql下,配置文件my.cnf放在/etc下)。

1、 首先需要在/etc/my.cnf 中添加配置组[mysqld_multi],配置信息如下

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = root
password   = dingjia

这些配置主要让mysqld_multi能管理mysqld进程,包括启动、停止以及报告状态等。user和password用来停止mysqld服务
2、 然后我们需要为每个mysqld实例在/etc/my.cnf中添加一个配置,例如我们需要运行两个实例,配置信息如下:

[mysqld2]
socket     = /var/lib/mysql2/mysql.sock2
port       = 3307
pid-file   = /tmp/mysqld2.pid
datadir    = /var/lib/mysql2
user       = mysql
[mysqld3]
socket     = /var/lib/mysql3/mysql.sock3
port       = 3308
pid-file   = /tmp/mysqld3.pid
datadir    = /var/lib/mysql3

每一个实例我们需要增加一个[mysqldN]的配置。N是一个数字,从1开始,用来标识每个实例,mysqld_multi通过这个数字编号可以具体的管理到每个实例。我们需要为每个实例配置不同的socket、port和pid-file。
3、初始化各个实例

mysql_install_db --user=mysql --datadir=/var/lib/mysql2
mysql_install_db --user=mysql --datadir=/var/lib/mysql3

4、现在,我们可以启动我们的多个实例了

mysqld_multi start

用以下命令来查看实例的运行状态

mysqld_multi report

如果实例没有正常启动到,我们可以在启动时增加日志来查看失败的原因:

mysqld_multi --log=/tmp/multi_mysqld.log start

如果想启动具体某个实例,我们只需要在启动时加上实例的编号即可:

mysqld_multi start 2

5、登录实例:

mysql -S /var/lib/mysql2/mysql.sock2 -u root -p

6、我们需要对每个实例添加一个具有SHUTDOWN权限的帐号,用于停止实例。首先先登录实例,然后添加帐号和权限:

mysql> GRANT SHUTDOWN ON *.* TO 'root'@'localhost' IDENTIFIED BY 'dingjia';
mysql> FLUSH PRIVILEGES;

所有实例的帐号权限都添加好后,我们就可以运行以下命令停止实例了:

mysqld_multi stop

同样的,我们可以指定需要停止的实例,只需要在命令加上实例的编号即可:

mysqld_multi stop 2

你可能感兴趣的:(MySQL)