mysql数据库误删如何恢复详解

  

在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!
然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办? ? ?

下面,就mysql数据库误删除后的恢复方案进行说明。

一、工作场景
(1) mysql数据库每晚12:00自动完全备份。
(2)某天早上上班,9点的时候,一同事犯晕掉了一个数据库!
(3)需要紧急恢复!可利用备份的数据文件以及增量的binlog文件进行数据恢复。

二、数据恢复思路
(1)利用全备的sql文件中记录的修改主语句,binlog文件及其位置点信息,找出binlog文件中增量的那部分。
(2)用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中下降的语句。
(3)通过全备文件和增量binlog文件的导出sql文件,就可以恢复到完整的数据。

三,实例说明

 mysql数据库误删如何恢复详解

首先,要确保mysql开启了binlog日志功能文
在/etc/my . cnf中所做件里的(mysqld)区块添加:
log-bin=mysql-bin
然后重启mysql服务

(1)在运维库下创建一张表客户

mysql>用行动;
mysql>创建表的客户(
→id int not null auto_increment,
→名字char(20)不是null,
→年龄int不是null,
→主键(id)
→)引擎=InnoDB。
查询好,0行影响(0.09秒)

mysql>显示表;
+ - - - - - - - - - - - - - - - - - - +
| Tables_in_ops |
+ - - - - - - - - - - - - - - - - - - +
|客户|
+ - - - - - - - - - - - - - - - - - - +
1行组(0.00秒)

mysql>desc顾客;
+ - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| |字段类型额外违约零关键| | | | |
+ - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| | int id (11) | | PRI零| | auto_increment |
| |名称没有char(20) | | |零| |
| |年龄int(11) | | |零| |
+ - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
3行组(0.02秒)

mysql>插入客户值(1,“wangbo",“24”);
查询好了,1行影响(0.06秒)

mysql>插入客户值(2,“guohui",“22”);
查询好了,1行影响(0.06秒)

mysql>插入客户值(3“zhangheng",“27“);
查询好了,1行影响(0.09秒)

mysql>select * from顾客;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 1 | wangbo | 24 |
| 2 | guohui | 22 |
| 3 | zhangheng | | 27日
+——+ + - - - - - - - - - - - - - - - - - - - - +
3行组(0.00秒)

(2)现在进行全备份
[root@vm - 002 ~] #, mysqldump -uroot - p - b - F - r - x——主数据=https://www.yisu.com/zixun/2行动| gzip>/opt/备份/ops_美元(日期+ % F) . sql。广州
输入密码:
[root@vm - 002 ~ # ls/opt/备份/
ops_2016 - 09 - 25. - sql。广州

<人力资源/>

参数说明:
- b:指定数据库
- f:刷新日志
- r:备份存储过程等
- x:锁表
——主数据:在备份语句里添加修改主语句以及binlog文件及位置点信息

(3)再次插入数据
mysql>插入客户值(4,“liupeng",“21”);
查询好了,1行影响(0.06秒)

mysql>插入客户值(5“xiaoda",“31”);
查询好了,1行影响(0.07秒)

mysql>插入客户值(6,“fuaiai",“26”);
查询好了,1行影响(0.06秒)

mysql>select * from顾客;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 1 | wangbo | 24 |
| 2 | guohui | 22 |
| 3 | zhangheng | | 27日
| 4 | liupeng | 21 |
| 5 | xiaoda | | 31日
| 6 | fuaiai | 26 |
+——+ + - - - - - - - - - - - - - - - - - - - - +
6行组(0.00秒)

(4)此时误操作,删除了测试数据库
mysql>删除数据库运维;
查询好了,1行受影响(0.04秒)

此时,全备之后到误操作时刻之间,用户写入的数据在binlog中,需要恢复出来!

(5)查看全备之后新增的binlog文件
[root@vm - 002 ~] # cd/opt/备份/
(root@vm - 002备份)# ls
ops_2016 - 09 - 25. - sql。广州
(root@vm - 002备份)# gzip - d ops_2016 - 09 - 25. - sql。广州
(root@vm - 002备份)# ls
ops_2016-09-25。sql
(root@vm - 002备份)# grep ops_2016-09-25变化。sql
——修改主MASTER_LOG_FILE=& # 39; mysql-bin.000002& # 39;, MASTER_LOG_POS=106;

mysql数据库误删如何恢复详解