如何水平扩展 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 实例?
如何将数据库从 Amazon RDS MySQL 实例导出到本地实例?