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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 MongoDB,通用型 2核4GB
简介: 「数据库选型」卫报从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,因此它们的集成测试失败。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
19 0
|
1天前
|
前端开发 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
15 0
|
1天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
9 0
|
1天前
|
SQL 关系型数据库 Serverless
阿里云关系型数据库RDS
阿里云关系型数据库RDS
15 2
|
1天前
|
人工智能 NoSQL atlas
MongoDB Atlas Vector Search与Amazon Bedrock集成已全面可用
MongoDB Atlas Vector Search知识库与Amazon Bedrock的最新集成,将极大加速生成式AI应用的开发
|
1天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
22 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
1天前
|
存储 NoSQL MongoDB
MongoDB如何创建数据库
MongoDB如何创建数据库
|
1天前
|
存储 NoSQL 关系型数据库
Percona XtraBackup是否支持MongoDB数据库备份?
【5月更文挑战第13天】Percona XtraBackup是否支持MongoDB数据库备份?
18 1
|
1天前
|
NoSQL atlas MongoDB
Nosql数据库MongoDB的使用场景
【5月更文挑战第5天】 MongoDB是全球性的多云数据库,可在私有、公共和混合云中运行,提供高可用性、扩展性和合规性。 安全特性包括认证、授权、审计、网络隔离和加密。可提供跨云操作、可视化工具、搜索功能和数据湖支持,适用于现代应用开发,包括边缘数据处理。
13 1
|
1天前
|
JSON NoSQL MongoDB
理解Nosql数据库的mongodb
【5月更文挑战第5天】MongoDB是2009年发布的一款通用型NoSQL数据库,结合了关系模型和NoSQL的优点,适用于各种现代应用。其特点包括图形界面、数据服务、云基础设施集成(AWS, Azure, Google Cloud)。它具备全面的查询能力、ACID事务、可调整的一致性保证,并有多语言驱动及工具,可在任何地方运行。
17 4
http://www.vxiaotou.com