您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql如何找回误删除数据

2026/3/17 5:48:27发布10次查看
mysql找回误删除数据的方法:首先找到binlog中错误的语句;然后恢复binlog日志;最后恢复到数据库,代码为【# mysql -uroot -p -f ids < data.sql】。
mysql找回误删除数据的方法:
1、找到binlog
恢复数据的前提是必须开启mysql的binlog日志,如果binlog日志没开启,请忽略此篇文档。binlog日志是否开启可以查看mysql配置文件。日志位置一般在/var/lib/mysql目录或者编译安装的date目录下。也可登录mysql用命令查看。
# cat /etc/my.cnflog_bin=mysql-bin# mysql -uroot -penter password:mysql> show variables like'log_bin%';+---------------------------------+--------------------------------------------------+| variable_name | value |+---------------------------------+--------------------------------------------------+| log_bin | on || log_bin_basename | /home/programs/mysql-5.6.26/data/mysql-bin || log_bin_index | /home/programs/mysql-5.6.26/data/mysql-bin.index || log_bin_trust_function_creators | off || log_bin_use_v1_row_events | off |+---------------------------------+--------------------------------------------------+5 rows in set (0.00 sec)# ll /home/programs/mysql-5.6.26/data/mysql-bin*-rw-rw---- 1 mysql mysql 343629748 oct 13 22:09 /home/programs/mysql-5.6.26/data/mysql-bin.000001-rw-rw---- 1 mysql mysql 19 sep 23 17:11 /home/programs/mysql-5.6.26/data/mysql-bin.index
如果有多个binlog日志也可以在mysql命令行下查看当前binlog、切割binlog日志。切割完成binlog再次查看就会看到新的日志写入到新的binlog文件中。
mysql> show master status;+------------------+-----------+--------------+------------------+-------------------+| file | position | binlog_do_db | binlog_ignore_db | executed_gtid_set |+------------------+-----------+--------------+------------------+-------------------+| mysql-bin.000001 | 343629748 | | | |+------------------+-----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> flush logs;query ok, 0 rows affected (0.01 sec)
2、找到binlog中错误的语句
可以binlog日志中找到错误语句执行的时间点,分别恢复错误语句前后的binlog日志为sql。也可以跳过此步,直接恢复整个binlog日志为sql,然后打开sql文件,删除错误语句。
# sudo mysqlbinlog --base64-output=decode-rows -v -d ids mysql-bin.000001 | grep --ignore-case -a3 -b4 '错误的sql语句'
3、恢复binlog日志
通过mysqlbinlog命令直接恢复binlog日志为sql脚本,可以指定开始和结束时间。如果从上次备份(建议备份的同时刷新binlog日志)截至到恢复时间产生多个binlog日志,按从小到大的顺序分别导出成sql再顺序导入到数据库。
# sudo mysqlbinlog --base64-output=decode-rows -v -d ids --start-datetime '2016-10-11 15:22:53' mysql-bin.000001 > /home/stack/data.sql
上面命令中用-d ids指定要恢复数据库,如果要恢复表级别的数据,导出成sql后再进行过滤grep即可。
# more data.sql | grep --ignore-case -e 'insert|update|delete' | grep table
4、恢复到数据库
恢复数据时,可能会有重复数据的报错,建议用-f参数忽略。
# mysql -uroot -p -f ids < data.sql
更多相关免费学习推荐:mysql教程(视频)
以上就是mysql如何找回误删除数据的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product