SLDS 2.0物流系统架构演进:从单体到分布式的实战经验
2026/11/2 2:52:12
mysqldump --all-databases --single-transaction > full_backup.sql是 MySQL逻辑备份的黄金命令,尤其适用于InnoDB 事务型数据库的在线热备。
mysqldump --all-databases --single-transaction>full_backup.sql| 部分 | 作用 |
|---|---|
mysqldump | MySQL 官方逻辑备份工具 |
--all-databases | 备份所有数据库(含mysql,sys,information_schema等系统库) |
--single-transaction | 关键参数:启动一致性快照 |
> full_backup.sql | 将输出重定向到 SQL 文件 |
✅核心价值:
在不锁表的情况下,获得全局一致性备份。
--single-transaction的底层机制SETSESSIONTRANSACTIONISOLATIONLEVELREPEATABLEREAD;STARTTRANSACTION;-- 关键:开启事务SHOWCREATEDATABASE...;SHOWCREATETABLE...;SELECT*FROMtable1;-- 所有查询在此事务内执行SELECT*FROMtable2;...COMMIT;SELECT均读取该快照,无视其他会话的写入。FLUSH TABLES WITH READ LOCK?--single-transaction:⚠️致命限制:
若存在 MyISAM 表,备份仍可能不一致!
(因 MyISAM 不支持 MVCC)
--all-databases的备份内容生成的full_backup.sql包含:
| 内容 | 说明 |
|---|---|
| 系统库 | mysql(用户权限)、sys(性能视图) |
| 用户库 | 所有自建数据库 |
| DDL 语句 | CREATE DATABASE/CREATE TABLE |
| DML 语句 | INSERT INTO ... VALUES (...) |
| 元数据 | 字符集、排序规则、存储引擎 |
💡注意:
不包含:
- 二进制日志(binlog)位置
- 触发器/存储过程(需额外参数)
- 表空间文件(.ibd)
| 场景 | 风险 |
|---|---|
| 含 MyISAM 表 | 备份期间 MyISAM 写入导致不一致 |
| 超大数据库(> 500GB) | 备份耗时过长,事务持有 undo log 导致膨胀 |
| 需要 PITR(时间点恢复) | 逻辑备份无法基于 binlog 精确回滚 |
Innodb_trx中长事务ALTER TABLE,可能导致mysqldump报错--lock-for-backup(Percona 版本)mysqldump --default-character-set=utf8mb4...mysqldump\--all-databases\--single-transaction\--master-data=2\# 记录 binlog 位置(注释形式)--routines\# 备份存储过程/函数--triggers\# 备份触发器--events\# 备份事件调度器--default-character-set=utf8mb4\--hex-blob\# 二进制安全(防 BLOB 损坏)--compress\# 网络传输压缩--quick\# 防止大表内存溢出>full_backup_$(date+%F).sql🔑关键参数说明:
--master-data=2:在 SQL 文件中记录CHANGE MASTER TO语句(用于搭建从库)--hex-blob:将 BLOB 转为十六进制,避免特殊字符破坏 SQL
# 实时查看进度(需安装 pipeview)pvfull_backup.sql|gzip>backup.sql.gz# 检查是否有报错grep-i"error\|warning"full_backup.sql# 验证关键表行数grep-A10"INSERT INTO important_table"full_backup.sql|wc-l# 在隔离环境恢复mysql -u root -p<full_backup.sql# 验证业务功能| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| mysqldump + single-transaction | 简单、跨版本兼容 | 速度慢、无 PITR | 中小 InnoDB 库 |
| Percona XtraBackup | 物理备份、秒级恢复 | 仅 InnoDB、学习成本高 | 大型生产库 |
| MySQL Enterprise Backup | 官方商业工具 | 付费 | 企业级需求 |
--single-transaction是 InnoDB 热备的基石,但仅对事务表有效。💡一句话:
这行命令不是魔法,而是 MVCC 赋予 DBA 的礼物——
在业务奔流不息时,悄然捕获数据的一致瞬间。