MySQL增量备份依赖binlog记录变更操作,需开启log_bin、设置唯一server_id和推荐ROW格式;流程分position(记录文件名+位置)和GTID(记录事务集合)两种模式;须确保binlog保留时长覆盖全备间隔,禁用手动删除,DDL可能影响恢复,需校验与演练。
MySQL 增量备份不是直接“备份变化的数据”,而是依赖二进制日志(binlog)记录所有数据变更操作,通过保存 binlog 文件或其中的指定位置(position / GTID),在全量备份基础上重放后续操作来还原到某一时刻的状态。
没有 binlog,MySQL 就无法知道“哪些语句执行过”,也就谈不上增量。必须确认以下配置已生效:
/var/lib/mysql/mysql-bin)
er_id 唯一且非 0(主从和 GTID 必需)适用于大多数场景,逻辑清晰、兼容性好:
mysqldump --single-transaction --master-data=2 或 mysqlbackup),备份中会记录当时 binlog 文件名和 position(例如 mysql-bin.000012 + 1984)mysqlbinlog 截取新产生的 binlog 片段:mysqlbinlog --start-position=1984 mysql-bin.000012 > inc_20250501_1000.sql
开启 gtid_mode = ON 后,每个事务有唯一 GTID(如 uuid:1-15),备份时记录当前 SELECT @@global.gtid_executed; 的值:
aaaabbbb-cccc-dddd-eeee-ffffffffffff:1-100)mysqlbinlog --include-gtids='aaaabbbb-cccc-dddd-eeee-ffffffffffff:101-200' 提取对应事务增量备份不是“设好就不管”,几个容易出错的点要盯紧:
PURGE BINARY LOGS 或配置 expire_logs_days,否则 MySQL 元数据会不一致