一、云数据库 MongoDB 支持哪些数据迁移方式?
推荐使用 数据传输服务 DTS 进行迁移,支持云服务器自建实例、其他云或本地(经外网/专线)实例迁移上云,并支持结构迁移、全量迁移和增量同步,可实现不停机平滑迁移。详情参见 迁移总览。
对于数据量较小的场景,也可使用 MongoDB 工具(mongodump/mongorestore、mongoexport/mongoimport)手动导入导出。
二、如何使用 mongodump 和 mongoexport 把数据导出到本地?
请使用与实例版本匹配的最新版 MongoDB Database Tools。两种工具区别如下:
·mongodump:整库导出,BSON 格式,大数据量导出效率高。
·mongoexport:单集合导出,JSON 格式,可读性好。
整库导出:
mongodump –host 10.0.0.1:27017 -u mongouser -p <password> –authenticationDatabase=admin –db=testdb -o /data/dump_testdb
单集合导出:
mongoexport –host 10.0.0.1:27017 -u mongouser -p <password> –authenticationDatabase=admin –db=testdb –collection=testcollection -o /data/export.json
注意:说明:
注意:可用 -f 指定导出字段,用 -q 指定查询条件限定导出范围。
三、如何使用 mongorestore 和 mongoimport 把数据导入到实例?
·mongorestore:整库导入,对应 mongodump 的 BSON 输出。
·mongoimport:单集合导入,对应 mongoexport 的 JSON 输出。
整库导入:
mongorestore –host 10.0.0.1:27017 -u mongouser -p <password> –authenticationDatabase=admin –dir=/data/dump_testdb
单集合导入:
mongoimport –host 10.0.0.1:27017 -u mongouser -p <password> –authenticationDatabase=admin –db=testdb –collection=testcollection2 –file=/data/export.json
四、导出数据时如何避免影响主节点性能?
在 mongodump 命令中追加 –readPreference=secondaryPreferred 参数,优先从从节点读取数据,避免对主节点造成压力。
五、数据导入实例后,为什么占用空间比自建时更小?
属于正常现象,主要原因:
1. 原库长期运行积累了大量增删改操作,产生空间空洞。
2. WiredTiger 出于性能考虑会预分配大于实际数据的空间。
3. 删除数据后原空间未被复用。
而导入操作相当于做了一次数据整理,使数据存储更紧凑,因此占用空间更小。
六、mongodump 无法导出数据怎么办?
请确认使用了与实例版本匹配的最新版 MongoDB Database Tools,过旧的工具可能不兼容新版认证方式或数据格式。导入导出的详细用法参见 数据导入导出。