云数据库 MongoDB 数据迁移问题

这篇汇总云数据库 MongoDB 在数据导入导出与迁移上云方面的高频问题。所有命令示例中的 IP、用户名、密码均为占位符,请替换为真实连接信息后再执行。

相关产品
云数据库 MongoDB 产品页,含版本规格、价格与购买入口。

一、云数据库 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,过旧的工具可能不兼容新版认证方式或数据格式。导入导出的详细用法参见 数据导入导出。

赞 (0)
上一篇 4天前
下一篇 4天前