MySQL通过两种方式启动多实例
有时候,可能基于成本的考虑,我们希望在单台Linux机器上部署多个MySQL实例,比如用来做异地灾备数据库或者延迟从库。
这一节内容,就来聊一下怎样在一台Linux机器上启动多个实例。
1 分别启动多个实例
1.1 首先安装一个MySQL实例
使用脚本安装MySQL
1.2 复制数据目录和启动脚本
需要停掉之前的MySQL实例:
/etc/init.d/mysql.server stop
复制数据目录:
cp -rf /data/mysql /data/mysql3307
复制启动脚本:
cp /etc/init.d/mysql.server /etc/init.d/mysql3307.server
1.3 修改启动脚本和配置文件
编辑启动脚本
vim /etc/init.d/mysql3307.server
修改
:%s/\/data\/mysql/\/data\/mysql3307/g
lock_file_path="$lockdir/mysql3307"
修改配置文件
vim /data/mysql3307/conf/my.cnf
修改:
:%s/\/data\/mysql/\/data\/mysql3307/g
:%s/mysql.sock/mysql3307.sock/g
:%s/3306/3307/g
1.4 修改属组
chown mysql.mysql /data/mysql3307/ -R
1.5 启动MySQL
/etc/init.d/mysql.server start /etc/init.d/mysql3307.server start
1.6 测试登录两套MySQL
mysql -uroot -p
mysql -uroot -p -P 3307
2 使用mysqld_multi部署多实例
2.1 目录和配置文件准备
创建数据目录
mkdir -p /data/{mysql3311,mysql3312}/data
增加配置文件
mkdir -p /data/mysqld_multi/conf/mkdir /data/mysqld_multi/log/vim /data/mysqld_multi/conf/my.cnf
加入如下内容:
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /data/mysqld_multi/log/mysqld_multi.log
user = root
pass = martin
[mysqld3311]
socket = /data/mysql3311/data/mysql3311.sock
port = 3311
pid-file = /data/mysql3311/data/mysql3311.pid
datadir = /data/mysql3311/data/
user = mysql
[mysqld3312]
socket = /data/mysql3312/data/mysql3312.sock
port = 3312
pid-file = /data/mysql3312/data/mysql3312.pid
datadir = /data/mysql3312/data/
user = mysql
2.2 初始化
mysqld --datadir=/data/mysql3311/data/ --user=mysql --initialize mysqld --datadir=/data/mysql3312/data/ --user=mysql --initialize
2.3 启动多实例
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf start
2.4 修改所有实例的root密码
登录MySQL
mysql -uroot -p -S /data/mysql3311/data/mysql3311.sock
修改root密码:
alter user user() identified by 'martin';
修改密码之后,查看多实例状态:
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf report
2.5 关闭和启动其中一个实例
比如我们关闭其中一个实例,执行
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf stop 3311
再查看一次实例状态
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf report
在启动关闭的实例
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf start 3311
2.6 登录多实例的方式
mysql -uroot -p -S /data/mysql3311/data/mysql3311.sock mysql -uroot -p -S /data/mysql3311/data/mysql3311.sock
发表评论