時間點還原,亦即還原自指定時間點以來所做的資料變更,會在還原完整備份以將伺服器恢復至建立備份時的狀態後執行。使用 NDB Cluster 和 NDB Cluster 複製對 NDB Cluster 資料表執行時間點還原,可透過原生 NDB
資料備份(透過在 ndb_mgm 用戶端中發出 CREATE BACKUP
來取得)並還原 ndb_binlog_index
資料表(從使用 mysqldump 建立的傾印中取得)來完成。
若要對 NDB Cluster 執行時間點還原,必須遵循此處顯示的步驟
使用 ndb_mgm 用戶端中的
START BACKUP
命令,備份叢集中所有的NDB
資料庫(請參閱 第 25.6.8 節,〈NDB Cluster 的線上備份〉)。稍後,在還原叢集之前,備份
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 Cluster 備份〉。)從 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 節,〈時間點(增量)還原〉,以取得有關二進制日誌、複製和增量還原的更多資訊。