
創新互聯是一家專業的成都網站建設公司,我們專注成都網站建設、網站建設、網絡營銷、企業網站建設,買友情鏈接,廣告投放平臺為企業客戶提供一站式建站解決方案,能帶給客戶新的互聯網理念。從網站結構的規劃UI設計到用戶體驗提高,創新互聯力求做到盡善盡美。
Part1:寫在最前
Percona MongoDB 支持Hot Backup,解決了MongoDB官方版本只能使用mongodump的情況。mongodump在小庫中還好,量上來后,備份恢復都是痛苦的。本文就MongoDB hot backup 備份中的一個bug進行復現和解決。
Part1:限制
在Percona MongoDB3.2.12版本之前,在進行物理熱備份時,如果配置文件中配置了
directoryPerDB: true
directoryForIndexes: true
這兩個參數的話,那么在執行備份的時候會爆出錯誤:
[root@HE1 bin]#./mongo 127.0.0.1:27020/admin
MongoDB shellversion: 3.2.11-3.1
connecting to:127.0.0.1:27020/admin
heleitest:PRIMARY>use admin
switched to db admin
heleitest:PRIMARY>db.runCommand({createBackup: 1, backupDir: "/home/work/backup"})
{ "ok" : 0, "errmsg" : "boost::filesystem::copy_file: No such file or directory:\"/home/mongodb/data/admin/collection/11-6714811575794894766.wt\",\"/home/work/backup/admin/collection/11-6714811575794894766.wt\""}Part2:痛點
這個問題會很頭痛,比如生產庫中,MongoDB庫越來越大,促使我們計劃采用hot backup方案,由于起先的庫開啟了這個方式,那么臨時的解決方案是什么樣的呢?
It may be useful to simply let a secondary initial sync with those options off, then you could take a hot backup again to populate all the other nodes. This is not a solution but a path to get the production system back into a state you can use the backups. please note this assume production is built to best practices and is in a replica-set and not a stand alone mongod process.
意思是在我們MongoDB常規的復制集中,如果想要備份這個庫,那么首先要下掉一個Secondary,清空數據目錄進行重新復制,這個過程會非常緩慢和復雜。如果僅僅是重啟數據庫的話,會起不來報錯,原因是已經開啟了多路徑存儲數據和索引獨立存儲這兩個選項,而現有版本的hotbackup是不支持這樣的備份方式的。
Part3:方案
好在Percona版本響應給力,在賀春旸老師提出該Bug后,官方在3.2.12-3.2版本便修正了這一問題,使得hot backup的痛點得以解決,例如,原先我需要重新對集群進行關閉參數,導出導入數據,這無疑是一個巨大的工作量,同時會讓數據庫可靠性在不短的時間內都處于較低狀態。而現在,我們僅僅要做的就是升級數據庫,這一問題就能夠得到解決。
Part4:復現
[root@HE1 bin]# ./mongo 127.0.0.1:27020/admin
Percona Server for MongoDB shell version: 3.2.12-3.2
connecting to: 127.0.0.1:27020/admin
heleitest:PRIMARY> db.runCommand({createBackup: 1, backupDir: "/home/work/backup"})
{ "ok" : 1 }
我這里先對之前的3.2.11-3.1版本進行一個升級,如何升級MongoDB數據庫可參考:
http://suifu.blog.51cto.com/9167728/1947035
同時,配置文件中配置了
directoryPerDB: true
directoryForIndexes: true
可以看到,在3.2.12-3.2版本中,備份是沒有任何異常的。
Part5:校驗
我們來看下3.4最新版是否也是正常的
[root@HE1 bin]# ./mongo 127.0.0.1:27020/admin
Percona Server for MongoDB shell version v3.4.4-1.4
connecting to: mongodb://127.0.0.1:27020/admin
Percona Server for MongoDB server version: v3.4.4-1.4
heleitest:PRIMARY> db.runCommand({createBackup: 1, backupDir: "/home/work/backup"})
{ "ok" : 1 }可以看到,最新版也沒有問題。
Part6:官方日志
#PSMDB-123: Fixed the creation of proper subdirectories inside the backup destination directory
賀春旸老師提交的jira
https://jira.percona.com/browse/PSMDB-123
——總結——
感謝賀春旸老師的bug提交,感謝Percona團隊高效的修復速率,開源,讓世界更美好~由于筆者的水平有限,編寫時間也很倉促,文中難免會出現一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正。
當前標題:MongoDBHotBackup測試及痛點
本文地址:http://www.js-pz168.com/article28/gcjpcp.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、定制網站、用戶體驗、網站設計、網站建設、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯