利用binlog來恢復資料庫

2021-09-09 07:30:59 字數 2731 閱讀 7930

開發庫和線上表結構有很多不一樣,分表個數也不同,我需要重新整理保持開發庫和線上一致,之前已經告知開發資料是否允許丟失,開發說資料可以不要了,直接丟掉,等我搞好之後開發告訴我部分資料(ring)是不能刪除的,我暈,只好想辦法來恢復資料了,沒有備份,不過還好有全部的binlog。

1.根據binlog解析出所有ring資料庫的所有sql

[mysql@dev_sns1 log]$mysqlbinlog --no-defaults --database=ring --start-datetime="2005-04-20 9:55:00" --stop-datetim="2009-04-08 08:05:00" /u01/mysql/log/mysql-bin.000005 > /u01/mysql/log/mysql_restore5.sql

[mysql@dev_sns1 log]$ ls -l /u01/mysql/log/mysql_restore5.sql

-rw-r--r--    1 mysql    dba           407 apr  8 15:33 /u01/mysql/log/mysql_restore5.sql

--start-datetime=datetime 從哪個點開始解析

--stop-datetim=datetime   從哪個點停止解析

--database=ring               指定需要解析哪個資料庫,只提取某個資料庫的sql語句

--如果有多個binlog的話需要解析多次,需要解析所有的binlog

2.重新在資料庫中執行

[mysql@dev_sns1 log]$mysql -u root 3.刪除已經恢復的資料,重新恢復一遍

[mysql@dev_sns1 log]$ mysql -u root

welcome to the mysql monitor.  commands end with ; or /g.

your mysql connection id is 7647

server version: 5.0.67-log source distribution

type 'help;' or '/h' for help. type '/c' to clear the buffer.

root@(none) 02:55:41>drop database ring;

query ok, 8 rows affected (0.04 sec)

[mysql@dev_sns1 log]$ mysql -u root -f

恢復成功,有部分資料衝突需要開發自己去處理了。

總的來說,不管是否重要,因為重要性很多時候我們自己是無法評定的,大操作之前一定先做好備份,備份才是王道。

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

開發庫和線上表結構有很多不一樣,分表個數也不同,我需要重新整理保持開發庫和線上一致,之前已經告知開發資料是否允許丟失,開發說資料可以不要了,直接丟掉,等我搞好之後開發告訴我部分資料(ring)是不能刪除的,我暈,只好想辦法來恢復資料了,沒有備份,不過還好有全部的binlog。

1.根據binlog解析出所有ring資料庫的所有sql

[mysql@dev_sns1 log]$mysqlbinlog --no-defaults --database=ring --start-datetime="2005-04-20 9:55:00" --stop-datetim="2009-04-08 08:05:00" /u01/mysql/log/mysql-bin.000005 > /u01/mysql/log/mysql_restore5.sql

[mysql@dev_sns1 log]$ ls -l /u01/mysql/log/mysql_restore5.sql

-rw-r--r--    1 mysql    dba           407 apr  8 15:33 /u01/mysql/log/mysql_restore5.sql

--start-datetime=datetime 從哪個點開始解析

--stop-datetim=datetime   從哪個點停止解析

--database=ring               指定需要解析哪個資料庫,只提取某個資料庫的sql語句

--如果有多個binlog的話需要解析多次,需要解析所有的binlog

2.重新在資料庫中執行

[mysql@dev_sns1 log]$mysql -u root 3.刪除已經恢復的資料,重新恢復一遍

[mysql@dev_sns1 log]$ mysql -u root

welcome to the mysql monitor.  commands end with ; or /g.

your mysql connection id is 7647

server version: 5.0.67-log source distribution

type 'help;' or '/h' for help. type '/c' to clear the buffer.

root@(none) 02:55:41>drop database ring;

query ok, 8 rows affected (0.04 sec)

[mysql@dev_sns1 log]$ mysql -u root -f

恢復成功,有部分資料衝突需要開發自己去處理了。

總的來說,不管是否重要,因為重要性很多時候我們自己是無法評定的,大操作之前一定先做好備份,備份才是王道。

MySQL利用binlog來恢復資料庫

1.根據binlog解析出所有ring資料庫的所有sql mysql localhost mysqlbinlog no defaults database ring start datetime 2005 04 20 9 55 00 stop datetim 2009 04 08 08 05 00 ...

MySQL利用binlog增量恢復資料庫

資料庫中表被誤刪除 恢復方法 首先分析表是否重要 1 重要的情況處理 1 停服務,掛維護頁面,保證資料一致性 2 找乙個新的資料庫做恢復測試,同時對故障庫進行備份 3 恢復前日備份,恢復完畢後 拷貝 binlog過來 4 查詢binlog位置,獲取故障前一刻binlog位置 追binlog 5 啟動...

Mysql通過binlog恢復資料庫

需要開啟binlog日誌 編輯開啟mysql配置檔案my.ini,在 mysqld 區塊設定 新增 log bin mysql bin 然後重啟mysql服務 檢視二進位制日誌是否已開啟 mysql show variables like log log bin的值為no表示已開啟binlog日誌 ...