MongoDB 在 CentOS 的数据恢复方法
一、常用恢复方法概览
二、操作步骤与示例
mongorestore 逻辑恢复(推荐)
mongorestore -u <user> -p <password> --authenticationDatabase admin /path/to/dump/
mongorestore -u <user> -p <password> --authenticationDatabase admin /path/to/dump/<dbname>
mongorestore -u <user> -p <password> --authenticationDatabase admin /path/to/dump/<dbname>/<collname>.bson
文件级物理恢复(拷贝数据文件)
sudo systemctl stop mongod
sudo cp -R /var/lib/mongo /var/lib/mongo_backup_$(date +%F_%T)
sudo cp -R /path/to/backup/mongo /var/lib/mongo
sudo chown -R mongod:mongod /var/lib/mongo
sudo systemctl start mongod
sudo systemctl status mongod
WT 工具修复与手工替换(极端损坏场景)
sudo yum install -y epel-release libtool automake snappy snappy-devel lz4 lz4-devel zstd zstd-devel zlib zlib-devel git make gcc-c++
cd /opt
wget http://source.wiredtiger.com/releases/wiredtiger-2.7.0.tar.bz2
bunzip2 wiredtiger-2.7.0.tar.bz2
cd wiredtiger-2.7.0
sh autogen.sh
./configure --enable-snappy
make && sudo make install
wt -C "extensions=[/opt/wiredtiger-2.7.0/ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" salvage file:<wt-file>
mongod --dbpath /data/mongo-bak --repair
mongo
> db.<coll>.validate({full: true})
mongoimport 导入 JSON/CSV(小体量/结构化数据)
mongoimport -h <host> -u <user> -p <password> --authenticationDatabase admin \
--db <dbname> --collection <collname> --file /path/to/file.json
mongoimport -h <host> -u <user> -p <password> --authenticationDatabase admin \
--db <dbname> --collection <collname> --type=csv --headerline --file /path/to/file.csv
崩溃/损坏后的 repair 修复
sudo systemctl stop mongod
mongod --dbpath /var/lib/mongo --repair
sudo systemctl start mongod
sudo systemctl status mongod
三、方法选择建议
四、注意事项