主服务器IP=172.17.1.32
从服务器IP=172.17.1.242

一、主从服务启动容器
主、从相同:
docker run -p 3306:3306 --name mysql -v /ruoyi/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=sksd123456 -d --restart=always --privileged=true hub.c.163.com/library/mysql:latest

二、修改配置
修改主服务器配置,[mysqld]节点增加如下内容
server-id = 1
skip_name_resolve = 0
log-bin = mysql-bin

修改从服务器配置,[mysqld]节点增加如下内容
server-id = 2
skip_name_resolve = 0
log-bin = mysql-bin
read_only = 1

复制当前目录下配置文件到容器
docker cp mysqld.cnf mysql:/etc/mysql/mysql.conf.d/mysqld.cnf

重启主、从服务
docker restart mysql

三、在主服务器创建授权用户,注意是slave用户
docker exec -it mysql bash
mysql -u root -psksd123456
grant replication slave on *.* to repl@'172.17.1.%' identified by 'sksd123456';

四、备份和恢复
备份主库当前数据
docker exec -it mysql bash
mysqldump -u root -p -A -B -F --master-data=2 >/tmp/full.sql
sksd123456
复制到当前目录
docker cp mysql:/tmp/full.sql full.sql

到从服务器恢复
docker cp full.sql mysql:/tmp/full.sql
docker exec -it mysql bash
mysql -uroot -psksd123456
mysql> source /tmp/full.sql

五、开启从库复制
到从服务器查看备份的当前使用的文件及POS号
mysql> show master status;
mysql> CHANGE MASTER TO MASTER_HOST='172.17.1.32',MASTER_USER='repl',MASTER_PASSWORD='sksd123456', MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=3064664;

在从服务器启动从库复制
mysql> start  slave; 
mysql> reset slave;//如果start  slave; 失败,使用此命令,再使用start  slave;

在从服务器查看slave库的状态
mysql> show slave status\G;
主要查看Slave_IO_Running 与 Slave_SQL_Running 是否都为Yes


六、测试主从复制

参考:https://www.cnblogs.com/clsn/p/8150036.html


互为主从

在从服务器创建授权用户
docker exec -it mysql bash
mysql -u root -psksd123456
grant replication slave on *.* to repl@'172.17.1.%' identified by 'sksd123456';
mysql> flush privileges;

主服务器创建master
CHANGE MASTER TO MASTER_HOST='172.17.1.242',MASTER_USER='repl',MASTER_PASSWORD='sksd123456', MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=446;

在主服务器启动从库复制
mysql> start  slave; 
mysql> reset slave;//如果start  slave; 失败,使用此命令,再使用start  slave;

在主服务器查看slave库的状态
mysql> show slave status\G;
主要查看Slave_IO_Running 与 Slave_SQL_Running 是否都为Yes

测试互为主从
主服务器更新,查看从是否更新
从服务器更新,查看主是否更新


备注;或者使用下面方法更改主、从上的mater信息
服务器A:
mysql>change master to
>master_host='218.206.70.146',master_user='replicate',master_password='123456',
> master_log_file=' mysql-bin.000011 ',master_log_pos=497;
服务器B:
mysql>change master to
>master_host='59.151.15.36',master_user='replicate',master_password='123456',
> master_log_file=' mysql-bin.000016 ',master_log_pos=107;

参考:
https://blog.csdn.net/qq394829044/article/details/53203645

Logo

快速构建 Web 应用程序

更多推荐