国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

通過WT工具對Mongodb進行數據恢復

IT那活兒 / 2759人閱讀
通過WT工具對Mongodb進行數據恢復
[
概述
]


在數據庫運維過程中,如果運維不規范,未建立容災環境并未制定合適的備份策略并備份,在某些極端情況下(比如主機異常斷電),可能導致數據庫實例無法啟動。此時,怎么盡最大的可能拯救數據?


在Oracle中,提供了一些隱含參數或者方法讓數據庫強制啟動,并在撈出數據后重建數據庫,或者利用DUL等工具盡可能的進行數據提取。那么在mongodb數據庫的運維過程中,遭遇數據庫文件損壞,實例無法啟動的時候怎么辦?我們都知道Mongodb從3.2版開始,默認使用的wiredTiger開源存儲引擎,通過在github上下載wt引擎的源碼,可以編譯生成一個wt工具,利用該工具可以從mongodb數據文件中撈出數據。


[
數據恢復
]


工具安裝


軟件下載地址:https://github.com/wiredtiger/wiredtiger,安裝方法:


  1. 安裝依賴包

yum-y install snappy.x86_64 snappy-devel.x86_64


  1. 編譯安裝

./configure--enable-snappy –prefix=/usr/local/wiredTiger

make&&makeinstall


數據恢復


在mongodb數據目錄的文件結構中,包括數據庫文件和WiredTiger.wt等元數據文件,若元數據文件丟失,則會導致wt工具也無法恢復數據,出現類似如下報錯:

[1600001107:222670][28965:0x7f7a4a987740],file:WiredTiger.wt, connection: __posix_open_file, 715:/data/mongodb/WiredTiger.wt: handle-open: open: No such file ordirectory


如上圖所示,需保證紅框外的文件都在,才能從數據文件中抓取數據。

wt -v -h /data/mongodb -C"extensions=[/usr/local/wiredtiger/lib/libwiredtiger_snappy.so]"list –列出所有的對象名稱,由于WT引擎默認使用了snappy壓縮算法,所以需要使用extensions顯示指定類文件位置。


從數據文件中導出數據:

/usr/local/wiredtiger/bin/wt -v -h /data/mongodb -C"extensions=[/usr/local/wiredtiger/lib/libwiredtiger_snappy.so]" dump -f /home/mongo/a.dmp test/collection/7-6614138329248103296

導出的文件在此時不是json文件,不能直接讀取,需導入一個臨時數據庫中


>show dbs;

admin  0.000GB

config 0.000GB

local  0.000GB

>use test

>db.createCollection("test");

{"ok" : 1 }

>show tables;

test

>db.test.stats().wiredTiger.uri;

statistics:table:test/collection/0--2648066414802528487  --獲取臨時集合的數據文件信息


[mongo@node1~]$ mongod -f /etc/mongodb/mongodb1.conf ---shutdown##停止臨時數據庫,否則在導入的時候會報資源忙

[1600004969:259849][25396:0x7f9657853740],wiredtiger_open: __posix_file_lock, 410:/data/mongodb1/WiredTiger.lock: handle-lock: fcntl: Resourcetemporarily unavailable

[1600004969:259905][25396:0x7f9657853740],wiredtiger_open: __conn_single, 1720: WiredTiger database is alreadybeing managed by another process: Device or resource busy


數據導入:

[mongo@node1~]$  /usr/local/wiredtiger/bin/wt  -v -h /data/mongodb1 -C"extensions=[/usr/local/wiredtiger/lib/libwiredtiger_snappy.so]"-R load -f /home/mongo/a.dmp  -rtest/collection/0--2648066414802528487

file:test/collection/0--2648066414802528487:100002  --提示導入了100002個document

啟動數據庫,但是我們發現此時導入的數據可以find,但是count為0,如下圖:



此時,我們采用導出和導入的方法更新元數據


再次查詢,集合文檔數據量count可正常顯示,見下圖:

注:wt工具導出和導入數據只能按集合逐一進行,mongodump和mongorestore修復元數據,可以按庫多個集合同時修正。


[
總結
]


本文檔使用的案例是在測試環境的測試案例。本文僅僅是提供一種在極端情況下盡可能救援數據的一種方法,但使用過程中也有諸多限制。本人認為,成熟的運維應該是制定完善的運維方案,建立合適的數據庫備份策略和數據庫容災架構,不到萬不得已,不使用此類非常規的手段恢復數據。


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130142.html

相關文章

  • 團隊協作工具 Worktile 技術架構揭秘

    摘要:現在已經成為的官方標準,如,以及的擴展協議。作者簡介李會軍,聯合創始人,關注團隊協作領域,致力于用工具解決中小團隊的協作問題。 Worktile自上線兩年多以來,以良好的用戶體驗和穩定的服務,獲得了用戶的認可和喜愛。截止筆者寫這篇文章的時候,已經有超過10萬家團隊在使用Worktile。作為團隊協作工具,從技術上分析首先要解決如下幾個問題: 基于Web的跨平臺設計,讓用戶在任何地方都...

    heartFollower 評論0 收藏0
  • MongoDB Security Tutorial

    摘要:通過指定,并在生產線上關閉的接口來達到規避網絡進口的安全問題。避免同樣的悲劇在發生。上海小胖原創地址歡迎各位大神前來評論。每周五,敬請期待,上海小胖獨更。 序 原本這周想寫一個系列關于 GDPR(General Data Protection Regulation) MongoDB 的,但是昨天(2017.09.05)又爆出超2.6W 個MongoDB 節點被劫持。所以臨陣變卦,決定寫...

    simpleapples 評論0 收藏0
  • mongodb

    摘要:并依賴于提供的機制提供高數據可靠性,目前支持單機事務。源通知目標開始同步數據源收到發送的命令后,會向目標發送的命令,通知目標開始遷移數據真正的數據遷移由目標主動發起。源收到的結果,整個數據遷移的步驟完成。 本文分兩部分,分布式和單機。單個db的存儲引擎,物理和數據存儲簡介,事務實現等。分布式架構,分布式涉及的復制集,分片等可靠性和擴展性保障。 第一部分 單機存儲引擎介紹mondod 引...

    lscho 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<