基于 时间/位置 恢复
最后更新于:2022-04-02 03:56:21
[TOC]
## 基于时间点的恢复
- 如果误删某张表,需要还原到误操作前,并跳过误操作操作,在恢复后面的语句
- 这种恢复叫不完全恢复
```
> mysqlbinlog --stop-date="2017-09-30 9:59:59" /data/mysql/mysql-bin.123456 | mysql -uroot -ppassword
> mysqlbinlog --start-date="2017-09-30 10:01:00" /data/mysql/mysql-bin.123456 | mysql -uroot -ppassword
```
## 基于位置恢复
和基于时间点的恢复类似,但是更精确,因为同一个时间点可能有很多条 sql 语句同时执行
```
> mysqlbinlog --start-date="2017-09-30 9:59:59" --stop-date="2017-09-30 10:01:00" /data/mysql/mysql-bin.123456 > /tmp/mysql_restore.sql
```
- 该命令将在 /tmp 目录创建小的文本文件,
- 查看此文件,知道出错语句前后的位置号,例如前后位置号分别为 368312 和 368315
```
> mysqlbinlog --stop-position="368312" /data/mysql/mysql-bin.123456 | mysql -uroot -ppassword
> mysqlbinlog --start-position="368315" /data/mysql/mysql-bin.123456 | mysql -uroot -ppassword
```
';