我最近在Amazon RDS上成功设置了只读副本。尽管副本延迟似乎很大(通常> 60秒),但它一切运行良好。通过监视进程,似乎主/主DB上的所有UPDATE命令随后在副本/从属上执行。
这似乎令人惊讶,因为系统知道受影响的行数(在主服务器上),所以我假设它没有传递任何没有改变任何东西的查询。但是,即使这些也是在奴隶上执行的。
为什么这会和(如何)阻止这种情况发生?
答案 0 :(得分:2)
确定查询是相关的还是不相关的需要一点点智能;据说,影响/影响MASTER的所有查询都必须达到Read-Replica。
创建一个系统来确定从MASTER发送到Read-Replica要跳过哪个查询非常困难(恕我直言),因为
UPDATE students SET SCORE = 100 WHERE student_id = 100
可能会返回 0 row(s) affected
并且TRUNCATE TABLE student
将始终 返回
0 row(s) affected
因此,底线所有由MASTER处理的查询都应该再次处理Read-Replicas。