案例分析:記一次MongoDB誤刪集合的解決過程

背景
下午6點,風和日麗,辦公室靜悄悄的,一切都充滿著祥和平靜,但暴風雨前總是平靜的,果然沒過一會兒,隔壁部門的大誠哥就來找我:“小米,MongoDB數(shù)據(jù)能恢復嗎?我刪除了一個表怎么創(chuàng)建回來?”,我弱弱地問一句:“哪個環(huán)境?”,他說:“正式環(huán)境”,我:“……”,想準時下班的愿望泡湯了

解決方案
我們的這個項目是用云MongoDB部署的,默認每天凌晨都會進行一次備份,但現(xiàn)在距離凌晨備份已經(jīng)很長時間了,無法使用自動備份的數(shù)據(jù),只能看看云MongoDB是否可以恢復。
幸好,云MongoDB數(shù)據(jù)恢復功能可以最大程度地減少因數(shù)據(jù)庫誤操作引起的損失。云數(shù)據(jù)庫MongoDB版提供了多種數(shù)據(jù)恢復方案,可滿足不同場景下MongoDB數(shù)據(jù)庫的數(shù)據(jù)恢復需求。
數(shù)據(jù)恢復至MongoDB實例

數(shù)據(jù)恢復至自建數(shù)據(jù)庫
還可以將云數(shù)據(jù)庫MongoDB的備份文件下載到本地,然后將數(shù)據(jù)恢復至自建數(shù)據(jù)庫,可用于業(yè)務(wù)測試或數(shù)據(jù)分析等場景。

通過閱讀官方文檔我們分別采用了“MongoDB單庫恢復”和“將MongoDB邏輯備份文件恢復至自建數(shù)據(jù)庫”兩種方式。
MongoDB單庫恢復操作步驟
登錄MongoDB管理控制臺
在頁面左上角,選擇實例所在的資源組和地域
在左側(cè)導航欄,單擊副本集實例列表
找到目標實例,單擊實例ID。
單擊目標實例ID或目標實例所在行操作列,并選擇管理。
單擊全量備份頁簽。
通過以下任意一種方法選擇需要恢復的數(shù)據(jù)庫。
? ? ? ? 7.1、按時間點創(chuàng)建實例
? ? ? ? ? ? ? ? 7.1.1、單擊按時間點創(chuàng)建實例。
? ? ? ? ? ? ? ? 7.1.2、在按時間點創(chuàng)建實例面板,設(shè)置以下參數(shù)
? ? ? ? ? ? ? ? 7.1.3、

? ? ? ? ? ? ? ? 7.1.4、單擊確定。
? ? ? ?7.2、從備份點創(chuàng)建實例
? ? ? ? ? ? ? ? 7.2.1、在備份文件列表中,單擊目標備份文件所在行操作列的,并選擇從備份點創(chuàng)建實例。
? ? ? ? ? ? ? ? 7.2.2、在從備份點創(chuàng)建實例面板,選擇部分數(shù)據(jù)庫,并勾選需要恢復的數(shù)據(jù)庫庫名。
? ? ? ? ? ? ? ? 7.2.3、點擊確定
8.新建實例
? ? ? ?8.1、在克隆實例頁面,選擇商品類型。
? ? ? ? ? ? ?8.1.1、副本集(包年包月):預付費,在創(chuàng)建實例時就需要支付費用。適合長期需求,價格比按量付費更實惠,且購買時長越長,折扣越多。
? ? ? ? ? ? ?8.1.2、副本集(按量付費):后付費,每小時根據(jù)實例配置生成1個收費訂單,并扣除相應(yīng)的賬戶余額。適合短期需求,用完可立即釋放實例,節(jié)省費用。
? ? ? ? ? 8.2、選擇新購實例的配置信息,選擇新購實例的配置信息
9.購買實例。
? ? 9.1、單擊立即購買。
? ? ?9.2、在確認訂單頁面,閱讀并勾選云數(shù)據(jù)庫MongoDB版服務(wù)協(xié)議。
? ? ?9.3、單擊去支付。
? ? ?9.4、根據(jù)提示完成支付流程。
邏輯備份恢復至自建數(shù)據(jù)庫
Mongorestore是MongoDB數(shù)據(jù)庫自帶的恢復工具,您可以通過Mongorestore將云數(shù)據(jù)庫MongoDB副本集實例的邏輯備份文件恢復至自建MongoDB數(shù)據(jù)庫中。
前提條件
實例為MongoDB 4.2及以下版本的副本集實例。
為保障兼容性,自建MongoDB數(shù)據(jù)庫和云數(shù)據(jù)庫MongoDB副本集實例的數(shù)據(jù)庫版本相同。
準備工作
下載并安裝與云數(shù)據(jù)庫MongoDB實例數(shù)據(jù)庫版本相同的MongoDB至自建MongoDB數(shù)據(jù)庫所在客戶端(本地服務(wù)器或云服務(wù)器ECS實例)。
操作步驟
登錄MongoDB管理控制臺。
在頁面左上角,選擇實例所在的資源組和地域。
在左側(cè)導航欄,單擊副本集實例列表。
單擊目標實例ID或目標實例所在行操作列,并選擇管理。
備份數(shù)據(jù)庫。
在目標實例頁面右上方,單擊備份實例。
在備份實例 面板,選擇備份方法 為邏輯備份。
單擊確定,等待實例備份完成。
下載備份文件。
將下載的備份文件復制到自建MongoDB所在客戶端(即安裝有Mongorestore工具的客戶端)。
mongorestore -h 127.0.0.1 --port 27017 -u root -p ******** --drop --gzip --archive=hins1111_data_20190710.ar -vvvv --stopOnError
寫在最后
好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。
