当前位置: 首页 > news >正文

Docker 快速部署 MySQL 主从复制(一主一从)

一、环境准备

  1. 安装 Docker(已装跳过)
  2. 规划 IP/端口:
    • 主库(Master):端口 3307
    • 从库(Slave):端口 3308
  3. 创建数据目录(持久化)
# 创建主从数据&配置目录mkdir-p/data/mysql/master/confmkdir-p/data/mysql/master/datamkdir-p/data/mysql/slave/confmkdir-p/data/mysql/slave/data

二、配置主库 Master

1. 创建主库配置文件

vi/data/mysql/master/conf/my.cnf

写入以下内容:

[mysqld] server-id=1 log-bin=mysql-bin binlog-format=ROW binlog-do-db=testdb # 需要同步的库(可改) binlog-ignore-db=mysql # 不同步的库 binlog-ignore-db=sys binlog-ignore-db=information_schema binlog-ignore-db=performance_schema character-set-server=utf8mb4 default-authentication-plugin=mysql_native_password

2. 启动主库容器

dockerrun-d\--namemysql-master\--restart=always\-p3307:3306\-v/data/mysql/master/conf/my.cnf:/etc/my.cnf\-v/data/mysql/master/data:/var/lib/mysql\-eMYSQL_ROOT_PASSWORD=123456\mysql:8.0

三、配置从库 Slave

1. 创建从库配置文件

vi/data/mysql/slave/conf/my.cnf

写入:

[mysqld] server-id=2 relay-log=mysql-relay-bin read_only=1 character-set-server=utf8mb4 default-authentication-plugin=mysql_native_password

2. 启动从库容器

dockerrun-d\--namemysql-slave\--restart=always\-p3308:3306\-v/data/mysql/slave/conf/my.cnf:/etc/my.cnf\-v/data/mysql/slave/data:/var/lib/mysql\-eMYSQL_ROOT_PASSWORD=123456\mysql:8.0

四、主库创建同步账号

进入主库

dockerexec-itmysql-master mysql-uroot-p123456

执行SQL(创建同步用户)

CREATEUSER'repl'@'%'IDENTIFIEDBY'Repl@123456';GRANTREPLICATIONSLAVEON*.*TO'repl'@'%';FLUSHPRIVILEGES;-- 查看主库状态(记录 File 和 Position,后面要用!)SHOWMASTERSTATUS;

示例结果

File: mysql-bin.000003 Position: 669

这两个值必须记下来!


五、从库配置连接主库

进入从库

dockerexec-itmysql-slave mysql-uroot-p123456

执行SQL(修改为你自己的信息)

CHANGE MASTERTOMASTER_HOST='xxxx',# 宿主机IP / 主库容器IPMASTER_PORT=3306,# 容器内部端口,不是宿主机3307MASTER_USER='repl',MASTER_PASSWORD='Repl@123456',MASTER_LOG_FILE='mysql-bin.000003',# 刚才记录的值MASTER_LOG_POS=669;# 刚才记录的值-- 启动同步STARTSLAVE;-- 查看同步状态SHOWSLAVESTATUS\G

六、验证是否成功

看状态:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
两个都是 Yes 就成功了!

测试同步:

  1. 主库创建库/表/插入数据
  2. 从库自动同步

1. 先在主库创建要同步的库

你主库现在Binlog_Do_DB=testdb,但库里还没有testdb,所以先建库:

进入主库 MySQL:

dockerexec-itmysql-master mysql-uroot-p123456

执行:

CREATEDATABASEtestdb;USEtestdb;CREATETABLEuser(idINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(20));INSERTINTOuser(name)VALUES('zhangsan');INSERTINTOuser(name)VALUES('lisi');

2. 去从库查看是否同步

进入从库 MySQL:

dockerexec-itmysql-slave mysql-uroot-p123456

执行:

SHOWDATABASES;

能看到testdb就说明库同步了。

再查表数据:

USEtestdb;SELECT*FROMuser;

3. 看一眼主从状态(确保正常)

SHOWSLAVESTATUS\G

只要:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes

就说明主从正常,数据会自动同步。


如果你想同步多个库(比如 testdb、orderdb)

主库my.cnf改成这样:

binlog-do-db=testdb binlog-do-db=orderdb binlog-ignore-db=mysql binlog-ignore-db=sys binlog-ignore-db=information_schema binlog-ignore-db=performance_schema

然后重启主库:

dockerrestart mysql-master

再去主库建orderdb测试同步即可。

七、常用命令

# 重启主从dockerrestart mysql-master mysql-slave# 从库停止同步STOP SLAVE;RESET SLAVE;# 查看主库状态SHOW MASTER STATUS;# 查看从库状态SHOW SLAVE STATUS\G;
http://www.jsqmd.com/news/649927/

相关文章:

  • 从源码到黑盒:Quartus网表封装实战指南(.qxp与.qdb双版本解析)
  • 精准选型不踩雷!2026降ai率工具推荐排行 涉密适配高效省心高性价比 - 极欧测评
  • 告别英文界面困扰:Android Studio中文语言包完全指南
  • AKShare终极指南:如何免费获取专业金融数据
  • 奥亚膨胀度测定仪选型指南:中炭科仪领衔,国产如何对标国际? - 品牌推荐大师1
  • 八大网盘直链下载助手:一站式解决跨平台文件下载难题
  • Nacos-服务实例权重配置的艺术(从性能优化到平滑升级)
  • 声学指纹与开关柜在线监测系统:优质供应商推荐 - 工业品网
  • 蓝牙HFP协议实战:手把手教你解析SLC建立过程中的关键AT指令
  • 告别“锯齿状边缘”:深入解读UNetFormer中十字形窗口交互模块,如何提升遥感分割精度
  • 3大突破性策略:用biliTickerBuy实现B站会员购自动化抢票方案
  • 探寻实力强的周岁宴策划公司,费用多少心中有数 - 工业推荐榜
  • 终极指南:如何用MAA实现明日方舟全自动日常管理
  • 模型微调成本飙升?多语言Prompt工程与Adapter融合策略全解析,降本62%实测数据曝光
  • Bioicons深度解析:科学插图的矢量图标库革命
  • 2026年好用的明泰铝业分销商、大型代理商、老代理商品牌大盘点 - 工业推荐榜
  • 专业评测!2026降ai率工具推荐排行 语义重构/隐私加密/全流程服务 - 极欧测评
  • Matlab函数传参和返回值的‘隐藏技巧’:用逗号分隔列表动态处理可变参数
  • Vivado固化程序到Flash老报错?从原理到实战,彻底搞懂‘校验失败’与‘地址不匹配’的解决方法
  • OBS多平台直播插件:告别重复劳动,一键同步推流到各大平台
  • 2026年乌鲁木齐家庭搬家与企业搬迁深度横评:透明报价与安全搬运全指南 - 精选优质企业推荐榜
  • YOLOv11实战避坑指南:1000张图训练舰船模型,我的mAP从0.3到0.9踩了哪些坑?
  • 芯片设计实战:如何用Innovus CCOpt命令精准修剪Clock Tree冗余单元(附Debug技巧)
  • wiliwili:让B站体验在游戏主机上“重生“的第三方客户端
  • Layerdivider:3步将任何图片转换为专业PSD分层的完整指南
  • 5个理由为什么Jasminum是Zotero中文文献管理的终极解决方案
  • 细聊北京靠谱的发电机组厂商,北斗动力选购要点有哪些? - myqiye
  • Flux2 Klein动漫转写实LoRA:5分钟将二次元变真人,保姆级ComfyUI教程
  • 别再只盯着Wi-Fi和LoRa了!聊聊Zigbee在智慧农场里的那些‘真香’场景和避坑经验
  • 告别依赖地狱:在Ubuntu 22.04上,用linuxdeployqt打包Qt应用(含第三方库处理)