AWS RDS MySQL读取副本-我是否需要更新我的API以指向任何仅在读取的URI的副本



这是我第一次使用read副本,所以请与我一起使用。我在这里尝试了多次搜索,但都没有成功。

我知道RDS上的主数据库实例和读取副本是如何实现的。复制工作得很好,我可以毫无问题地连接到这两个实例。我的问题有两个方面。

  1. 是否需要更新API模型,以便将只读操作定向到复制副本
  2. 有什么技巧可以从这个设置中获得最佳性能吗?我可以调整master上的索引吗?这样写命令的索引就比读取所需的表少吗?最后,我的一些模型读取数据集,返回值,然后将活动记录在审计日志表中。我是否需要将此功能拆分,以便在主写入数据库上进行日志记录活动

感谢这里的任何指导。

这取决于情况。复制副本总是稍微落后于其源实例,因此,如果您的查询要求始终读取当前数据,则需要从源实例读取。

不同的查询,即使是在你的单个应用程序中,在这方面也会有不同的需求。因此,您确实需要根据具体情况决定哪个查询可以从读取副本实例中读取。

我写了一篇关于这方面的演示:MySQL中的读写拆分或视频。

关于性能,在每个实例的同一个表上可能有不同的辅助索引。索引取决于要运行的查询,因此必须首先决定要在源和副本上运行的查询。

但是,请考虑,如果读取的复制副本由于某种原因脱机,或者落后太多,您可能希望能够在源实例上运行相同的查询,直到复制副本再次准备就绪。在这种情况下,您希望在两者上都有相同的索引,否则您的查询将运行得非常慢。

另一种可能性是源实例由于某种原因而死亡。在云中,你必须始终有一个计划,让资源在短时间内消失,包括数据库!它发生了。因此,如果源实例失效,读取的副本可能会作为新的源接管。但是,如果它有不同的索引、不同的表、不同的实例大小或其他什么,那么它可能不准备成为替代品。

通过尽可能多的方式使源和复制副本相同会更简单。要跟踪的详细信息更少,而且您已经为故障切换做好了准备。

最新更新