Database-Design
如何組織 MongoDB 副本集備份和警報
我有一個正在執行的 MongoDb 副本集,由 2 個副本和 1 個主節點組成。最近我注意到我的主人走了,自動故障轉移採取行動並改變了主人,但我沒有意識到這一點。此外,由於 mongo 服務是在 master 上完成的,並且備份僅在 master 上設置,因此幾天內缺少備份。
顯然,這不是我所擁有的最佳實踐,也不會提醒正確的備份。
我想問一些關於這個的事情。
crontab
可以在所有 3 個節點上使用普通和設置備份腳本mongorestore
嗎?- 在這種情況下,當我必鬚根據終止或高負載等事件了解 MongoDB(或任何其他服務)的狀態時,通常如何進行警報?
僅供參考,我在 AWS EC2 Ubuntu 實例上使用 MongoDB。
提前致謝!
是的,您可以在所有節點上執行備份(而不是
mongodump
ormonogexport
)。這只是可用磁碟空間的問題。您可以開發自己的腳本並檢查您喜歡的任何內容,例如
systemctl status mongod
、rs.status()
、db.hello()
等。或者你使用 Mongo Ops Manager
然後你有標準的監控工具,最常見的工具之一是Nagios
始終建議僅在
SECONDARY
節點上執行備份。PRIMARY
在主節點上執行備份會增加磁碟 IO,因為從應用程序到節點的寫入流量已經很大。您可以根據以下邏輯編寫自己的 shell/python 腳本進行配置:
- 辨識副本集中的節點是否
SECONDARY
存在。如果以下返回false
,則它是次要的,您可以繼續下一步進行備份。db.hello().isWritablePrimary
- 執行
mongodump
備份命令,壓縮轉儲文件並將其保存在某個位置mongodump –host 主機名 –db dbname –archive=/db_backup/dbname.gz –gzip
為了提醒您,您可以嘗試一些用於基本數據庫健康檢查的開源外掛:Mongo Monitor,Check MongoDB。