英国卫报联手AWS:从MongoDB迁移到PostgreSQL

为了获得一个全托管的解决方案,英国卫报在2018年将CMS的数据存储从一个自托管的MongoDB集群迁移到了Amazon RDS上的PostgreSQL。团队在没有停机的情况下进行了基于API的迁移。

英国卫报的内部CMS(名为Composer)存储着文章、博客内容、照片库和视频,它最初是以MongoDB为数据存储构建的。在此之前,用的是一个后台是Oracle数据库的供应商软件。在这种设置下,每当必须迁移模式时,都需要停机时间。作为替代方案,团队研究了各种NoSQL数据库,选择MongoDB的其中一个关键原因似乎是灵活性。MongoDB最初托管在他们自己的数据中心里,在一次宕机后,他们将其转移到了AWS服务器上。安装和管理脚本必须由卫报的团队手写。他们选择了一项支持合同,并购买了OpsManager工具,这是一个管理MongoDB的前端应用程序。然而,不清楚因为什么原因,该团队没有选择MongoDB Atlas服务,这是一个“全托管的数据库”。OpsManager不管理部署。

在迁移到AWS之后,团队遇到了两次MongoDB宕机。其中一些原因是基本的系统管理问题,比如不允许NTP访问时间服务器以保持时钟同步。根据这篇文章,还有一些和OpsManager本身管理困难以及很难从供应商那里获得及时的支持有关。其团队觉得,迁移到需要最少数据库管理工作的解决方案最适合他们。

该团队选择PostgreSQL的原因是,作为Amazon RDS上的托管数据库,它非常成熟,而且支持jsonb数据类型。Jsonb类型允许对JSON对象中的字段进行索引。迁移计划是在Postgres上编写一个新的API,并使用一个代理向这两个API发送流量,使它们对于新传入的数据保持同步。使用API迁移现有数据,然后将代理切换到新的API。他们之前从Oracle迁移也是使用类似的方法完成的。为了跟踪迁移过程,迁移脚本日志被推送到Elasticsearch。在此过程中,他们还改进了他们的结构化日志。

代理实时地将所有流量定向到MongoDB API,并异步地定向到Postgres API。响应中的任何差异都会被记录并分析。为了确保新的API和后端能够支撑生产流量,他们运行GoReplay进程来生成流量。GoReplay可以捕获流量,并在不同的环境下进行回放——在本例中是预生产环境。他们在预生产环境上完成了完整的迁移过程。生产迁移的最后一步是将DNS名称从代理的端点(一个Amazon ELB)切换到Postgres API(另一个ELB)。这使得它们的客户端可以在不做任何更改的情况下正常工作。迁移之后,他们的集成测试失败了,因为他们没有迁移到新的API。

还有其他一些组织出于各种原因从MongoDB迁移到了PostgreSQL。

查看英文原文:The Guardian’s Migration From MongoDB to PostgreSQL on Amazon RDS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值