docker mysql5.7 配置主从复制

 

拉取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 // 查看启动中的容器

docker mysql5.7 配置主从复制

 

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

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

docker mysql5.7 配置主从复制

 

 

 

Master配置

进入容器:

docker exec -ti master bash

 

使用命令行进入mysql:

mysql -u root -p

 

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

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

// 创建用户 GRANT REPLICATION SLAVE ON *.* to ‘slave‘@‘192.17.0.3‘ identified by ‘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

譬如:

docker mysql5.7 配置主从复制

 

 

 

 

 

 

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

docker restart master

 

Slave配置

进入容器:

docker exec -ti slave 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

 

然后继续配置:

change master to master_host=172.17.0.2,master_user=slave,master_password=slave,master_port=3306,master_log_file=mysql-bin.000001,master_log_pos=617,master_connect_retry=30;

 

设置完之后需要启动:

# 启动slave服务
start slave;

然后继续执行:

show slave status\G;

成功效果:

docker mysql5.7 配置主从复制

 

 

 

效果

在新建数据库时,主从库效果如下:

docker mysql5.7 配置主从复制

 

 

大功告成~

 

docker mysql5.7 配置主从复制

上一篇:「MySQL Utilities」- 安装 @20210417


下一篇:数据库基础一