Backup

執行未啟用日誌的副本集時是否需要執行 db.fsyncLock()

  • April 7, 2018

我在 3 個 EC2 實例上執行帶有 WiredTiger 的 MongoDB 3.2.9。使用彈性塊儲存快照備份數據庫卷時,db.fsyncLock()在執行所有節點都在未啟用日誌的情況下執行的 3 節點副本集時是否需要執行?此外,作為參考,我映射到每個 EC2 伺服器上每個實例storage.dbPath的專用 EBS 卷。日誌也有單獨的專用卷。/data``mongod

我正在研究以下文件以供參考,但尚不清楚這些步驟如何從單實例部署映射到副本集部署: https ://docs.mongodb.com/ecosystem/tutorial/backup-and-restore-mongodb -on-amazon-ec2

如果我確實需要執行db.fsyncLock(),鎖定是否適用於所有 EC2 伺服器上的所有實例?文件說它鎖定了“整個”mongod實例,但我不清楚這種情況下的實例是指單個 EC2 伺服器上的實例,還是適用於分佈在所有 EC2 伺服器上的副本集中的所有實例(在我的例子中是 3 個 EC2 伺服器)。

是的,要獲得一致的備份(未啟用日誌時),您需要 db.synclock 您的 mongod。您僅在從中進行備份的那個節點上使用同步鎖(並且您只需要從一個節點進行備份;您可以從一個備份恢復整個副本集)。db.synclock 僅鎖定您發出此命令的那個節點,其他節點照常工作,因此鎖定(並進行備份)SECONDARY 節點之一。

另外,arbiter不需要備份,因為沒有需要備份的數據。仲裁者只是副本集中的“投票者”或“觀察者”。

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