Amazon RDS常见问题指出,我的应用程序将stream量分配给只读副本。
我的网站主要有访问者 – 未login的用户。 所以,我想大部分数据库活动都被读取。 我应该将MySQL数据库连接设置为未login用户的只读副本和login用户的源RDS实例?
我的单个RDS实例为多个网站提供支持,但是我们有点恐慌,不知道从哪里开始。
如果我要走的方向是不正确的,那么请指点一下正确的道路
这一切都取决于你的应用程序是什么以及如何连接到数据库和运行他们的查询。
我看到的大多数应用程序都设置了两个数据库连接池/ 一个用于阅读,一个用于书写,应用程序代码将查询指向适合查询的池。 大多数应用程序不是这样写的,直到他们需要故障转移,所以这可能需要一些编码。
您可能可以使用mysql-proxy将特定查询过滤到只读后端。
如果您的负载configuration文件允许,您还可以通过为每个应用程序运行单独的数据库实例,而不是通过读取分割负载,从而获得更直接的收益。
您可以使用路由53将stream量分配给您的只读副本。 基本上你可以在你的vpc中创build一个域名,然后configuration路由53来把请求转发到你所在的N个副本。 下面的链接有一个设置过程的video演练,它只需要几秒钟的设置。
https://aws.amazon.com/premiumsupport/knowledge-center/requests-rds-read-replicas/
然后在你的数据库连接URL中使用路由53域名。
多可用!=只读副本,两个不同的东西。 MultiAZ创build一个“隐形”待机,仅在故障转移/维护期间使用,即=可用性。 只读副本纯粹用于加载/性能。
我不认为你可以指定你的stream量去读或写操作。 当你使用RDS时,这是一个折衷。
但是,对于Load问题,我认为您应该启用(我相信您已经做到了)RDS中的多可用区复制。
这将创build只读副本,并将用于故障转移和冗余目的。
另外,如果您的stream量仍然受到影响,则应考虑使用预configuration的IOPS。 这将大大提高您的数据库的效率和性能。