mysql恢复误删的表数据,误修改的数据
恢复条件mysql启用了binlog
1、查看是否启用binlog
登录mysql
mysql -u root -p
在mysql命令行下
mysql> SHOW VARIABLES LIKE '%log_bin%';
其中log_bin项目为on已开启。
2、如果为开启
找到my.cnf(window是win.ini)
find / -name my.cnf
在文件里加入
log_bin=binlog
binlog_format=ROW
保存退出。
3、查看binlog啥情况
mysqlbinlog --start-datetime='2024-8-29 3:04' mysqlbinlog.000002 > r.sql
截止时间
mysqlbinlog --stop-datetime='2024-8-29 3:04' mysqlbinlog.000002 > r.sql
4、恢复
mysqlbinlog --start-datetime="2024-08-29 3:54:00" --stop-datetime="2024-8-29 3:55:00" /var/lib/mysql/mysqlbinlog.000002 | mysql -uroot -p 【你的数据库名】;
4.1按区间恢复
查看r.sql里,有at xxx,的数字位置,是区间数字,具体到某个操作的恢复。
mysqlbinlog --no-defaults /var/lib/mysql/mysql_bin.000002 --start-position=232 --stop-position=2220 | mysql -h127.0.0.1 -P3306 -uroot -p123456
整套搞下来,感觉还是挺可怕的,都是数据覆盖。恢复前要习惯性备份个当前版本的数据库或者当前表。
数据库设计的时候在界面层操作都是逻辑删除的好。