我最近在 Amazon RDS 上成功设置了只读副本。它一切正常,尽管副本滞后似乎很大(通常 >60 秒)。从监控进程看来,主数据库/主数据库上的所有更新命令随后都在副本/从数据库上执行。
这似乎令人惊讶,因为系统知道受影响的行数(在 master 上),所以我假设它没有传递任何没有改变任何内容的查询。然而,即使是这些也是在slave上执行的。
这是为什么以及(如何)阻止这种情况发生?
最佳答案
识别查询是相关的还是不相关的需要一点点智慧;话虽如此,重要的是,所有影响/影响 MASTER 的查询也有望命中只读副本。
创建一个系统来确定要跳过哪个查询从 MASTER 发送到只读副本真的很困难(恕我直言,这是不可能的),因为
UPDATE students SET SCORE = 100 WHERE student_id = 100
可能会返回 0 行受影响
还有 TRUNCATE TABLE student
将始终 返回
0 行受影响
因此,归根结底,所有由 MASTER 处理的查询都应该再次由只读副本处理。
关于mysql - 运行不相关查询的 AWS RDS MySQL 只读副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540186/