mysql集群,主从复制
主服务器IP=172.17.1.32从服务器IP=172.17.1.24一、主从服务启动容器主、从相同:docker run -p 3310:3306 --name mysql3310 -v /ruoyi/mysql/data3310:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d --restart=always --privileged=true hu
主服务器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
更多推荐
所有评论(0)