X86架构迁移ARM/鲲鹏架构方案之--不停机Mongodb数据库迁移

举报
长弓三石 发表于 2024/04/26 15:43:37 2024/04/26
【摘要】 使用Mongodb副本集的方式进行不停机的数据迁移,多个Mongodb实例构成一个副本集,每个副本集有一个主节点和若干个副本节点,应用对主节点的数据修改都会同步给副本节点。在现有的3节点X86架构Mongodb副本集上,加入多个Arm架构的Mongodb实例,在完成数据同步后,依次对X86架构的副本集进行停机,最终使用3台Arm架构的Mongodb实例代替原先的3台X86架构的Mongodb实例。

1.前言

Mongodb是内存型的非关系型数据库,可以支持海量的数据存储,特别是在大数据量的查询性能方面,比传统的数据库有较大的优势。和上一篇文章中同样的原因,也需要迁移到鲲鹏架构的服务器中。

2.迁移方案

2.1 原理

使用Mongodb副本集的方式进行不停机的数据迁移,多个Mongodb实例构成一个副本集,每个副本集有一个主节点和若干个副本节点,应用对主节点的数据修改都会同步给副本节点。在现有的3节点X86架构Mongodb副本集上,加入多个Arm架构的Mongodb实例,在完成数据同步后,依次对X86架构的副本集进行停机,最终使用3台Arm架构的Mongodb实例代替原先的3台X86架构的Mongodb实例,从而实现了不停机的数据迁移。

2.2 优点

迁移过程平滑,随时可以终止,不会造成业务中断等影响。

2.3 迁移步骤

步骤1:在ARM架构服务器上安装和X86架构同样版本的Mongodb实例。

步骤2:把原先X86架构下的Mongodb副本集密钥文件keyFile复制到ARM架构下同样的位置,设置该文件的权限,参考命令如下(假设文件名为auth.key,docker用户为systemd-coredump):

chown systemd-coredump:systemd-coredump auth.key

chmod 600 auth.key

步骤3:配置新的Mongodb实例,以副本集形式启动Mongodb,指定keyFile(假设文件名为auth.key),参考命令如下:

mongod --replSet rs --keyFile /etc/auth.key

如果使用Docker Composer,docker-compose.yaml添加启动命令:

command: mongod --replSet rs --keyFile /etc/auth.key

步骤4:启动ARM实例,然后登录副本集的主库,添加ARM架构实例作为新节点,添加时设置优先级和投票权都为0,参考命令如下:

rs.add( { host: "ip:port", priority: 0, votes: 0 } )

步骤5:等待新加入的Mongodb节点从主库同步数据,加入副本集的节点开始状态为STARTUP2,同步完成变为SECONDARY,可以通过如下的命令查看节点的状态:

rs.status()

        步骤6:新节点同步完毕,修改优先级和投票权,参考命令如下:

var cfg = rs.conf()

cfg.members[3].priority = 1

cfg.members[3].votes = 1

rs.reconfig(cfg)

      修改完毕后使用rs.config()()检查最新节点配置,确保修改成功,这样新节点就加入了副本集并开始提供服务。

        步骤7:观察系统运行一段时间(比如24小时),确保新的节点可以持续正常提供服务。

        步骤8:重复过程1到过程4,把剩下的两个ARM节点加入到副本集。

        步骤9:依次对X86架构节点进行停机下线,该过程可以持续几天时间,比如每天下线一个节点,确保从X86架构到ARM架构的平稳过度。

        步骤10:最终下线所有X86节点,从而完成Mongodb数据库的不停机迁移。

2.4 迁移周期

主要时间在新加的ARM架构副本集的搭建及数据同步上,该过程不影响业务的正常运行,在不停机的情况下,根据数据量不同一般几十分钟到几个小时即可完成数据同步。考虑到服务器和应用程序的安装和调试,根据软硬件环境和网络情况,整个迁移周期在三个工作日以内。

2.5 注意事项

  1. 首先选择对业务影响较小的数据库进行迁移,迁移后运行24小时以上,检查在新架构下有没有异常,无异常再进行其他数据库的迁移。
  2. 在迁移前做好数据库物理备份,并且保证X86架构节点在移出副本集后处于随时可用状态。
  3. 通知相关的开发、实施、业务处理人员,选择影响较小的时间段进行迁移。

3.备选方案

步骤1:在Arm架构服务器安装同版本的Mongodb数据库

      步骤2:对X86架构数据库进行全量备份,然后在Arm架构数据库恢复该备份。

      步骤3:应用停机,然后对X86架构数据库进行增量备份并复制到Arm架构数据库服务器;

      步骤4:在Arm架构数据库恢复增量备份。

      步骤5:修改应用配置文件(比如nacos)的数据库配置,指向Arm架构数据库,然后启动应用,检查系统是否正常。

      备选方案在ARM架构Mongodb实例和X86架构Mongodb实例无法同时组网时可以使用,正常组网情况下不建议使用。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。