写点什么

英国卫报联手 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:377258
用户头像

发布了 779 篇内容, 共 534.0 次阅读, 收获喜欢 1578 次。

关注

评论

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

JavaScript 类型化数组

空城机

JavaScript 大前端 5月日更 类型化数组

霸榜GitHub的阿里内部Spring Boot实战文档到底有多强?

Java 架构 面试 微服务

并发王者课-青铜1:兵分三路-从创建线程开始

MetaThoughts

Java 多线程 高并发 Java高并发 每周二四六更新

5分钟速读之Rust权威指南(四)

wzx

JavaScript rust

怎么学

Nydia

学习

数据挖掘从入门到放弃(五)seaborn 的数据可视化

数据社

机器学习 5月日更

ConcurrentHashMap

ltc

ConcurrentHashMap

数字化战争即将开启,区块链将成为有效防护壁垒

CECBC

Dubbo 负载均衡

青年IT男

dubbo

《冰河的渗透实战笔记》电子书,442页,37万字,正式发布!!

冰河

网络安全 信息安全 渗透测试 网络攻防 互联网技术

docker(centos系统)安装vim工具

liuzhen007

Docker 5月日更

Flink CEP 监测刷屏用户

五分钟学大数据

flink 5月日更

架构实战营 - 模块 4- 作业

carl

从火星的古海洋,读懂蓝星的数据湖之变

脑极体

明天重新杨帆起航

IT蜗壳-Tango

5月日更

url踩坑记录

ES_her0

5月日更

成功产品三要素

lenka

5月日更

因你不同,2021 阿里云开发者大会重磅开启 @ 所有开发者!

阿里巴巴云原生

开发者 云原生 活动

Android面试题!深入理解JVM的核心知识点,值得一读!

欢喜学安卓

android 程序员 面试 移动开发

从非洲血库到热带雨林:为什么普惠联接是社会的数字化支点?

脑极体

浪潮云向前进一步,又向后让一步

云计算

架构学习笔记:架构定义

风翱

架构 5月日更

❄️【程序员必看系列】开源项目有盈利模式指南

码界西柚

开源 程序员 盈利模式 5月日更

阿里工作6年,熬到P7就剩这份学习笔记了,已助朋友拿到7个Offer

Java 程序员 架构 面试

Python 协程

若尘

协程 Python编程 5月日更

位列第五大生产要素,大数据该如何突破隐私安全魔咒?

CECBC

网络攻防学习笔记 Day18

穿过生命散发芬芳

5月日更 网络攻防

android插件化面试,渣本逆袭大厂面经分享,震撼来袭免费下载!

欢喜学安卓

android 程序员 面试 移动开发

世界电信日 | 英特尔5G赋能数字化转型的实现之道

E科讯

2千亿级超大模型的构建,能否突破中文场景的极限

这不科技

人工智能 nlp

Unix/Linux 编程:网络编程之 线程池

赖猫

Linux Linux服务器开发 Linux网络编程

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