MySQL还原数据到任意时间点
实际项目中我们已经做了每日定时备份,这可以还原数据到备份时的状态。但是如果我们想要还原数据到任意两次备份中间的任意时间点,单纯使用备份文件就无法做到了,这需要借助mysql的binlog。
还原数据到任意时间点的主要思路:
1、通过备份文件还原数据
2、从binlog中筛选时间段内的日志,在新还原的数据上重放日志
操作:
1、还原备份文件(略)
2、筛选binlog时间段内日志并还原,示例:
#查看当前的binlog文件名 show master status; #时段内日志筛选 mysqlbinlog --no-defaults --start-datetime='2022-02-21 23:30:00' --stop-datetime='2022-02-22 14:48:17' /datadir/mysql-bin.000020 > /tmp/binlog.sql #还原 source /tmp/binlog.sql
以上命令,从binlog中获取了 2月21日23点30分 到 2月22日14点48分17秒之间 所有在数据库上执行的操作,并将其在目标库上重放。
(完毕)