MySQL数据库误删除后如何恢复?数据库

来源:互联网 / 作者:SKY / 2018-04-28 18:04 / 点击:
在日常运维工作中,对于数据库的备份是至关重要的!数据库对于网站的重要性使得我们对 MySQL 数据库的管理不容有失!然而是人总难免会犯错误,说不定哪天大脑短

MySQL数据库误删除后如何恢复?

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

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

一、工作场景

(1)MySQL数据库每晚12:00自动完全备份。

(2)某天早上上班,9点的时候,一同事犯晕drop了一个数据库!

(3)需要紧急恢复!可利用备份的数据文件以及增量的binlog文件进行数据恢复。

二、数据恢复思路

(1)利用全备的sql文件中记录的CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件中增量的那部分。

(2)用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中的drop语句。

(3)通过全备文件和增量binlog文件的导出sql文件,就可以恢复到完整的数据。

三、实例说明

首先,要确保mysql开启了binlog日志功能。在/etc/my.cnf文件里的[mysqld]区块添加:

log-bin=mysql-bin 

然后重启mysql服务

(1)在ops库下创建一张表customers

mysql> use ops;  

mysql> create table customers(  

-> id int not null auto_increment,  

-> name char(20) not null 

-> age int not null 

-> primary key(id)  

-> )engine=InnoDB;  

Query OK, 0 rows affected (0.09 sec)   

 

mysql> show tables;  

+---------------+  

| Tables_in_ops |  

+---------------+  

| customers |  

+---------------+  

1 row in set (0.00 sec)   

 

mysql> desc customers;  

+-------+----------+------+-----+---------+----------------+  

| Field | Type | Null | Key | Default | Extra | 

 +-------+----------+------+-----+---------+----------------+  

| id | int(11) | NO | PRI | NULL | auto_increment |  

name | char(20) | NO | | NULL | |  

| age | int(11) | NO | | NULL | | 

+-------+----------+------+-----+---------+----------------+  

rows in set (0.02 sec)   

 

mysql> insert into customers values(1,"wangbo","24");  

Query OK, 1 row affected (0.06 sec)   

 

mysql> insert into customers values(2,"guohui","22");  

Query OK, 1 row affected (0.06 sec)   

 

阅读延展

1
3