千家信息网

详解Docker方式实现MySql 主从复制(实践篇)

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文实践了用Docker方式来实现基于binlog的MySql主从复制。关于MySql主从复制的原理将在下一篇中进行讲解。一些数据的本地存储目录结构mysql >tree -L 2.├── data│
千家信息网最后更新 2026年11月02日详解Docker方式实现MySql 主从复制(实践篇)

本文实践了用Docker方式来实现基于binlog的MySql主从复制。关于MySql主从复制的原理将在下一篇中进行讲解。

一些数据的本地存储目录结构

mysql >tree -L 2.├── data│  ├── master01│  └── slave01├── master01│  └── master01.cnf└── slave01  └── slave01.cnf

master01.cnf配置

[mysqld]log-bin=mysql-master01-bin # 使用binary logging,mysql-master01-bin是log文件名的前缀server-id=1 # 唯一服务器ID,非0整数,不能和其他服务器的server-id重复

slave01.cnf配置

[mysqld]log-bin=mysql-slave01-bin server-id=2  

创建master01容器

复制代码 代码如下:
docker run -d --name master01 -v /Users/craneyuan/backup/docker/mysql/data/master01:/var/lib/mysql -v /Users/craneyuan/backup/docker/mysql/master01:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 mysql:5.7

注意:启动容器的时候不要立刻就去连接数据库,会造成一些莫名奇妙的问题,比如连不上,可以将数据都删掉然后restart容器。

创建slave01容器

复制代码 代码如下:
docker run -d --name slave01 -v /Users/craneyuan/backup/docker/mysql/data/slave01:/var/lib/mysql -v /Users/craneyuan/backup/docker/mysql/slave01:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 mysql:5.7

在master01中添加复制用户

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';show master status; # 查看master的状态

在slave01中配置与master01相关的内容

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

change master to master_host='192.168.10.223',master_port=3307,master_user='backup',master_password='123456',master_log_file='mysql-master01-bin.000003', master_log_pos=154;master_host是宿主机的IP(ifconfig查到的操作系统IP,不是容器的IP,一定不能搞错) master_port是主服务器的映射到3306的端口(默认3306) master_user为创建的备份用户 master_password备份用户的密码 master_log_file和master_log_pos则是show master status列表里面的两个值,分别是mysql日志名和起始备份位置 

启动slave(依然在slave01中操作)

start slave; show slave status; 或者show slave status\G;

如果是Waiting for master to send event则说明主从复制成功了,若是Connecting to master肯定是配置错误,楼主就错了几次,重删除配置一下就行,这就是容器的好处,删除的代价很小,短时间就可以恢复。如果是Waiting for master to send event,对主库的增删改查从库都会同步修改。

扩展问题

slave设置为只读

在slave的配置文件中添加下面的选项

read-only=1    # 除非有SUPER权限,否则只读super-read-only=1 # SUPER权限也是只读

其他

如果master已经有数据了,怎么新增slave:可以先把master的数据导入到slave,再启动slave。具体可以参考这里。

如果已经有主从复制了,怎么增加slave:思路同上,不过不需要使用master的数据,直接用已有的slave数据就可以了。不需要停止master,新slave使用新的server-id。具体可以参考这里。

前面介绍的都是主从,如果需要slave也能同步到master就要设置主主复制:也就是说反过来再做一遍。

当slave比较多得时候,master的负载可能会成为问题。可以用主从多级复制:以slave为master来再引入新的slave。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

数据 主从 容器 配置 代码 备份 服务器 用户 问题 服务 内容 就是 文件 时候 权限 面的 参考 方式 实践 奇妙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 有格互联网科技 互联网科技工作委员会副主任毛军 科技股互联网 伴你行互联网科技有限公司 互联网金融科技委员会 互联网科技创新企业排名 富国互联网科技创新基金 上海电发互联网科技有限公司 小米互联网科技园设置 重庆互联网医院沙龙医盟信息科技 浙江互联网科技研学营 爱医互联网络科技 用友工业互联网科技发展 南博望互联网科技有限公司 产业互联网科技服务公司 上海同邻互联网科技有限公司规模 版纳互联网科技选哪家 互联网金融运营模式中的金融科技 互联网对科技影响 咖啡网 互联网科技图片 河南云网互联网络科技有限公司 互联网科技与金融科技 宜安科技 互联网金融 互联网科技和法律行业 互联网科技公司营业执照怎么办理 富国互联网金融科技混合基金 安徽零酒互联网科技有限公司 互联网科技创业计划的风险分析
0