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文件,就可以恢復到完整的數據。
三、實例說明

在/etc/my.cnf文件裏的[mysqld]區塊添加:
log-bin=mysql-bin
然後重啓mysql服務
(1)建庫建表
mysql> create database ops;
Query OK, 1 row affected (0.11 sec)
​
mysql> use ops 
Database changed
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.12 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    |                |
+-------+----------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
​
mysql> 
插入數據
mysql> insert into customers values(1,"wangbo",24);
Query OK, 1 row affected (0.03 sec)
​
mysql> insert into customers values(2,"xiaoli",25);
Query OK, 1 row affected (0.01 sec)
mysql> insert into customers values(3,"lida",26);
Query OK, 1 row affected (0.01 sec)
mysql> select * from customers;
+----+--------+-----+
| id | name  | age |
+----+--------+-----+
|  1 | wangbo |  24 |
|  2 | xiaoli |  25 |
|  3 | lida  |  26 |
+----+--------+-----+
3 rows in set (0.00 sec)
mysql> 
(2)進行全備
[root@db02 opt]# mysqldump -B -F -A  --master-data=2 >/opt/ops_$(date +%F).sql
(3)在插入數據
mysql> insert into customers values(4,"bapbao",20);
Query OK, 1 row affected (0.00 sec)
​
mysql> insert into customers values(5,"paoap",20);
Query OK, 1 row affected (0.00 sec)
​
mysql> insert into customers values(6,"ppoiu",18);
Query OK, 1 row affected (0.01 sec)
​
mysql> select * from customers;
+----+--------+-----+
| id | name  | age |
+----+--------+-----+
|  1 | wangbo |  24 |
|  2 | xiaoli |  25 |
|  3 | lida  |  26 |
|  4 | bapbao |  20 |
|  5 | paoap  |  20 |
|  6 | ppoiu  |  18 |
+----+--------+-----+
6 rows in set (0.00 sec)
​
mysql> 
(4)刪除數據庫
mysql> drop database ops;
Query OK, 1 row affected (0.10 sec)
(5)恢復數據庫
mysql> source /opt/ops_2017-12-04.sql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oldboy             |
| ops                |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)
mysql> select * from ops.customers;
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | wangbo |  24 |
|  2 | xiaoli |  25 |
|  3 | lida   |  26 |
+----+--------+-----+
3 rows in set (0.00 sec)
mysql> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章