Docker+MySQL的主从架构同步数据的方法

发布于:2025-04-10 ⋅ 阅读:(32) ⋅ 点赞:(0)

Docker+MySQL的主从架构同步数据的方法

一、前提条件

1.1 构建好环境:基于Docker去创建MySQL的主从架构

1.2 主从关系断开(不同步)

二、MySQL主从同步恢复指南

当MySQL主从同步断开后,您需要重新建立主从同步关系。以下是详细的恢复步骤:

2.1.1 检查当前同步状态

首先在从库上检查同步状态:

SHOW SLAVE STATUS\G;

查看关键字段:

  • Slave_IO_Running (I/O线程状态)
  • Slave_SQL_Running (SQL线程状态)
  • Last_Error (错误信息)
  • Seconds_Behind_Master (落后主库的秒数)
2.1.2 根据情况选择恢复方法
2.1.2.1 情况一:少量数据不同步(可自动恢复数据,不包括建库建表语句)

比如已经断开连接,但是在主库已经新建库表情况下,此方法无法同步

-- 停止从库同步
STOP SLAVE;

-- 跳过指定数量的错误事件
SET GLOBAL sql_slave_skip_counter = 1;

-- 重新启动同步
START SLAVE;
2.1.2.2 情况二:需要完全重新同步 (推荐,但不建议高峰时运行)

在主库操作:

mysql -u root -p

锁定主库表(生产环境请在低峰期操作):

FLUSH TABLES WITH READ LOCK;

获取主库二进制日志位置,记录File和Position值,例如:

mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |      157 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

主库容器导出主库数据(新终端中执行):

跳转到Docker宿主机拷贝主库数据到从库容器

# 登录主库容器
[root@localhost ~]# docker exec -it mysql-master-1 bash
bash-4.4# 

# 从数据库导出主库数据到主库容器
bash-4.4# mysqldump -u root -p --all-databases --master-data=2 > master_dump.sql
mysqldump: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.
WARNING: --master-data is deprecated and will be removed in a future version. Use --source-data instead.
Enter password: 

bash-4.4# ls
master_dump.sql

解锁主库:

UNLOCK TABLES;

在从库操作:

mysql -u root -p

停止从库服务: