Mysql
MySQL 時間點恢復只是一個單一的模式?
是否可以簡單地恢復單個模式並將其恢復到某個時間點(比如三個小時前)而不恢復整個數據庫?
我可以想到一種冗長的方法,即目前單獨備份每個模式,將數據庫恢復三個小時並將所有其他模式(除了您要回滾的模式)恢復到目前時間。
還有其他方法嗎?還是我沒有正確理解二進制日誌?
您可以使用
對具有數據和時間範圍的所有二進制日誌使用mysqlbinlog實用程序。您必須命名要提取的數據庫:
例如,假設您有以下場景
- 你有這些二進制日誌
- mysql-bin.000019
- mysql-bin.000020
- mysql-bin.000021
- mysql-bin.000022
- 二進制日誌從
2013-01-30 09:30:00
到2013-02-04 12:00:00
- 您有來自
2013-02-03 00:00:00
(mysqldata-20130203.sql
)的完整備份- 您想從 2013 年 2 月 3 日下午 2:45 恢復 MyProdDB
2013-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
現在,目標數據庫將是
MyProdDB
2013 年 2 月 3 日下午 2:45 的點和時間實例。試一試 !!!