【wt】CentOS7.x 上wt的編譯安裝

MongoDB 3.4.19 WiredTiger(wt)工具編譯指南

MongoDB 3.4.19 內(nèi)置的 WiredTiger 存儲(chǔ)引擎版本是 2.9.2,wt 工具是 WiredTiger 官方提供的命令行管理工具,用于修復(fù)、檢查、dump/load WiredTiger 數(shù)據(jù)文件。

一、核心前提

  1. 必須編譯 WiredTiger 2.9.2 版本(和 MongoDB 3.4.19 引擎版本嚴(yán)格一致,版本不匹配會(huì)直接損壞數(shù)據(jù))
  2. 編譯環(huán)境:CentOS 7 / Ubuntu 16.04(最穩(wěn)定,匹配 MongoDB 3.4 編譯環(huán)境)
  3. 依賴:gcc、g++、make、automake、libtool、snappy-devel(壓縮庫)

二、環(huán)境準(zhǔn)備(一鍵安裝)

1. CentOS 7 環(huán)境

# 安裝基礎(chǔ)編譯依賴
yum install -y gcc gcc-c++ make automake libtool snappy snappy-devel git  lz4-devel

三、下載 WiredTiger 2.9.2 源碼

# 克隆官方倉庫
https://github.com/wiredtiger/wiredtiger/tree/mongodb-3.4.19
git clone https://github.com/wiredtiger/wiredtiger.git
cd wiredtiger

# 切換到 MongoDB 3.4.19 對應(yīng)的精準(zhǔn)版本(wt 2.9.2版本)
git checkout mongodb-3.4.19   
image.png

四、編譯配置(關(guān)鍵:匹配 MongoDB 編譯參數(shù))

你只需要進(jìn)入源碼目錄后,任選一套執(zhí)行即可。


方式 1:內(nèi)置模式(Builtins 推薦,MongoDB 官方風(fēng)格)

特點(diǎn):snappy/lz4/zlib 直接編進(jìn) wt 二進(jìn)制,不生成插件,不依賴系統(tǒng)動(dòng)態(tài)庫。

sh autogen.sh
./configure \
 --prefix=/usr/local/wt-2.9.2 \
  --disable-shared \
  --enable-static \
  --with-builtins=lz4,snappy,zlib

make -j$(nproc)
make install

方式 2:傳統(tǒng)插件模式 (Loadable Extensions / Extension Modules)

特點(diǎn):snappy/lz4/zlib 編譯成 .so 插件,運(yùn)行時(shí)需要?jiǎng)討B(tài)加載。

sh autogen.sh
./configure \
 --prefix=/usr/local/wt-2.9.2 \
  --enable-static \
  --enable-shared \
  --enable-snappy \
  --enable-lz4 \
  --enable-zlib

make -j$(nproc)
 make install

最簡單的區(qū)別(一眼看懂)

  • 內(nèi)置模式(with-builtins)

    • 最終只有一個(gè) wt
    • 拷貝到任何 CentOS7 都能直接用
    • 最穩(wěn)定,最符合 MongoDB 3.4 用法
  • 插件模式(--enable-snappy)

    • 會(huì)生成:libwiredtiger_snappy.so 等插件
    • 運(yùn)行時(shí)依賴系統(tǒng) snappy 庫
    • 移植性差,容易報(bào)錯(cuò)

總結(jié)

你編譯 mongodb-3.4.19 分支,強(qiáng)烈推薦用方式 1(內(nèi)置模式),這是 MongoDB 自己用的編譯方式。
需要我再告訴你如何驗(yàn)證 snappy 是否真的編譯成功嗎?


五、驗(yàn)證編譯結(jié)果

# 查看版本(確認(rèn)是 2.9.2)
/usr/local/wt-2.9.2/bin/wt  -V

# 輸出應(yīng)包含:WiredTiger version 2.9.2

六、使用注意事項(xiàng)(必看!)

  1. 必須關(guān)閉 MongoDB 服務(wù)才能使用 wt 工具,否則數(shù)據(jù)文件被鎖定會(huì)報(bào)錯(cuò)
  2. 操作前備份數(shù)據(jù)文件/var/lib/mongo 目錄)
  3. 常用命令示例:
    # 檢查 WiredTiger 數(shù)據(jù)文件健康度
    /usr/local/wt/bin/wt verify -h /var/lib/mongo
    
    # 導(dǎo)出集合數(shù)據(jù)
    /usr/local/wt/bin/wt dump -h /var/lib/mongo -f collection.dump collection-0-1234567890.wt
    

七、常見問題解決

  1. snappy 依賴報(bào)錯(cuò)
    重新安裝 snappy 開發(fā)庫:

    • CentOS:yum install snappy snappy-devel
    • Ubuntu:apt-get install libsnappy-dev
  2. 編譯報(bào)錯(cuò) C++ 版本過低
    CentOS 7 升級 gcc:

    yum install -y centos-release-scl
    yum install -y devtoolset-7-gcc devtoolset-7-gcc-c++
    scl enable devtoolset-7 bash
    
  3. wt 無法打開 MongoDB 文件
    99% 原因是 WiredTiger 版本不匹配,必須嚴(yán)格使用 2.9.2 版本編譯。


總結(jié)

  1. 編譯版本:WiredTiger 2.9.2(唯一匹配 MongoDB 3.4.19)
  2. 核心配置:必須開啟 --enable-snappy
  3. 工具路徑:/usr/local/wt/bin/wt-2.9.2
  4. 使用前提:關(guān)閉 MongoDB、備份數(shù)據(jù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容