天天看點

mysql資料丢失後恢複至最新節點

使用mysqldump 進行增量恢複

模拟,生産環境恢複資料

1.full back  (3 rows)  3pm   前一天的全備份

2,insert 3 rows       5pm   第二天新增資料

3,delete from table    7pm   誤操作

4,insert 3 rows       8pm   不斷新增資料

5,recovery databases    9pm   恢複資料

1,全備份

<code>/mysqldump -uroot -p  db1 &gt; /root/mysqlbackup/t2.sql</code>

2,模拟生成新的二進制日志

<code>/etc/init.d/mysqld restart</code>

<code>mysqladmin -uroot -p123456 </code><code>--flush-log</code>

3,新增資料  

<code>insert</code> <code>into</code> <code>t2 </code><code>values</code> <code>(4,40),(5,50),(6,60);</code>

4,誤操作

<code>delete</code> <code>from</code> <code>t2;</code>

5,不斷更新資料

<code> </code><code>insert</code> <code>into</code> <code>t2 </code><code>values</code> <code>(7,70),(8,80),(9,90);</code>

6,開始恢複

 cp data/mysql-bin.0000002  /back  備份現有二進制日志,防止二次損壞

 mysql -uroot -p db1 &lt; /root/mysqlbackup/t2.sql 全部恢複

7,下面跳過delete 這條記錄,或者删除delete這條語句,恢複其他position的記錄

# at 526

#150512  7:50:58 server id 1  end_log_pos 640 CRC32 0x4f6549a3 Querythread_id=1exec_time=0error_code=0

SET TIMESTAMP=1431388258/*!*/;

insert into t2 values (4,40),(5,50),(6,60)

/*!*/;

# at 640

#150512  7:50:58 server id 1  end_log_pos 671 CRC32 0x253a2239 Xid = 60

COMMIT/*!*/;

# at 671

#150512  7:52:11 server id 1  end_log_pos 748 CRC32 0x7617cce8 Querythread_id=1exec_time=0error_code=0

SET TIMESTAMP=1431388331/*!*/;

BEGIN

# at 748

#150512  7:52:11 server id 1  end_log_pos 834 CRC32 0x112802bc Querythread_id=1exec_time=0error_code=0

delete from t2

# at 834

#150512  7:52:11 server id 1  end_log_pos 865 CRC32 0x8895c353 Xid = 62

# at 865

#150512  7:52:38 server id 1  end_log_pos 942 CRC32 0xa34076dd Querythread_id=1exec_time=0error_code=0

SET TIMESTAMP=1431388358/*!*/;

# at 942

#150512  7:52:38 server id 1  end_log_pos 1056 CRC32 0xa1c9c171 Querythread_id=1exec_time=0error_code=0

insert into t2 values (7,70),(8,80),(9,90)

# at 1056

#150512  7:52:38 server id 1  end_log_pos 1087 CRC32 0x73a98385 Xid = 64

8,開始恢複:

<code>bin/mysqlbinlog </code><code>--start-position=526 --stop-position=640 data/mysql-bin.000004 | mysql -uroot -p</code>

<code>bin/mysqlbinlog </code><code>--start-position=942 --stop-position=1056 data/mysql-bin.000004 | mysql -uroot -p</code>

或者使用第二種恢複方法(删除binlog中的delete)

<code>/bin/mysqlbinlog data/mysql-bin.00002 &gt;bin.sql</code>

<code>mysql -uroot -p &lt;bin.sql</code>

9, 恢複完成後建議在此重新整理bin log。

10,查詢恢複的資料

      本文轉自crazy_charles 51CTO部落格,原文連結:http://blog.51cto.com/douya/1651285,如需轉載請自行聯系原作者

繼續閱讀