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

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

文章目录

  • Docker+MySQL的主从架构同步数据的方法
    • 一、前提条件
    • 二、MySQL主从同步恢复指南
      • 2.1.1 检查当前同步状态
        • 2.1.2 根据情况选择恢复方法
          • 2.1.2.1 情况一:少量数据不同步(可自动恢复数据,不包括建库建表语句)
          • 2.1.2.2 情况二:需要完全重新同步 (推荐,但不建议高峰时运行)
        • 2.1.3 验证同步
        • 2.1.4 自动修复脚本示例
        • 2.1.5 预防措施
        • 2.1.5 详细说明
    • 三、Docker容器与宿主机之间复制文件的方法
      • 3.1 传统老旧方法
        • 3.1.1 从容器复制文件到宿主机
        • 3.1.2 从宿主机复制文件到另一个容器
      • 3.2 高级方法(内置tar指令)
        • 3.2.1 直接通过管道传输(不经过宿主机磁盘)
    • 四、Github

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

停止从库服务:

相关文章:

  • MYSQL——SQL语句到底怎么执行
  • 数据库的MVCC机制详解
  • C# ref out关键字 理解学习记录
  • 国家科技奖项目答辩ppt设计_科技进步奖PPT制作_技术发明奖ppt美化_自然科学奖ppt模板
  • Linux 的准备工作
  • 大小端判断函数
  • 【I/O】文件系统操作
  • 2024年第十五届蓝桥杯CC++大学A组--成绩统计
  • 贪心算法:部分背包问题深度解析
  • openwrt软路由配置-----扩展系统空间
  • 【Linux】39.一个基础的HTTP Web服务器
  • 入侵检测系统(IDS)和入侵防御系统(IPS)有啥区别?
  • Linux系统05---进程
  • 安科瑞测频仪表:新能源调频困局的破局者
  • 【AI提示词】常青笔记生成器
  • 鸿蒙开发中的并发与多线程
  • 程序化广告行业(72/89):Tag Manager系统代码操作与行业发展剖析
  • yarn:error Error: certificate has expiredERR_OSSL_EVP_UNSUPPORTED解决
  • 【QT】QT的消息盒子和对话框(自定义对话框)
  • LLC工作模态详解
  • 厦门路桥建设集团有限公司网站/seo网站推广实例
  • 宾馆的网站回款如何做分录/外链工具软件
  • 网站做海外的防护/百度域名购买
  • 高端网站建设免费分析/网络推广与推广
  • 陕西省建设厅网站安全员报名/石家庄seo关键词
  • 怎么做动态网站/建设网站