MySQL利用binlog來恢復資料庫

2021-09-06 22:24:32 字數 2790 閱讀 4836

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" /u01/mysql/log/mysql-bin.000005 > /u01/mysql/log/mysql_restore5.sql

[mysql@localhost ]$ 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@localhost ]$ mysql -u root  < /u01/mysql/log/mysql_restore5.sql

error 1062 (23000) at line 2559580: duplicate entry 175754263-140 for key 1 --恢復過程中出現主鍵衝突,匯入失敗

3.刪除已經恢復的資料,重新恢復一遍

[mysql@localhost ]$ 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@localhost ]$ mysql -u root -f  < /u01/mysql/log/mysql_restore5.sql   -f引數:忽略錯誤繼續

error 1062 (23000) at line 2559580: duplicate entry 175754263-140 for key 1

error 1062 (23000) at line 2564671: duplicate entry 138 for key 1

error 1062 (23000) at line 2566216: duplicate entry 139 for key 1

error 1062 (23000) at line 2566224: duplicate entry 140 for key 1

error 1062 (23000) at line 2566232: duplicate entry 141 for key 1

error 1062 (23000) at line 2566240: duplicate entry 142 for key 1

error 1062 (23000) at line 2648410: duplicate entry 143 for key 1

error 1062 (23000) at line 2648418: duplicate entry 144 for key 1

error 1062 (23000) at line 2648581: duplicate entry 145 for key 1

error 1062 (23000) at line 2648589: duplicate entry 146 for key 1

error 1062 (23000) at line 2648597: duplicate entry 147 for key 1

error 1062 (23000) at line 2648605: duplicate entry 148 for key 1

error 1062 (23000) at line 2649279: duplicate entry 149 for key 1

error 1062 (23000) at line 2649287: duplicate entry 150 for key 1

error 1062 (23000) at line 2649295: duplicate entry 151 for key 1

error 1062 (23000) at line 2649303: duplicate entry 152 for key 1

error 1062 (23000) at line 2649311: duplicate entry 153 for key 1

error 1062 (23000) at line 2649319: duplicate entry 154 for key 1

error 1062 (23000) at line 2649327: duplicate entry 155 for key 1

error 1062 (23000) at line 2649335: duplicate entry 156 for key 1 

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

利用binlog來恢復資料庫

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

mysql利用mysqldump備份和恢復

mysqldump使用語法 mysqldump u 使用者 h host p 密碼 dbname table 路徑 遠端備份單庫例子 mysqldump uroot pabc123456 h192.168.1.101 zabbix gzip mysql data back zabbix users....

Mysql利用bin log進行資料恢復

mysql利用bin log進行資料恢復 線上的資料都很重要,但也會難免有時候有誤刪除的操作,這時候要在第一時間進行資料恢復。首先,要確保mysql開啟了binlog日誌功能,在 etc my.cnf檔案裡的 mysqld 區塊新增 log bin mysql bin。然後重啟mysql服務。將備份...