看到这篇文章的你可能很着急,咱话就不多说了。
一、背景
操作失误,把数据库表全部删除了,然后我先用昨天的数据库备份文件还原到昨天的历史数据。
二、前提
使用mysqlbinlog恢复数据须知:
- 确保你已经开启了
Binlog
。
使用show variables like '%log_bin%';
命令查看是否已开启binlog功能。
如上图所示,你的binlog文件是在/var/lib/mysql/
目录下,以binlog
开头的文件。
三、保护数据
- 关闭业务系统,防止数据继续写入;
四、恢复数据
4.1 查看当前使用的binlog文件
show master status
4.2 执行flush logs
命令,让数据库从新的binlog
文件从新写
flush logs
4.3 恢复
查看/var/lib/mysql/
目录下的binlog文件,发现中间重启过mysql,昨天到今天使用的binlog文件有两个,所以得从两个文件进行恢复。
# 指定开始时间、结束时间
sudo mysqlbinlog /var/lib/mysql/binlog.000018 /var/lib/mysql/binlog.000019 --start-datetime='2021-08-27 09:50:00' --stop-datetime='2021-08-28 15:35:00' | mysql -u root -p --database=xiaofang_cloud -f
注意: 上面指定多个binlog文件的顺序很重要。
参考文章: