条件
开启了binlog,如果是OFF本文的做法没用哦。
步骤
- 查询文件位置
show variables like 'log_%';
- 查找正在写入的binlog文件
show master status
- 找到误操作的时间点
mysqlbinlog命令设计的参数:
参数 | 含义 |
---|---|
–start-datetime | 开始时间 |
–stop-datetime | 结束时间 |
–database | 指定需要恢复的数据库名称 |
通过将时间段内的binlog转为SQL,在SQL文件中查找误操作的时间
mysqlbinlog --no-defaults --start-datetime="2021-08-05 17:30:00" --stop-datetime="2021-08-05 18:20:00" --database="test" mysql-bin.000001>>temp.sql
- binlog转SQL
指定截止时间(误操作的时间点)和数据库,将binlog转SQL
mysqlbinlog --no-defaults --stop-datetime="2021-08-05 18:29:00" --database="test" mysql-bin.000001>>temp.sql
- 恢复数据
进入mysql命令行
mysql -uroot -p
执行SQL文件
source temp.sql
完成!
题外话-如何开启log_bin
修改my.conf文件
[mysqld]
server-id = 1
log_bin = mysql-bin
改完配置重启mysql
systemctl restart mysqld