一、先去检查mongodump
mongodump --version
如果报 mongodump version: built-without-version-string 或者其他的较老的版本,直接去下载最新的【传送门】
【以Ubuntu18.04为例】
-
安装工具
假设你下载的是
.tgz
文件(适用于 Linux 系统),你可以按照以下步骤安装:tar -xzf mongodb-database-tools-ubuntu1804-x86_64-100.5.0.tgz sudo cp mongodb-database-tools-100.5.0/bin/* /usr/local/bin/
如果你下载的是
.deb
文件(适用于 Debian/Ubuntu 系统),可以使用dpkg
安装:sudo dpkg -i mongodb-database-tools-ubuntu2004-x86_64-100.5.0.deb
确保将
mongodb-database-tools-ubuntu2004-x86_64-100.5.0.deb
替换为你实际下载的文件名。 -
验证安装
安装完成后,验证
mongodump
工具的版本:mongodump --version
确保工具版本与你的 MongoDB 服务器版本兼容。
二、导出
查看数据库列表
mongo --eval "db.adminCommand('listDatabases')"
导出所有数据库 /path/to/backup 目标文件夹
mongodump --out /path/to/backup
如果有少的,单独针对没有导出的数据库进行导出,如admin数据库没有被导出
mongodump --db admin --out /path/to/backup
全部导出完再把整个文件夹传输到目标服务器
三、导入
恢复所有数据库
使用 mongorestore 可以将之前使用 mongodump 导出的数据恢复到 MongoDB 实例中。
基本语法
mongorestore --dir <input directory>
示例
mongorestore --dir /path/to/backup
这个命令会将 /path/to/backup 目录中的所有数据库恢复到本地 MongoDB 实例中。
导出和导入指定数据库
如果你只想导出和导入特定的数据库,可以在命令中指定数据库名称。
导出指定数据库
mongodump --db <database name> --out <output directory>
示例
mongodump --db mydatabase --out /path/to/backup
恢复指定数据库
mongorestore --db <database name> --dir <input directory>/<database name>
示例
mongorestore --db mydatabase --dir /path/to/backup/mydatabase
当然,如果你认为这个代码太简单了懒得写,那就用我的,路径记得换成自己的。
目录结构大概是这样的
/mongodb-data/file/
├── database1
│ ├── collection1.bson
│ ├── collection2.bson
│ └── collection1.metadata.json
├── database2
│ ├── collection3.bson
│ ├── collection4.bson
│ └── collection3.metadata.json
…
sudo vim restore_all.sh
#!/bin/bash
BASE_DIR="/mongodb-data/file"
for db_dir in "$BASE_DIR"/*; do
if [ -d "$db_dir" ]; then
db_name=$(basename "$db_dir")
mongorestore --db "$db_name" --dir "$db_dir"
echo "已恢复数据库: $db_name"
fi
done
给权限
sudo chmod +x restore_all.sh
运行
sudo ./restore_all.sh