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

 

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.2 , slave = 172.17.0.3
// 或者使用下面命令获取容器的元信息
docker inspect master

// 创建用户 GRANT REPLICATION SLAVE ON *.* to 'slave'@'172.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
复制代码

譬如:

 

 

 

 

 

 

配置完成后,退出重启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;

成功效果:

 

 

 

效果#

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

 

 

大功告成~

 

posted @   ToDarcy  阅读(127)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2020-04-17 python3连接数据库导入elasticsearch
点击右上角即可分享
微信分享提示
CONTENTS