如何水平扩展 Amazon RDS 实例?

Posted

技术标签:

【中文标题】如何水平扩展 Amazon RDS 实例?【英文标题】:How to scale horizontally Amazon RDS instance? 【发布时间】:2015-04-07 17:36:59 【问题描述】:

如何横向扩展亚马逊 RDS 实例? EC2 和负载均衡器+自动扩展非常容易实现,但如果我想扩展亚马逊 RDS? 我可以用更强大的实例升级我的 RDS 实例,或者我可以创建一个只读副本,我可以将 SELECT 查询定向到它。但是在这种模式下,如果我有一个面向阅读的 Web 应用程序,我不会扩展任何东西。那么,我可以创建具有自动缩放功能的 RDS 只读副本并使用负载均衡器对其进行平衡吗?

【问题讨论】:

胡思乱想,不知道是什么阻止你这样做。 iheavy.com/2012/04/09/autoscaling-mysql-on-amazon-ec2 【参考方案1】:

您可以使用 HAProxy 对 Amazon RDS 只读副本进行负载平衡。检查此http://harish11g.blogspot.ro/2013/08/Load-balancing-Amazon-RDS-MySQL-read-replica-slaves-using-HAProxy.html。 希望这会有所帮助。

【讨论】:

【参考方案2】:

注意 RDS 涵盖多个数据库引擎 - mysql、postgresql、Oracle、MSSQL。

一般来说,您可以扩展(更大的实例)、使用只读数据库或分片。如果您使用的是 mysql,请查看 AWS Aurora。考虑以最佳方式使用数据库——也许与 memcached 或 Redis 结合使用(两者都在 AWS Elasticache 下可用)。考虑使用搜索引擎(lucene、elasticsearch、cloudsearch)。

一些通用资源:

http://highscalability.com/ https://gigaom.com/2011/12/06/facebook-shares-some-secrets-on-making-mysql-scale/

【讨论】:

谢谢,我正在使用 mysql。据我了解,RDS 实例不支持自动缩放器和负载平衡。我想我会使用 memcached+readonly-db。应该够了:)【参考方案3】:

如果您使用的是 PostgreSQL,并且您的工作负载可以按某个键进行分区并且不需要复杂的事务,那么您可以查看pg_shard 扩展。 pg_shard 允许您创建跨多个服务器分片的分布式表。分布式表上的查询将透明地路由到正确的分片。

即使 RDS 没有安装 pg_shard 扩展,您也可以使用 pg_shard 扩展在 EC2 上设置一个或 PostgreSQL 服务器,并将 RDS 节点用作工作节点。 pg_shard 节点只需要存储一点点元数据,这些元数据可以备份在一个工作节点中,因此它们的维护相对较低,并且可以横向扩展以适应更高的查询率。

包含指向 CloudFormation 模板的链接以自动设置所有内容的指南位于:https://www.citusdata.com/blog/14-marco/178-scaling-out-postgresql-on-amazon-rds-using-masterless-pg-shard

【讨论】:

以上是关于如何水平扩展 Amazon RDS 实例?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 chromebook 访问 Amazon RDS 实例?

如何释放 MySQL Amazon RDS 实例中的空间

如何将数据库从 Amazon RDS MySQL 实例导出到本地实例?

如何从我的 springboot 应用程序的 Docker 映像连接到 Amazon RDS 实例?

如何更改 Amazon RDS 的可公开访问选项?

Amazon RDS:在 CloudWatch 中绘制实例数