崩潰後無法重啟或修復 mongodb 數據庫(***invariant() 失敗後中止)
意外崩潰後,我無法重新啟動或 –repair mongodb 數據庫了。重新啟動伺服器時,
systemctl restart mongodb
我得到以下資訊:2020-09-16T20:25:23.835+0200 電子儲存
$$ initandlisten $$WiredTiger 錯誤 (-31802)$$ 1600280723:835687 $$$$ 23452:0x7f4a58059a40 $$,文件:sizeStorer.wt,WT_SESSION.open_cursor:__wt_block_read_off,302:sizeStorer.wt:致命讀取錯誤:WT_ERROR:非特定WiredTiger錯誤原始:$$ 1600280723:835687 $$$$ 23452:0x7f4a58059a40 $$,文件:sizeStorer.wt,WT_SESSION.open_cursor:__wt_block_read_off,302:sizeStorer.wt:致命讀取錯誤:WT_ERROR:非特定WiredTiger錯誤 2020-09-16T20:25:23.835+0200 電子儲存
$$ initandlisten $$WiredTiger 錯誤 (-31804)$$ 1600280723:835692 $$$$ 23452:0x7f4a58059a40 $$, file:sizeStorer.wt, WT_SESSION.open_cursor: __wt_panic, 523: 程序必須退出並重啟: WT_PANIC: WiredTiger library panic Raw:$$ 1600280723:835692 $$$$ 23452:0x7f4a58059a40 $$, file:sizeStorer.wt, WT_SESSION.open_cursor: __wt_panic, 523: 程序必須退出並重啟: WT_PANIC: WiredTiger library panic 2020-09-16T20:25:23.835+0200 F -
$$ initandlisten $$src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp 420 中的致命斷言 50853 2020-09-16T20:25:23.835+0200 F - $$ initandlisten $$ ***在 fassert() 失敗後中止
2020-09-16T20:25:23.851+0200 樓 -
$$ initandlisten $$得到信號:6(中止)。
當我嘗試修復時,
mongod --dbpath **/** --repair
我得到以下資訊:2020-09-16T20:05:09.921+0200 我儲存
$$ initandlisten $$修復數據庫管理員
2020-09-16T20:05:09.921+0200 I STORAGE $$ initandlisten $$修復集合 admin.system.users
2020-09-16T20:05:09.921+0200 I STORAGE $$ initandlisten $$在 uri 表上驗證失敗:collection-0-4776197172926482174。進行打撈作業。
2020-09-16T20:05:09.922+0200 F - $$ initandlisten $$不變故障 rs.get() src/mongo/db/catalog/database_impl.cpp 228
2020-09-16T20:05:09.922+0200 F - $$ initandlisten $$ *** invariant() 失敗後中止
2020-09-16T20:05:09.929+0200 樓 -
$$ initandlisten $$得到信號:6(中止)。`
意外崩潰後,我無法重新啟動… mongodb 數據庫
是時候練習您的恢復策略了,將您的恢復計劃付諸實施,並從您的備份中恢復您的數據庫。
您的數據庫實際上非常有彈性。
留給自己的設備(在所有其他條件相同的情況下),它將自行從伺服器崩潰中恢復。這稱為實例恢復,所有“真正的”DBMS 都完全自動完成。
但是,如果您的數據庫無法自行恢復,那麼是時候認真考慮讓該數據庫擺脫困境並從備份中恢復它了。使用“修復”工具輕鬆跳躍是一種 Sure-Fire(TM)失去數據的方法。
現在,不要誤會我的意思 - 失去數據並不總是壞事……但前提是它被寫在你的恢復策略中,這將定義,除其他外:
- 恢復數據庫需要多長時間,以及
- 這樣做允許您失去**多少數據。
您的備份計劃應支持您的恢復策略。
注意:任何明智的恢復策略都不應該依賴於能夠“修復”到那時基本上已經損壞的數據庫。始終確保您可以恢復到穩定、已知、良好的狀態(即上次備份),並且您已經練習過執行該恢復工作。