MySQL无原生增量备份命令,需靠开启binlog实现;必须配置log-bin、server-id和ROW格式;真实策略为“全量备份+持续binlog归档”;恢复需精准定位position或时间点。
MySQL 本身不提供“增量备份”命令,靠 binlog 实现
MySQL 没有 mysqldump --incremental 这种原生命令。所谓“增量备份”,本质是开启并管理二进制日志(binlog),把所有 DML/DDL 操作(除 SELECT)按时间顺序记下来。恢复时用 mysqlbinlog 解析 + mysql 回放,就能还原某段时间的数据变化。
常见错误现象:SHOW MASTER STATUS 返回空、log_bin 变量为 OFF、mysqlbinlog 报错 “File not found”——基本都是没开 binlog 或路径配置错误。
- 必须在
[mysqld]段落中添加log-bin=/var/lib/mysql/mysql-bin(建议用绝对路径) - 必须设置
server-id=1(主从或备份场景下不可为 0) -
binlog_format推荐用ROW:避免函数、触发器、非确定性语句导致主从/恢复不一致 - 重启 MySQL 后执行
SHOW VARIABLES LIKE 'log_bin';确认返回ON
全量 + binlog 是生产级增量备份的最小可行组合
只靠 binlog 无法从零恢复——它不包含初始结构和数据。所以真实备份策略永远是:一次全量 + 持续归档 binlog。
全量备份推荐用 mysqldump(逻辑)或 percona-xtrabackup(物理),取决于你的引擎和停机容忍度: