Mongodb

崩潰後無法重啟或修復 mongodb 數據庫(***invariant() 失敗後中止)

  • September 17, 2020

意外崩潰後,我無法重新啟動或 –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)失去數據的方法。

現在,不要誤會我的意思 - 失去數據並不總是壞事……但前提是它被在你的恢復策略中,這將定義,除其他外:

  • 恢復數據庫需要多長時間,以及
  • 這樣做允許您失去**多少數據。

您的備份計劃應支持您的恢復策略。

注意:任何明智的恢復策略都不應該依賴於能夠“修復”到那時基本上已經損壞的數據庫。始終確保您可以恢復到穩定、已知、良好的狀態(即上次備份),並且您已經練習過執行該恢復工作。

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