溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL實現基于時間點的恢復

發布時間:2020-05-19 15:05:42 來源:網絡 閱讀:5729 作者:huningfei 欄目:數據庫

前期說明:我每天指定了數據庫凌晨1點做全備,這天有人一不小心,刪除了某個數據庫里面的一個表,需要恢復,怎么弄? 


參考 :http://blog.csdn.net/zhaoyangjian724/article/details/48715321


1  確認log_bin是否打開 

mysql> show global variables like 'log_bin'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| log_bin       | ON    | 
+---------------+-------+ 
1 row in set (0.00 sec)

 

如果沒有開啟在配置文件里my.cnf,添加

[mysqld]

log-bin=mysql-bin

2  在test庫里面新建一個表upl

use test;
create table upl;
插入數據
insert into upl values (1,'tom'),(2,'mary'),(3,'bean');
查看數據
mysql> select * from upl;
+------+------+
| id   | user |
+------+------+
|    1 | tom  |
|    2 | mary |
|    3 | bean

3 在時間點a備份數據庫test

mysqldump -uroot -p --databases test > /data/test.sql


4 時間點b再次登錄數據庫,創建表test.t2

 mysql> create table t2 (a int); 
Query OK, 0 rows affected (0.00 sec) 
mysql> insert into t2 values(10); 
Query OK, 1 row affected (0.02 sec) 
mysql> commit; 
Query OK, 0 rows affected (0.00 sec) 
mysql> select * from t2; 
+------+ 
| a    | 
+------+ 
|   10 | 
+------+ 
1 row in set (0.00 sec)

5 在時間點c刪除upl,t2

drop table upl;

drop table t2;


6 要求恢復到時間點b (upl和t2同時存在)

先恢復全庫  mysql -uroot -p < /data/test.sql

登錄mysql發現upl表已經存在了

挖掘log-bin日志  mysqlbinlog --start-datetime='2016-10-21 14:46:10' --stop-datetime='2016-10-21 14:50:35'  mysql-bin.000001 > recovery.sql


說明:這兩個時間點只能取大概的時間,不能確定精確的時間,可以寫上面數據庫備份完的那個時間,結束時間就寫刪除某個表的時間(大概) 這個mysql-bin.000001 日志文件選擇最新的那個(距離刪除時間最近的)

然后再把這個recovery.sql倒入到數據庫里

mysql -uroot -p < recovery.sql

再次登錄mysql數據庫,發現t2也已經存在了,到此全部恢復完成!


 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女