時間點復原 — 也就是,復原自給定時間點以來所做的資料變更 — 是在還原完整備份,將伺服器回復到進行備份時的狀態之後執行。使用NDB叢集與NDB叢集複製,對NDB叢集表格執行時間點復原,可以使用原生NDB
資料備份(透過在CREATE BACKUP
中發出ndb_mgm用戶端)並還原ndb_binlog_index
表格(從使用mysqldump進行的傾印)。
若要執行NDB叢集的時間點復原,必須遵循此處所示的步驟
使用
START BACKUP
命令在ndb_mgm用戶端中,備份叢集中所有NDB
資料庫(請參閱第 25.6.8 節,「NDB叢集的線上備份」)。在稍後的某個時間點,在還原叢集之前,建立
mysql.ndb_binlog_index
表格的備份。使用mysqldump執行此任務可能是最簡單的。同時備份此時的二進位日誌檔案。此備份應定期更新 — 或許甚至每小時更新 — 取決於您的需求。
(發生災難性故障或錯誤。)
找出最後一個已知良好的備份。
清除資料節點檔案系統(使用ndbd
--initial
或 ndbmtd--initial
)。注意磁碟資料表格空間和日誌檔案也會被
--initial
移除。使用
DROP TABLE
或TRUNCATE TABLE
與mysql.ndb_binlog_index
表格。執行ndb_restore,還原所有資料。執行ndb_restore時,您必須包含
--restore-epoch
選項,以便正確填入ndb_apply_status
表格。(如需更多資訊,請參閱第 25.5.23 節,「ndb_restore — 還原NDB叢集備份」。)從mysqldump的輸出還原
ndb_binlog_index
表格,並在必要時從備份還原二進位日誌檔案。找出最近套用的 epoch — 也就是,
ndb_apply_status
表格中的最大epoch
欄位值 — 作為使用者變數@LATEST_EPOCH
(強調)SELECT @LATEST_EPOCH:=MAX(epoch) FROM mysql.ndb_apply_status;
在
ndb_binlog_index
表格中,找出對應於@LATEST_EPOCH
的最新二進位日誌檔案(@FIRST_FILE
)和此檔案中的位置(Position
欄位值)SELECT Position, @FIRST_FILE:=File FROM mysql.ndb_binlog_index WHERE epoch > @LATEST_EPOCH ORDER BY epoch ASC LIMIT 1;
使用mysqlbinlog,從給定的檔案和位置重播二進位日誌事件,直到故障點。(請參閱第 6.6.9 節,「mysqlbinlog — 處理二進位日誌檔案的工具」。)
另請參閱第 9.5 節,「時間點(增量)復原」,以取得有關二進位日誌、複製和增量復原的更多資訊。