Database 使用复制在集群之间迁移mongodb是否可行?
我们有一个托管mongodb 3.0.11集群运行在Compose上,具有约300gb的数据(称为C0)。我们希望将此数据移动到在GCP上运行的自我管理mongodb 4.x集群(称为C1)。我已经尝试了一些用于克隆/同步DBs的github repo,但没有一个能够可靠地用于我的测试(老实说,我不确定是否要使用这些未经严格测试的repo来迁移我们的生产数据) 在阅读有关副本集、oplog等的mongodb文档时,我突然想到,也许我们可以让mongodb通过其内置的relica集成员添加过程为我们进行迁移。然而,由于我不是mongodb专家,我不知道这是否是一个可行的解决方案 以下是我感兴趣的内容-mongodb专家请评论这是否可行(如果您有任何基于经验的建议):Database 使用复制在集群之间迁移mongodb是否可行?,database,mongodb,migration,database-migration,Database,Mongodb,Migration,Database Migration,我们有一个托管mongodb 3.0.11集群运行在Compose上,具有约300gb的数据(称为C0)。我们希望将此数据移动到在GCP上运行的自我管理mongodb 4.x集群(称为C1)。我已经尝试了一些用于克隆/同步DBs的github repo,但没有一个能够可靠地用于我的测试(老实说,我不确定是否要使用这些未经严格测试的repo来迁移我们的生产数据) 在阅读有关副本集、oplog等的mongodb文档时,我突然想到,也许我们可以让mongodb通过其内置的relica集成员添加过程为我
- 将C1中的两个mongodb实例作为优先级为0的副本集成员添加到C0
- 等待C1.1成员更新
- 进入“维护模式”-数据库访问客户端关闭
- 强制将C1.1中的一个成员升级为主成员
- 从副本集中删除所有C0.member
- 使用C1副本集的新连接字符串重新启动数据库客户端
想法?我强烈建议不要通过几个主要版本将集群迁移与升级结合起来。单独处理这些任务将有助于您在排除故障时限制更改的范围 如果您使用兼容的MongoDB服务器版本,并且能够将所有成员添加到同一副本集中,则可以使用您概述的常规方法在集群之间进行迁移。目前,滚动升级只支持相邻的主要服务器版本,因此,如果您的起点是MongoDB 3.0.x,那么可以直接添加到3.0.x副本集中的最新版本将是3.2.x。如果您的最终目标是4.0.x,那么您必须从3.2=>3.4、3.4=>3.6升级到3.6=>4.0。包含每个主要版本的特定先决条件、升级过程和兼容性信息 DBaaS提供程序通常不允许添加外部自管理成员,因为这可能会损害它们管理的集群的安全性和稳定性。但是,DBaaS提供程序通常具有自动化功能,可以帮助您就地升级,因此您可能希望在迁移到自管理之前利用这一点 从DBaaS进行实时迁移的最佳选择是创建一个可以访问复制oplog的用户,并找到一个适合您的用例和源/目标服务器版本的迁移工具。对于生产环境,我会小心尝试跨多个主要版本(如3.0.x到4.0.x)进行实时迁移,并鼓励使用单独的升级步骤进行相同版本的迁移(3.0.x=>3.0.x) 作为一般做法,我将:
- 查看您正在计划的服务器和驱动程序升级的所有版本、升级和兼容性说明
- 确保使用兼容的驱动程序版本,并在升级服务器版本之前升级驱动程序/应用程序代码
- 在具有代表性的登台/QA环境中使用生产数据备份测试升级过程
- 使用升级的驱动程序/服务器版本和具有代表性的工作负载测试您的应用程序,以查找潜在的问题,如性能下降