0
点赞
收藏
分享

微信扫一扫

docker容器运行mysql5.7实现主从复制

菜菜捞捞 2022-02-14 阅读 52

拉取mysql5.7镜像

docker pull mysql:5.7

运行容器

docker run -di --name master -p3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker run -di --name slave -p3308:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7

docker ps -a // 查看启动中的容器
 

3307端口的为master,3308的为slave。

创建成功后,Navicat客户端登录(win7 docker默认ip为:192.168.99.100):

Master配置

进入容器:

docker exec -ti master bash

使用命令行进入mysql:

mysql -u root -p

接着输入root用户的密码(密码忘记的话就网上查一下重置密码吧~),然后创建用户:

//172.17.0.3是slave docker从机的IP;即:master = 172.17.0.4 , slave = 172.17.0.5
// 或者使用下面命令获取容器的元信息
docker inspect master

创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
CREATE USER 'slave'@'%' IDENTIFIED BY 'root';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

flush privileges;

创建的这两个用户在配置slave从机时要用到。

接下来在找到mysql的配置文件/etc/mysql/my.cnf,增加以下配置:

[mysqld]
# 开启binlog
log-bin=mysql-bin
server-id=3307
# 需要同步的数据库,如果不配置则同步全部数据库
binlog-do-db=test_db
# binlog日志保留的天数,清除超过10天的日志
# 防止日志文件过大,导致磁盘空间不足
expire-logs-days=10 

譬如:

 

配置完成后,退出重启mysql: 

docker restart master

Slave配置:

进入容器:

docker exec -it /bin/bash

找的my.cnf文件,路径:/etc/mysql/my.cnf,录入下面的信息:

[mysqld]
server-id=3308
log-bin=mysql-bin
innodb_flush_log_at_trx_commit=1
sync_binlog=1

 配置完成后,退出重启mysql: 

docker restart slave

master: 进入master容器 

docker exec -it master /bin/bash
mysql -uroot -p123456
show master status;

 

  slave:进入slave

 

change master to master_host='172.17.0.4', master_user='slave', master_password='root', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=617;
开始复制:start slave
查看:show slave status \G;

 

完成主从复制测试:

 

 

 

 

 

 

 

 

 

 

 

 

举报

相关推荐

0 条评论