写点什么

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

发布了 838 篇内容, 共 584.2 次阅读, 收获喜欢 1601 次。

关注

评论

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

2021年Java技术下半场在哪,35岁技术人如何转型做管理

Java 面试 后端

2021年Java面经分享,别再说你不会JVM性能监控和调优了

Java 面试 后端

【等保知识】十个等保常见问题解答汇总

行云管家

网络安全 信息安全 等级保护 过等保 数据审计

设计 | ClickHouse 分布式表实现数据同步

RadonDB

数据库 Clickhouse

Github上线仅六天,收获Star超55K+,这套笔记足够你拿下90%以上的Java面试!

Java 架构 面试 后端 计算机

2021年Java者未来的出路在哪里,Java开发校招面试题

Java 面试 后端

2021年Java者未来的出路在哪里,让人抓狂的Nginx性能调优

Java 面试 后端

IT运维和自动化运维以及运维开发有啥不同?能解释下吗?

行云管家

互联网 运维 IT运维 自动化运维 云运维

阿里巴巴首发:Java核心框架指导手册,1小时点击量破千万!

Java 程序员 架构 面试 计算机

2021年Java开发者常见面试题,初级Java面试题及答案

Java 面试 后端

2021年Java面试心得,整理出这份8万字Java性能优化实战解析

Java 面试 后端

2021年冲刺年薪40w,Java从基础到高级知识点汇总

Java 面试 后端

2021年Android网络编程总结篇,retrofit面试

android 面试 移动开发

2021年Java面经分享,程序员必备技能:时间复杂度与空间复杂度的计算

Java 面试 后端

2021年Java高级面试题总结,2021最新大厂高频微服务面试总结

Java 面试 后端

2021年一起努力应对互联网寒冬吧,字节跳动Java高级工程师

Java 面试 后端

2021年互联网大厂Java笔经,Java重点知识大全

Java 面试 后端

2021年互联网大厂Java笔经,Java程序员如何有效提升学习效率

Java 面试 后端

2021年Android程序员职业规划,阿里P7大牛亲自讲解

android 面试 移动开发

2021年Java程序员职业规划,华为Java面试题目

Java 面试 后端

2021年Java笔试题总,教你抓住面试的重点

Java 面试 后端

2021年Java网络编程总结篇,红黑树详细分析(图文详解)

Java 面试 后端

2021年一起努力应对互联网寒冬吧,Java程序员面试笔试宝典答案

Java 面试 后端

如何画UML,几种简单的模型分析

编程 架构 面试 后端

谁是中国最受赞赏的创投机构?

创业邦

2021年互联网大厂Java笔经,Java自学宝典电子书下载

Java 面试 后端

2021年你与字节跳动只差这份笔记,大神码了2000页Spring全家桶笔记

Java 面试 后端

2021年Android笔试题总,详解Android架构进阶面试题

android 面试 移动开发

代码检查规则背景及总体介绍

百度开发者中心

最佳实践 代码规则

Android音频架构| 社区征文

轻口味

android 音视频 新春征文

2021年京东Java岗面试必问,我在华为做Java外包的真实经历

Java 面试 后端

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