我们有一个单独的RDS实例来处理会话状态表,但是发现会话DB负载非常低。如果我们可以将实例处理会话转换为主数据库的读取副本,那么我们可以将其用于只读任务,即使在副本中有很大的延迟也是安全的。
有没有人在RDS上做过这样的事情(可能而且安全吗)?我应该注意任何严重的副作用吗?更好地理解这一点的任何链接或帮助都会有所帮助。
http://aws.amazon.com/rds/faqs/#95试图回答这个问题,但我正在寻找更多的见解。
发布于 2017-05-27 06:36:38
是的,这是可能的。我使用RDS成功地使用了它,用于本地缓存的特定情况。
您需要将复制副本上的read_only参数设置为0。我必须重新启动服务器才能使该参数起作用。
如果使用不同表名,效果会很好,因为RDS不允许设置:replicate-ignore-table参数。
请记住,master<>slave之间不能有任何数据冲突。如果有一条语句在MASTER上运行正常,但在SLAVE上失败,那么您就中断了复制。例如,当您首先在SLAVE上创建表,然后在一段时间后将该表添加到MASTER中时,可能会发生这种情况。CREATE语句将在MASTER上干净地工作,但在SLAVE上失败,因为表已经存在。
假设您需要非常小心,允许您的应用程序写入SLAVE。如果您忘记/或犯了一个错误,并开始为您的一些其他数据写入读取副本,最终您可能会丢失数据或遇到难以调试的问题。
发布于 2014-06-24 22:15:28
没有什么可添加的--在纯读取副本上真正有意义的唯一正常情况是,如果主要用于报告或其他读取密集型的情况,则添加一些索引之类的东西。
如果您正在尝试预计算大量数据并修改读取副本上的内容,则需要非常小心,不要更改数据--如果读取不再一致,那么您就有麻烦了:)
如果你想知道如果你改变从服务器上的数据,而主服务器试图更新它,会发生什么,那么你已经走错了路。
不要这样做,除非你真的知道你在做什么,你知道所有的后果。
https://stackoverflow.com/questions/14405163
复制相似问题