「数据库选型」卫报从MongoDB迁移到Amazon RDS上的PostgreSQL

简介: 「数据库选型」卫报从MongoDB迁移到Amazon RDS上的PostgreSQL



《卫报》于2018年将其CMS的数据存储区从自我管理的MongoDB集群迁移到Amazon RDS上的PostgreSQL,以提供完全托管的解决方案。该团队进行了基于API的迁移,没有停机时间。

Guardian内部的CMS(称为Composer)用于存储文章,博客内容,照片库和视频,最初是在MongoDB上作为数据存储库构建的。在此之前是由Oracle数据库支持的供应商软件。每当必须迁移架构时,此设置都会停机。作为替代方案,该团队研究了各种NoSQL数据库,选择MongoDB的主要原因之一似乎是灵活性。他们最初托管在自己的数据中心,在中断后将MongoDB移至其AWS服务器。安装和管理脚本必须由Guardian的团队手写。他们选择了一份支持合同,并购买了OpsManager工具,该工具是用于管理MongoDB的前端应用程序。但是,由于不清楚的原因,该团队没有选择MongoDB的Atlas产品(这是一个“完全托管的数据库”)。OpsManager不管理部署。

迁移到AWS后,该团队面临两次MongoDB中断。其中一些原因是基本的系统管理问题,例如不允许NTP访问时间服务器以保持时钟同步。根据文章,其他问题涉及管理OpsManager本身以及难以获得供应商及时支持的困难。团队认为,迁移到数据库管理最少的解决方案最适合他们。

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

代理将所有流量实时定向到MongoDB API,并异步定向到Postgres API。记录并分析响应中的任何差异。为了确保新的API和后端可以容纳生产流量,运行了GoReplay流程以生成流量。GoReplay可以捕获流量并针对不同的环境(在这种情况下为预生产环境)重播。在预生产环境中完成了完整的迁移。生产迁移的最后一步是将DNS名称从代理的端点(Amazon ELB)切换到Postgres API(另一个ELB)。这使他们的客户可以正常运行。迁移后,由于尚未将其迁移到新的API,因此它们的集成测试失败。

相关文章
|
4月前
|
SQL 关系型数据库 MySQL
阿里云RDS云数据库全解析:产品功能、收费标准与活动参考
与云服务器ECS一样,关系型数据库RDS也是很多用户上云必买的热门云产品之一,阿里云的云数据库RDS主要包含RDS MySQL、RDS SQL Server、RDS PostgreSQL、RDS MariaDB等几个关系型数据库,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,帮助您解决数据库运维的烦恼。本文为大家介绍阿里云的云数据库 RDS主要产品及计费方式、收费标准以及活动等相关情况,以供参考。
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1038 152
|
5月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
5月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
SQL Java 数据库连接
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
479 0
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
|
SQL 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
285 0
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
|
存储 SQL 关系型数据库
MySQL---数据库从入门走向大神系列(五)-存储过程
MySQL---数据库从入门走向大神系列(五)-存储过程
286 0
MySQL---数据库从入门走向大神系列(五)-存储过程
|
数据库
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(3)
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系
334 0
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(3)
|
SQL 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查
350 0
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查
|
数据库
MySQL---数据库从入门走向大神系列(一)-基础入门(2)
MySQL---数据库从入门走向大神系列(一)-基础入门(2)
231 0
MySQL---数据库从入门走向大神系列(一)-基础入门(2)

推荐镜像

更多