讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在MySQL主从复制链路中通过从库进行不影响业务的备份?

小芳君_7173

小芳君_7173

发布时间:2026-06-26 06:37:41

|

662人浏览过

|

来源于php中文网

原创

直接在从库备份需确认复制状态正常、引擎兼容并正确使用--dump-slave=2等参数,避免START SLAVE语句和位点错误,物理备份须排除mysql.slave_%表且确保SQL线程暂停。

如何在mysql主从复制链路中通过从库进行不影响业务的备份?

直接在从库上做备份,主库完全无感知——但前提是连接对、锁对、位点记对,否则备份不可用或复制断裂。

确认从库连接和复制状态再动手

很多脚本一上来就跑 mysqldump,结果连错了库(连到主库)或压根没查延迟。备份前必须登录从库执行:

  • SHOW SLAVE STATUS\G,确认 Slave_IO_Running 和 Slave_SQL_Running 都是 Yes
  • Seconds_Behind_Master 必须稳定(比如 ≤ 5 秒),不能持续上涨;若延迟大,先等追平或业务低峰再操作
  • 检查 mysql 库下表引擎:SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='mysql' AND TABLE_NAME IN ('slave_master_info', 'slave_relay_log_info'); 若含 MyISAM,--single-transaction 对这些表无效,得靠 --safe-slave-backup 或手动停 SQL 线程

mysqldump 备份从库:参数组合不能错

从库逻辑备份不是简单加 --single-transaction 就完事。它不干扰复制的前提是避开系统表锁、跳过启动语句、记录正确位点:

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 必须加 --skip-slave-start:否则 dump 文件里会带 START SLAVE,还原后直接触发复制错乱
  • 不要用 --master-data=2(那是为主库设计的),改用 --dump-slave=2,它输出的是 CHANGE MASTER TO 所需的 relay log 位置,对应主库真实已执行点
  • 加 --single-transaction 仅对 InnoDB 表有效;若从库启用了 log-slave-updates 且自己也写 binlog,mysql 库里部分表可能是 MyISAM,此时要配合 --skip-lock-tables + --skip-triggers 避免隐式锁
  • 导出后立刻检查 dump 文件开头:确认没有 START SLAVE、SLAVE START,且有类似 -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000123', MASTER_LOG_POS=45678; 的注释行

xtrabackup 物理备份从库:跳过复制元数据是关键

物理备份快、适合大库,但从库的 mysql.slave_master_info 这类表是运行时状态,直接拷贝过去会导致新实例复制指向错误 master:

  • 必须排除复制系统表:--exclude='mysql\.slave_%'(注意反斜杠转义)
  • 不要用 --no-lock:虽然 InnoDB 表可免锁,但 mysql 库中 MyISAM 表(如 general_log)仍需锁,应强制用 --safe-slave-backup
  • 执行后盯日志:必须看到 Waiting for slave SQL thread to stop → done,否则 SQL 线程没真正暂停,备份位点不准
  • 备份完成立即 START SLAVE SQL_THREAD;,别等脚本自动处理——有些封装工具会漏这步

备份后最容易被忽略的三件事

脚本跑通 ≠ 备份可用。线上出问题往往卡在这几个细节:

  • 没校验 dump 文件是否完整:用 tail -n 20 backup.sql | grep '^-- Dump completed' 确认结尾正常,而不是被 kill -9 或磁盘满截断
  • 没验证位点可恢复:拿备份文件 + 对应 binlog 片段,在测试机上走一遍 mysql < backup.sql + mysqlbinlog binlog.000123 | mysql,确认 SHOW SLAVE STATUS 能正常启动
  • 没清理旧备份的 relay log 依赖:如果从库开启了 relay_log_purge=OFF,备份时没删掉旧 relay log,还原后可能因缺失 relay 日志导致 START SLAVE 报错 Could not find first log file name in binary log index file

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2113

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1299

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

755

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2852

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

4748

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1079

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5011

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

4442

2023.08.14

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

100

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 180人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 287人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn