开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

  • 2019-01-11
  • 本文字数:1081 字

    阅读完需:约 4 分钟

英国卫报联手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


2019-01-11 10:377215
用户头像

发布了 760 篇内容, 共 507.7 次阅读, 收获喜欢 1567 次。

关注

评论

发布
暂无评论
发现更多内容

多线程与高并发—— 源码解析 AQS 原理

王小凡

Java 程序员 AQS JVM 多线程

MQTT over QUIC:下一代物联网标准协议为消息传输场景注入新动力

EMQ映云科技

车联网 物联网 IoT mqtt 弱网

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(三)

Spring认证

Java spring spring认证

[网络]跨区域网络的通信学习IPv4地址的分类和计算

flow

签约计划第三季

【干货】如何建立支持和产品之间的密切关系?

Geek_da0866

一文简述:SRv6基本原理

穿过生命散发芬芳

7月月更 SRv6

认识中小型局域网MAC地址及分类

flow

8月月更

[网络]跨区域网络的通信学习路由表的工作原理

flow

签约计划第三季

C#/VB.NET:在PDF中插入文本水印

Geek_249eec

C# PDF VB.NET 水印

GIS数据漫谈(六)— 投影坐标系统

ThingJS数字孪生引擎

图的连通性之普里姆算法和克鲁斯卡尔算法

乔乔

7月月更

云原生编程挑战赛火热开赛,51 万奖金等你来挑战!

阿里巴巴云原生

阿里云 云原生编程挑战赛

私有化部署的即时通讯平台,为企业移动业务安全保驾护航

BeeWorks

直播|StarRocks 技术内幕 :低基数全局字典优化

StarRocks

数据库

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务

Spring认证

spring Spring JPA

远光软件获得阿里云产品生态集成认证,携手阿里云共建新合作

阿里巴巴云原生

阿里云 云原生 合作

克服“看牙恐惧”,我们用技术改变行业

Lily

顿悟!百度强推的Redis天花板笔记,原来数据库是这样理解的

冉然学Java

分布式 redis' 技术专题合集 #java redis 底层原理

阿里云 Serverless 异步任务处理系统在数据分析领域的应用

阿里巴巴云原生

阿里云 Serverless 数据分析 云原生

为什么客户支持对SaaS公司很重要?

Geek_da0866

有奖征文 | 2022 云原生编程挑战赛征稿活动开启!

阿里巴巴云原生

阿里云 云原生编程挑战赛

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(二)

Spring认证

Java spring

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(五)

Spring认证

认识中小型局域网WLAN

flow

签约计划第三季

从0到1:基于云开发的投票小程序开发笔记

CC同学

小程序云开发 投票小程序

深圳线下报名|StarRocks on AWS:如何对实时数仓进行极速统一分析

StarRocks

数据库

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(四)

Spring认证

Java spring

震撼首发!2022全网最全465页Java性能调优笔记,吃透轻松涨薪15w

了不起的程序猿

java 14 java程序员 性能调优 Java性能调优

架构实战营第8模块作业

Geek_53787a

以数字化转型为契机,3C企业如何通过SRM供应商云协同平台实现高效协同?

数商云

数字化转型 企业数字化 SRM系统

跨区域网络的通信学习静态路由

flow

签约计划第三季

英国卫报联手AWS:从MongoDB迁移到PostgreSQL_数据库_Hrishikesh Barua_InfoQ精选文章