首页 > 技术文章 > docker (mysql 8.+ )主从同步

jianxgin 2019-11-05 11:10 原文

1.环境centos7.5  docker 

2.下载docker 版本的mysql 启动容器

 docker run --name mysql_master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/mysql:latest

 docker run --name mysql_slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/mysql:latest

3.docker ps 进入容器改my.cnf

master:

server_id=5
binlog_ignore_db=mysql
log_bin=master5
binlog_format=mixed

slave:

server_id=5
binlog_ignore_db=mysql
log_bin=slave6
binlog_format=mixed

4.ctrl + p + q 退出容器  执行重启:

docker  f18ebe8a7546 restart

docker  981e5ff53e4d restart

5.主库执行

create user slave@"%" identified by "123qqq...A";
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123qqq...A';

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123qqq...A';

grant replication slave on *.* to slave@"%"; 

reset master;

show master status

   从库执行

change master to master_host='172.17.0.5', master_user='slave', master_password='123456', master_port=3306, master_log_file='master5.000001', master_log_pos=155;

start slave;

show slave status\G;

     Slave_IO_Running: Yes

     Slave_SQL_Running: Yes

6.验证数据库是否同步

在宿主机登录(root用户)其中主mysql执行创建库表的命令,在从上查看是否有新数据产生。

7.备份操作全备

mysqldump -Uroot -p密码 -A > all.sql

还原容器里的数据到新的数据库

docker cp f18ebe8a7546:/all.sql ./   移动·容器内的sql文件到宿主机 ,在复制到新的服务器执行:

mysqldump -Uroot -p密码 < all.sql   或者进入数据库执行  source   /root/all.sql

 

推荐阅读