利用binlog來恢複資料庫

來源:互聯網
上載者:User

http://bbs.kaspersky.com.cn/thread-287149-1-1.html

開發庫和線上表結構有很多不一樣,分表個數也不同,我需要重新整理保持開發庫和線上一致,之前已經告知開發資料是否允許丟失,開發說資料可以不要了,直接丟掉,等我搞好之後開發告訴我部分資料(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 <mysql_restore5.sql
ERROR 1062 (23000) at line 2559580: Duplicate entry 175754263-140 for key 1 --恢複過程中出現主鍵衝突,匯入失敗
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_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
 
恢複成功,有部分資料衝突需要開發自己去處理了。
總的來說,不管是否重要,因為重要性很多時候我們自己是無法評定的,大操作之前一定先做好備份,備份才是王道。


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.