不积跬步,无以至千里;不积小流,无以成江海。

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;
posted @ 2021-07-22 13:11  |是吴啊|  阅读(213)  评论(0编辑  收藏  举报