news 2026/4/30 20:44:49

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:52:27

常见Web安全问题及防御策略,想转行当程序员的必看

常见Web安全问题及防御策略,想转行当程序员的必看 1)要在各个不同层面,不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体; 2)要在正确的地方做正确的事情,即:在解…

作者头像 李华
网站建设 2026/4/30 11:10:03

JS逆向学习之JS语法(一)

JS逆向学习之JS语法(一) 目录 1.前言: 为什么在渗透测试/安全领域要熟悉 JS 逆向? ▪ 典型场景与案例分析 2. JavaScript 基础语法概览 2.1变量 2.1.1 变量声明方式 2.1.2 常用数据类型 2.2运算符 2.3函数 2.3.1 函数声明 & …

作者头像 李华
网站建设 2026/4/16 11:51:19

老猿学5G:从QoS参数到计费策略,解码5QI、ARP与多量纲计费实战

1. 5G多量纲计费:从传统模式到精细化运营 记得我第一次接触5G计费方案时,被运营商发来的账单吓了一跳——同样的流量使用量,费用却比4G时代高出不少。后来才明白,这就是5G多量纲计费的典型特征。传统计费就像去餐厅按菜品数量结账…

作者头像 李华
网站建设 2026/4/18 12:04:11

别再只用ros::Time::now()计时了!ROS时间API的5个实战技巧与常见误区

ROS时间API实战指南:从基础到高阶的5个关键技巧 在机器人操作系统(ROS)开发中,时间处理是构建可靠系统的基石。许多开发者习惯性地使用ros::Time::now()进行简单计时,却忽略了ROS时间API提供的丰富功能和潜在陷阱。本文将带您深入探索ROS时间…

作者头像 李华
网站建设 2026/4/16 11:49:16

RESTful API设计最佳实践:构建可扩展的后端服务

RESTful API设计最佳实践:构建可扩展的后端服务 在当今的微服务架构和前后端分离开发模式下,设计高质量的RESTful API变得尤为重要。本文基于最新的行业标准和实践,为您提供一套完整的RESTful API设计指南,帮助构建可扩展、可维护…

作者头像 李华
网站建设 2026/4/16 11:49:15

告别英文界面困扰:Android Studio中文语言包完全指南

告别英文界面困扰:Android Studio中文语言包完全指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Android S…

作者头像 李华