MySQL误删库恢复实战
admin
2023-04-16 21:02:01
0

创建测试库、表

create database test;
use test;
create table  leo (id int,name varchar(10));

插入数据

insert into leo values (1,"liufeng");
insert into leo values (2,"zhangsan");
insert into leo values (3,"liufeng");
insert into leo values (4,"zhangsan");
mysql> select * from leo;
+------+----------+
| id   | name     |
+------+----------+
|    1 | liufeng  |
|    2 | zhangsan |
|    3 | liufeng  |
|    4 | zhangsan |
+------+----------+
.......

全备数据库

#!/bin/sh
bak_path=/home/mysql/backup
file_name=bak_$(date +%F)
if  [ ! -e  $bak_path  ];then
 mkdir  -p  $bak_path
fi
 mysqldump -uroot -proot -S /home/mysql/3306/data/mysql.sock -A --single-transaction --master-data=2  >  $bak_path/${file_name}.sql
md5sum $bak_path/${file_name}.sql > $bak_path/${file_name}.flag
find $BakPath  -name "*.sql.gz"  -mtime +7|xargs rm -f

确认备份状态

[root@leo home]# cd mysql/backup/
[root@leo backup]# ll
total 792
-rw-r--r-- 1 root root     72 Jun 28 22:18 bak_2019-06-28.flag
-rw-r--r-- 1 root root 804496 Jun 28 22:18 bak_2019-06-28.sql
[root@leo backup]# more bak_2019-06-28.flag 
db297e95d491ae3b85ed2b5d2496e527  /home/mysql/backup/bak_2019-06-28.sql
[root@leo backup]#  cd ..
[root@leo mysql]# 
[root@leo mysql]# md5sum -c /home/mysql/backup/bak_2019-06-28.flag
/home/mysql/backup/bak_2019-06-28.sql: OK

插入数据

mysql> insert into leo values (5,"liufeng");
Query OK, 1 row affected (0.01 sec)

mysql> insert into leo values (6,"zhangsan");
Query OK, 1 row affected (0.01 sec)

mysql> select * from leo;
+------+----------+
| id   | name     |
+------+----------+
|    1 | liufeng  |
|    2 | zhangsan |
|    3 | liufeng  |
|    4 | zhangsan |
|    5 | liufeng  |
|    6 | zhangsan |
+------+----------+

删除数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| leo                |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)
mysql>  drop database test;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

备份bin—log

[root@leo backup]# cd /home/mysql/3306/data/
[root@leo data]# ll
total 123740
-rw-r-----. 1 mysql mysql       56 Jun 18 00:59 auto.cnf
-rw-r-----  1 mysql mysql      456 Jun 28 17:41 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Jun 29 02:45 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Jun 29 02:45 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Jun 18 00:59 ib_logfile1
-rw-r-----  1 mysql mysql 12582912 Jun 29 02:42 ibtmp1
drwxr-x---. 2 mysql mysql     4096 Jun 25 23:09 mysql
-rw-r-----  1 mysql mysql      177 Jun 25 22:54 mysql-bin.000003
-rw-r-----  1 mysql mysql   815245 Jun 25 23:17 mysql-bin.000004
-rw-r-----  1 mysql mysql      642 Jun 28 17:41 mysql-bin.000005
-rw-r-----  1 mysql mysql     5909 Jun 29 02:45 mysql-bin.000006
-rw-r-----  1 mysql mysql       76 Jun 28 19:36 mysql-bin.index
srwxrwxrwx  1 mysql mysql        0 Jun 28 19:36 mysql.sock
-rw-------  1 mysql mysql        5 Jun 28 19:36 mysql.sock.lock
drwxr-x---. 2 mysql mysql     4096 Jun 18 00:59 performance_schema
-rw-r-----  1 mysql mysql        5 Jun 28 19:36 resourcepool-0559.pid
drwxr-x---. 2 mysql mysql    12288 Jun 18 00:59 sys
[root@leo data]# cp -a mysql-bin.* /home/mysql/backup/
[root@leo data]# ll /home/mysql/backup/
total 1612
-rw-r--r-- 1 root  root      72 Jun 29 02:42 bak_2019-06-29.flag
-rw-r--r-- 1 root  root  804515 Jun 29 02:42 bak_2019-06-29.sql
-rw-r----- 1 mysql mysql    177 Jun 25 22:54 mysql-bin.000003
-rw-r----- 1 mysql mysql 815245 Jun 25 23:17 mysql-bin.000004
-rw-r----- 1 mysql mysql    642 Jun 28 17:41 mysql-bin.000005
-rw-r----- 1 mysql mysql   5909 Jun 29 02:45 mysql-bin.000006
-rw-r----- 1 mysql mysql     76 Jun 28 19:36 mysql-bin.index

恢复步骤
1、停止数据库对外访问,防止数据库因update导致数据破坏
2、由于备份语句中加入--master-data=2,可以记录全备后的binlog对应恢复点

[root@leo data]# cd /home/mysql/backup/
[root@leo backup]# ll
total 1612
-rw-r--r-- 1 root  root      72 Jun 29 02:42 bak_2019-06-29.flag
-rw-r--r-- 1 root  root  804515 Jun 29 02:42 bak_2019-06-29.sql
-rw-r----- 1 mysql mysql    177 Jun 25 22:54 mysql-bin.000003
-rw-r----- 1 mysql mysql 815245 Jun 25 23:17 mysql-bin.000004
-rw-r----- 1 mysql mysql    642 Jun 28 17:41 mysql-bin.000005
-rw-r----- 1 mysql mysql   5909 Jun 29 02:45 mysql-bin.000006
-rw-r----- 1 mysql mysql     76 Jun 28 19:36 mysql-bin.index
[root@leo backup]# sed -n '22p' bak_2019-06-29.sql 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=5181;

3、将binlog转换SQL

[root@leo backup]# mysqlbinlog -d test mysql-bin.000006  --start-position=5181 -r test.sql
[root@leo backup]# cat test.sql 

4、实际环境中后续还有 mysql-bin.000007 .... 需要陆续转换为SQL
5、删除test.sql中drop语句

[root@leo backup]# grep  -w drop test.sql 
drop database test
[root@leo backup]# sed -i '/drop database test/d' test.sql 
[root@leo backup]# grep  -w drop test.sql 

6、全备恢复数据库

[root@leo backup]# mysql -u root -p -S /home/mysql/3306/data/mysql.sock < bak_2019-06-29.sql 
Enter password: 
[root@leo backup]# mysql -u root -p -S /home/mysql/3306/data/mysql.sock -e "select * from test.leo";
Enter password: 
+------+----------+
| id   | name     |
+------+----------+
|    1 | liufeng  |
|    2 | zhangsan |
|    3 | liufeng  |
|    4 | zhangsan |
+------+----------+

7、恢复binlog

[root@leo backup]# mysql -u root -p -S /home/mysql/3306/data/mysql.sock < test.sql
Enter password: 
[root@leo backup]# mysql -u root -p -S /home/mysql/3306/data/mysql.sock -e "select * from test.leo";
Enter password: 
+------+----------+
| id   | name     |
+------+----------+
|    1 | liufeng  |
|    2 | zhangsan |
|    3 | liufeng  |
|    4 | zhangsan |
|    5 | liufeng  |
|    6 | zhangsan |
+------+----------+

8、校验数据,恢复数据库对外访问

相关内容

热门资讯

东部战区发布微视频《这么近那么... 你就在我的舷窗下你就在我的舰艏前伸手可掬起日月潭水迈步可登上阿里山顶东部战区发布微视频《这么近那么美...
重磅消息“皇豪互娱牛牛是不是有... 网上科普关于“皇豪互娱牛牛有没有挂”话题很是火热,小编也是针对皇豪互娱牛牛作*弊开挂的方法以及开挂对...
玩家最新攻略“白金岛字牌集有没... 网上科普关于“白金岛字牌集有没有挂”话题很是火热,小编也是针对白金岛字牌集作*弊开挂的方法以及开挂对...
【第一资讯】“宝宝吃吃吃辅助器... 网上科普关于“宝宝吃吃吃有没有挂”话题很是火热,小编也是针对宝宝吃吃吃作*弊开挂的方法以及开挂对应的...
原创 如... 自从智能手机开始有“AI”这个概念以来,“情境感知”就成为了不少机型最明显能够让用户体会到AI“存在...
有色金属“涨”声一片,板块领跑... 近期,全球资本市场有色金属板块表现活跃,多种金属价格同步上涨,板块整体表现强劲。以白银为例,12月2...
玩家分享攻略“云梦天穹怎么装挂... 家人们!今天小编来为大家解答云梦天穹透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很...
今日重大消息“微乐锄大贰开挂神... 网上科普关于“微乐锄大贰有没有挂”话题很是火热,小编也是针对微乐锄大贰作*弊开挂的方法以及开挂对应的...
今日重大发现“衡阳跑胡子是不是... 网上科普关于“衡阳跑胡子有没有挂”话题很是火热,小编也是针对衡阳跑胡子作*弊开挂的方法以及开挂对应的...
终于明白“新毛豆牛牛有挂吗?”... 网上科普关于“新毛豆牛牛有没有挂”话题很是火热,小编也是针对新毛豆牛牛作*弊开挂的方法以及开挂对应的...