主题
PITR 时间点恢复
1. 什么是 PITR(Point-In-Time Recovery)
PITR 指通过恢复完整备份加上应用指定时间段的二进制日志,实现将数据库恢复到某个具体时间点的技术,常用于恢复误操作或数据损坏。
2. PITR 基本步骤
2.1 准备工作
- 定期使用 mariabackup 备份数据。
- 保留 MariaDB 的二进制日志(binlog),确保能覆盖恢复时间段。
2.2 恢复备份
停止 MariaDB,准备并恢复最近一次完整备份:
bash
systemctl stop mariadb
mariabackup --prepare --target-dir=/path/to/backup
mariabackup --copy-back --target-dir=/path/to/backup
chown -R mysql:mysql /var/lib/mysql
2.3 启动 MariaDB 并应用二进制日志
启动数据库,但先不要对外开放:
bash
systemctl start mariadb
使用 mysqlbinlog
工具从二进制日志中导出指定时间点之前的日志:
bash
mysqlbinlog --start-datetime="2025-05-18 10:00:00" --stop-datetime="2025-05-18 12:30:00" /var/lib/mysql/binlog.[数字] > /tmp/binlog.sql
根据需要调整开始和结束时间,导出的 SQL 文件包含了这段时间内的所有事务。
2.4 导入二进制日志
将导出的日志导入 MariaDB,完成时间点恢复:
bash
mysql -u root -p < /tmp/binlog.sql
导入完成后,数据库即恢复到指定时间点。
3. 注意事项
- 备份和 binlog 文件路径及命名根据实际情况调整。
- 保证备份和二进制日志的完整性,避免数据缺失。
- 恢复前请在测试环境确认流程,防止误操作导致数据丢失。
PITR 技术是保障数据库数据安全的重要手段,能灵活恢复到任意时间点,适合关键业务场景。