演示的环境如下:
名称 | IP |
---|---|
msyql-master(主库) | 192.168.159.100 |
mysql-slave(从库) | 192.168.159.100 |
docker启动Mysql
注意挂载路径,和端口,我这里使用一台机器,启动两个容器,使用host模式进行容器间的通信
启动主节点
docker run -d --network host --name=mysql --env=MYSQL_ROOT_PASSWORD=123 --volume=/home/lxs/data/mysql/data:/var/lib/mysql --volume=/home/lxs/data/mysql/conf:/etc/mysql -p 3306:3306 --expose=33060 --restart=no --runtime=runc --detach=true mysql:5.7 mysqld
启动从节点
docker run -d --network host --name=mysql-slave --env=MYSQL_ROOT_PASSWORD=123 --volume=/home/lxs/data/mysql-slave/data:/var/lib/mysql --volume=/home/lxs/data/mysql-slave/conf:/etc/mysql -p 3316:3316 --expose=33160 --restart=no --runtime=runc --detach=true mysql:5.7 mysqld
准备配置文件
主节点配置
my.cnf
[mysqld]
# 服务的唯一编号
server-id=1
# 开启mysql binlog功能
log-bin=mysql-bin
# binlog记录内容的方式,记录被操作的每一行
binlog_format=ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image=minimal
# 指定需要复制的数据库名为test_bai
binlog-do-db=test_bai
修改好配置文件,重启mysql服务
创建从库同步数据的账号。我这理
grant replication slave on *.* to 'slavelxs'@'192.168.159.100' identified by 'slavelxs@123';
flush privileges;
- 查看主库的状态
show master status
从节点配置
my.cnf
[mysqld]
port=3316
# 服务的唯一编号
server-id = 2
# 开启mysql binlog功能
log-bin = mysql-bin
# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal
# 指定需要复制的数据库名为jgyw
replicate-do-db = test_bai ~
- 修改好配置文件,重启mysql服务
- 执行同步命令
change master to master_host='192.168.159.100',master_user='slavelxs',master_password='slavelxs@123',master_log_file='mysql-bin.000002',master_log_pos=1287;
# 开启同步功能
start slave;
- 查看从库的状态
show slave status
**注意:**Slave_IO_Running和Slave_SQL_Running的状态都为Yes时,说明从库配置成功。
测试主从同步
在主库中新建表,记录,自动同步到从库