MongoDB 云迁移中的几个问题#2021年底大盘点#

网友投稿 341 2022-10-09

MongoDB 云迁移中的几个问题#2021年底大盘点#

目前,各大云厂商均对MongoDB数据库提供了支持,同时,MongoDB在各大云之间的迁移也成为一种常见的维护工作。这里总结几点华为云到天翼云迁移过程中的问题。

一、云迁移工具DRS

各大云之间的MongoDB迁移,提供一种DRS工具,可提供自建MongoDB到云,云之间的副本集到副本集,分片集群到分片集群的迁移,该工具提供迁移过程中的监控、迁移完成后的比对功能,为MongoDB入云和云之间的迁移提供了方便。但是,该工具结合云平台又有不足之处。需要注意的点如下:

IP资源问题:源端和目标端搬迁前的IP资源评估,因为,目标端创建一个三副本分片集群需要10多个内网IP地址。缺少评估的情况下,云之间的大批量分片集群迁移,很可能面临IP资源不足的情况。

磁盘资源问题:源端和目标端的磁盘资源评估,虽然,DRS在建立源端和目标端的自动同步,并将源端的OPLOG自动拉取到自身中间库,但是,DRS自身也需要满足一定的规格,否则,面对大数据库和大业务量的系统数据库时,很容易导致DRS自身磁盘空间满而同步终止。并且,大业务量的情况下,需要处理jvm线程控制和jvm内存使用问题,否则,也容易由于jvm性能低下导致同步十分缓慢。

平台对mongodb分片集群的均衡器控制问题:对于DRS云之间迁移,还需要注意,DRS要求关闭mongodb的均衡器,但是,系统自动备份工具在备份完成时会自动开启均衡器,导致DRS同步失败,因此,DRS云迁移时需要通过API方式从后台关闭分片集群的均衡器。

平台对mongodb分片集群shard的安全控制问题:mongodb的云迁移,需要各个分片的primary节点IP和用户及密码,因为配置DRS时必须提供。但是,处于安全考虑,shard内部信息不对外开放,需要协调云厂商开发shard分片的副本集显示,并告知分片副本集的管理员用户和密码。

DRS自身问题:在DRS同步过程中,不能修改源端用户名和密码,也不能修改函数、视图、存储过程、集合等的定义,否则会导致DRS同步失败终止。

DRS自身问题:只提供数据库、对象数、对象行数的校验,不保证对象行内容的完全一致。

二、mongodb导出导入方式

如果是小数据量的数据库,快速有效的云迁移,除了DRS之外,还有mongodb自身的工具mongodump和mongorestore,mongodb的备份还原工具使用并行参数-j一样快速高效。但是,在对副本集和分片集群做云迁移时有缺陷。

缺陷:由于mongodump在云上的备份不能备份admin、config库(因为目标不需要这两个库,否则会破坏目标端的数据库结构),所以,导入到目标端后,需要重新设置数据库的分片和集合分片信息;也需要重新创建业务用户,值需要重源端查出来用户的数据并insert到目标端的admin库即可。

三、特别注意问题

mongodb的TTL索引是mongodb的一个特性,但是,在迁移时需要删除或者禁用该索引,否则,无论是备份恢复,还是DRS迁移,迁移完成后无法保证数据一致性。

云之间的迁移,DRS工具需要对等架构迁移,就是副本集对副本集、分片集群对分片集群,并且源端和目标端的版本保持一致。否则,就只能使用mongodump和mongorestore进行迁移。

云迁移完成后,需要注意查看均衡器、平台备份、业务用户正常连接等功能,否则将影响业务正常割接。

无论是DRS迁移,还是导出导入的迁移,在源端和目标一致性校验时,均可能提示数据量不一致。此时,需要执行如下命令,发起手工全集合扫描进行集合行数校验。

--手工发起指定表的全表扫描db.testData.aggregate([{$group : {_id : null, count : {$sum : 1}}}])

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:阿里巴巴超大规模 Kubernetes 基础设施运维体系揭秘
下一篇:Java详解Swing中的几种常用按钮的使用
相关文章

 发表评论

评论列表