迁移需求
现有测试服务器A 和 测试服务器 B,需要实现从测试服务器A向测试服务器B进行mongoDB 数据库的迁移。
可以使用 mongoDB 的导出工具 mongoexport 和导入工具 mongoimport 实现。
官方英文文档链接 mongoDB mongoexport ,mongoDB mongoimport
数据导出
mongoexport 参数项
1 | sql复制代码general options: |
导出集合为 .csv 文件
1 | css复制代码mongoexport --db users --collection contacts --csv --fieldFile fields.txt --out /opt/backups/contacts.csv |
导出集合为 .json 文件
1 | css复制代码mongoexport --db sales --collection contacts --out contacts.json --journal |
mongoimport 参数选项
1 | sql复制代码general options: |
mongoimport 导入 .csv 文件
1 | css复制代码mongoimport --db users --collection contacts --type csv --file /opt/backups/contacts.csv |
mongoimport 导入 .json 文件
1 | css复制代码mongoimport --collection contacts --file contacts.json --journal |
服务器实例
进入找到服务器A的 mongodb 安装目录下
例如:cd /usr/local/mongodb/bin
数据导出:
1 | bash复制代码./mongoexport -d DataBaseName -c CollectionName -o bak.dat |
其中,DataBaseName 为数据库名称,CollectionName 为集合名称,bak.dat 为导出后的名称
导出后的bak.dat将在 mongoexport所在的目录下。
例如:
1 | bash复制代码./mongoexport -d user -c guset -o guset.dat |
将数据库 user 下的集合 guset 导出到 mongoexport 所在的目录下,并将其命名为 guset.dat
导入数据
移动导出的数据文件到另外一台服务器的mongo 目录下
1 | bash复制代码sudo mv /tmp/bak.dat /db/mongo/bin |
注:bak.dat 问原来服务器导出的数据文件。
进入 mongoDB 安装目录。
1 | bash复制代码cd /db/mongo/bin |
使用
1 | bash复制代码./mongoimport -h 127.0.0.1:port -u xxx -p xxx-d DataBaseName -c CollectionName bak.dat |
其中,DataBaseName 为数据库名称,CollectionName 为集合名称,bak.dat 为导入的集合
实例操作
1 | sql复制代码./mongoimport -h 127.0.0.1:27017 -u user -p user -d guset -c guset bak.dat |
操作结束。
注意 ⚠️
其中有写到
Do not use mongoimport and mongoexport for full instance, production backups because they will not reliably capture data type information. Use mongodump and mongorestore as described in “Backup Strategies for MongoDB Systems” for this kind of functionality.
即不要将 mongoimport 和 mongoexport 用于完整实例生产备份,因为它们无法可靠地捕获数据类型信息。使用 mongodump 和 mongorestore ,如“MongoDB系统的备份策略”中所述,以实现此类功能。
mongoDB mongodump 文档
本文转载自: 掘金