mysql误删除恢复
mysql误删除恢复
一、首先确定数据库是否开启binlog日志
mysql> show variables like '%log_bin%';
+---------------------------------+---------------------------------------+
| Variable_name | Value |
+---------------------------------+---------------------------------------+
| log_bin | ON |
| log_bin_basename | /home/mysql/mysql/lib/mysql-bin |
| log_bin_index | /home/mysql/mysql/lib/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+---------------------------------------+
6 rows in set (0.00 sec)
二、全库备份恢复单个库的数据流程:
2.1、从全备份文件中将需要的库的建表语句和INSERT数据拿出来
sed -n '/^-- Current Database: `库名`/,/^-- Current Database: `/p' 全备SQL > 库.sql
2.2、导入库中
mysql -uroot -p 库名 <库.sql
2.3、检查数据
三、全库备份恢复单个表的数据流程:
3.1、从全备份中提取出该表的建表语句
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `表`/!d;q' 全备SQL > 表.sql
3.2、提取该表的insert into语句
grep -i 'INSERT INTO `表`' 全备SQL >>表.sql
3.3、导入到对应的库中
mysql 库名 < 表.sql
3.4、检查数据
四、根据mysqlbinlog恢复备份之后的数据
4.1、查看当前binlog
show master status;
4.2、把binlog转移
/*这个时候要将当前的binlog日志拷贝到其他目录,以免后续操作对binlog日志产生影响*/
cp /var/lib/mysql/mysql-bin.000001 /home
4.3、把binlog转换为sql文件
/*执行命令*/ 转换binlog日志为sql
mysqlbinlog -d 库名 mysql-bin.000001 >001bin.sql #-d指定库
4.4、编辑001bin.sql将里面的误操作命令(DROP命令)全部删除
接下来恢复备份之后被删除的数据
mysql -uroot -p 库名 < 001bin.sql
遇到报错问题
编辑001bin.sql文件,将报错信息中提示的某行以下文件全部删除
然后重新导入
五、完成
六、按时间导出binlog
mysqlbinlog --no-defaults --start-datetime="2021-08-11 14:30:00" --stop-datetime="2021-08-11 15:42:00" mysql-bin.000377 >AA.sql
七、binlog查看原生语句方法
配置文件修改,需重启
[mysqld]
bingo_rows_query_log_events=1
在线修改
set binlog_rows_query_log_events=1;
---------是故无冥冥之志者----------
---------无昭昭之明----------
---------无惛惛之事者----------
---------无赫赫之功----------
本文来自博客园,作者:|是吴啊|,转载请注明原文链接:https://www.cnblogs.com/wuguofeng/p/15043611.html