7.5 使用binary log 做基於時間點的恢復

kakaxi9521發表於2020-10-21

7.5 Point-in-time Recovery Using the Binary Log

時間點的恢復基於以下規則:

  • 資料庫必須開啟binary logging

log-bin需要再my.cnf檔案中設定

  • 可以使用mysqlbinlog工具將events 轉換為text格式以便於檢視。

mysqlbinlog --no-defaults mysql-bin.000004 | more 

  • 可以使用mysqlbinlog工具去回放binary log 中的events.

mysqlbinlog --no-defaults mysql-bin.000004 | mysql -u root -p

  • 可以使用透過mysqlbinlog 工具去查詢event time 和positions

mysqlbinlog --no-defaults mysql-bin.000004 > tmpfile

vi tmpfile

  • 可以使用用vi編輯後的檔案進行events的回放

mysql -uroot -p < tmpfile

當你的環境中使用的透過GTIDs進行主從複製時,可以使用--skip-gtids 將檔案轉換到檔案中,比如:

mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sql

mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql

mysql -uroot -p -e "source /tmp/dump.sql"


7.5.1 透過Event Times 進行時間點的恢復

      透過指定start 和 end 時間點進行恢復, 在使用mysqlbinlog時指定--start-datetime 和--stop-datetime。比如在10:00 a.m.on April 20,2005這個時間點刪除了一張大表。為了恢復此表資料,可以使用下面的命令:

mysqlbinlog --stop-datetime="2005-04-20 9:59:59"  bin.123456 | mysql -uroot -p

       此命令會恢復--stop-datetime指定時間點的所有資料,如果想繼續恢復10:00 a.m以後的資料可以使用下面的命令:

mysqlbinlog --start-datetime="2005-04-20 10:01:00" bin.123456 | mysql -uroot -p


7.5.2 透過 Events Positions 進行時間點的恢復

       除了透過指定時間進行時間點的恢復,也可以透過指定--start-position和--stop-position來進行時間點的恢復。

a. 恢復到368312 位點

mysqlbinlog --stop-position=368312 bin.123456 | mysql -uroot -p

b. 從368315位點開始恢復

mysqlbinlog --start-position=368315 bin.123456 | mysql -uroot -p


可以閱讀下面連結內容進行mysqlbinlog 工具的學習:

https://www.cnblogs.com/Presley-lpc/p/9619571.html






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2728039/,如需轉載,請註明出處,否則將追究法律責任。

相關文章