中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何回復binlog二進制日志的MySQL

發布時間:2020-04-22 17:11:28 來源:億速云 閱讀:249 作者:三月 欄目:數據庫

下文內容主要給大家帶來如何回復binlog二進制日志的MySQL,所講到的知識,與書籍不同,都是億速云專業技術人員在與用戶接觸過程中,總結出來的,具有一定的經驗分享價值,希望給廣大讀者帶來幫助。

總的操作流程:

step0、關掉數據庫的對外訪問【防止用戶操作繼續寫入這個庫】

step1、mysqlbinlog 導出相關時間段數據庫的二進制日志

step2、編輯today.sql找到誤操作的那幾條數據,刪除并保存。

step3、執行全備份恢復 mysql -e 'source /root/backup.sql;'

step4、用二進制日志恢復今天的修改  mysql -e 'source /root/today.sql;'

step5、登錄mysql,驗證數據是否回來了。

如何回復binlog二進制日志的MySQL

原始數據庫某表的內容如下:

MariaDB [hellodb]> select * from students;

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

| StuID | Name          | Age | Gender | ClassID | TeacherID |

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

|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |

|     2 | Shi Potian    |  22 | M      |       1 |         7 |

|     3 | Xie Yanke     |  53 | M      |       2 |        16 |

|     4 | Ding Dian     |  32 | M      |       4 |         4 |

|     5 | Yu Yutong     |  26 | M      |       3 |         1 |

|     6 | Shi Qing      |  46 | M      |       5 |      NULL |

|     7 | Xi Ren        |  19 | F      |       3 |      NULL |

|     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |

|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |

|    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |

|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |

|    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |

|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |

|    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |

|    15 | Duan Yu       |  19 | M      |       4 |      NULL |

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

備份了下數據,備份為backup.sql,模擬當做前一天的全備份文件。


然后隨便進行了一些操作,如下:

INSERT INTO students VALUES(30,'lee',21,'M',2,1);
DELETE FROM students where `StuID`=10;
update students set age=10 where `StuID`=1;

執行后效果如下:

MariaDB [hellodb]> select * from students;

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

| StuID | Name          | Age | Gender | ClassID | TeacherID |

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

|     1 | Shi Zhongyu   |  10 | M      |       2 |         3 |

|     2 | Shi Potian    |  22 | M      |       1 |         7 |

|     3 | Xie Yanke     |  53 | M      |       2 |        16 |

|     4 | Ding Dian     |  32 | M      |       4 |         4 |

|     5 | Yu Yutong     |  26 | M      |       3 |         1 |

|     6 | Shi Qing      |  46 | M      |       5 |      NULL |

|     7 | Xi Ren        |  19 | F      |       3 |      NULL |

|     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |

|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |

|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |

|    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |

|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |

|    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |

|    15 | Duan Yu       |  19 | M      |       4 |      NULL |

|    30 | lee           |  21 | M      |       2 |         1 |

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


假如突然DBA發現剛才的DELETE不應該執行,必需要恢復這條數據。


step0、這時候,首先,我們要關掉數據庫對外訪問的權限,防止有用戶寫入數據,干擾恢復操作。

(可以修改前端的web連接數據庫的文件,將其改到其它從節點,雖然用戶無法寫,但最起碼比網站無法訪問要強些)


step1、先提取出誤操作這段時間的二進制日志,取名為today.sql,如下:

mysqlbinlog --start-datetime='2016-07-12 23:51:48' --stop-datetime='2016-07-12 23:53:00' \
/usr/local/mariadb/var/mysql-bin.000033 > /root/today.sql


step2、編輯這個today.sql,找到剛才的那條DELETE操作,剔除DELETE語句,保存退出。


step3、用全備份backup.sql恢復數據:

mysql -e 'source backup.sql;'

恢復完的效果如下:

MariaDB [hellodb]> select * from students;

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

| StuID | Name          | Age | Gender | ClassID | TeacherID |

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

|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |

|     2 | Shi Potian    |  22 | M      |       1 |         7 |

|     3 | Xie Yanke     |  53 | M      |       2 |        16 |

|     4 | Ding Dian     |  32 | M      |       4 |         4 |

|     5 | Yu Yutong     |  26 | M      |       3 |         1 |

|     6 | Shi Qing      |  46 | M      |       5 |      NULL |

|     7 | Xi Ren        |  19 | F      |       3 |      NULL |

|     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |

|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |

|    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |

|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |

|    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |

|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |

|    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |

|    15 | Duan Yu       |  19 | M      |       4 |      NULL |

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

15 rows in set (0.00 sec)

可以看到第一天數據又恢復了最原始的狀態,第10條數據又恢復回來了,但是INSERT的那條數據卻沒有了,因此我們還要使用二進制日志繼續恢復。



step4、繼續用二進制日志恢復

mysql -e 'source today.sql;'


step5、查看恢復后的結果

恢復完的效果如下:

MariaDB [hellodb]> select * from students;

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

| StuID | Name          | Age | Gender | ClassID | TeacherID |

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

|     1 | Shi Zhongyu   |  10 | M      |       2 |         3 |

|     2 | Shi Potian    |  22 | M      |       1 |         7 |

|     3 | Xie Yanke     |  53 | M      |       2 |        16 |

|     4 | Ding Dian     |  32 | M      |       4 |         4 |

|     5 | Yu Yutong     |  26 | M      |       3 |         1 |

|     6 | Shi Qing      |  46 | M      |       5 |      NULL |

|     7 | Xi Ren        |  19 | F      |       3 |      NULL |

|     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |

|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |

|    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |

|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |

|    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |

|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |

|    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |

|    15 | Duan Yu       |  19 | M      |       4 |      NULL |

|    30 | lee           |  21 | M      |       2 |         1 |

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

16 rows in set (0.00 sec)

可以看到,第一條數據的Age已經改為我們要求的值了,INSERT的最后一條數據也恢復回來了, 誤刪除的StuID為10的數據也恢復了。

至此,我們的恢復就完成了。

對于以上關于如何回復binlog二進制日志的MySQL,如果大家還有更多需要了解的可以持續關注我們億速云的行業推新,如需獲取專業解答,可在官網聯系售前售后的,希望該文章可給大家帶來一定的知識更新。

向AI問一下細節

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

AI

电白县| 阿图什市| 易门县| 永丰县| 嘉鱼县| 靖安县| 彭泽县| 连南| 江油市| 东至县| 温泉县| 遂宁市| 绥芬河市| 岫岩| 九江市| 巴青县| 历史| 呼伦贝尔市| 宁陕县| 河北区| 宜春市| 邹平县| 林州市| 来宾市| 金川县| 酒泉市| 葵青区| 凤城市| 靖州| 慈利县| 浏阳市| 齐齐哈尔市| 石狮市| 嵊泗县| 晋城| 旬邑县| 桐柏县| 通州市| 博乐市| 漯河市| 错那县|