Mysql

MySQL 時間點恢復只是一個單一的模式?

  • December 21, 2020

是否可以簡單地恢復單個模式並將其恢復到某個時間點(比如三個小時前)而不恢復整個數據庫?

我可以想到一種冗長的方法,即目前單獨備份每個模式,將數據庫恢復三個小時並將所有其他模式(除了您要回滾的模式)恢復到目前時間。

還有其他方法嗎?還是我沒有正確理解二進制日誌?

您可以使用

對具有數據和時間範圍的所有二進制日誌使用mysqlbinlog實用程序。您必須命名要提取的數據庫:

例如,假設您有以下場景

  • 你有這些二進制日誌
  • mysql-bin.000019
  • mysql-bin.000020
  • mysql-bin.000021
  • mysql-bin.000022
  • 二進制日誌從2013-01-30 09:30:002013-02-04 12:00:00
  • 您有來自2013-02-03 00:00:00( mysqldata-20130203.sql)的完整備份
  • 您想從 2013 年 2 月 3 日下午 2:45 恢復 MyProdDB2013-02-03 14:45:00

#STEP 01) 從二進制日誌中獲取所有數據庫更改

DB=MyProdDB
BEG_DT="2013-02-03 00:00:00"
END_DT="2013-02-03 14:45:00"
BINLOGS="mysql-bin.000019 mysql-bin.000020 mysql-bin.000021 mysql-bin.000022"
mysqlbinlog -d ${DB} --start-datetime="${BEG_DT}" --stop-datetime="${END_DT}" ${BINLOGS} > mysqldata-delta.sql

#STEP 02) 將數據載入到名為的暫存數據庫中MyProdDBStaging

mysql -u... -p... -DMyProdDBStaging < mysqldata-20130203.sql

#STEP 03) 將 Delta 載入到名為的暫存數據庫中MyProdDBStaging

mysql -u... -p... -DMyProdDBStaging < mysqldata-delta.sql

現在,目標數據庫將是MyProdDB2013 年 2 月 3 日下午 2:45 的點和時間實例。

試一試 !!!

引用自:https://dba.stackexchange.com/questions/34086