【发布时间】:2013-01-28 08:28:21
【问题描述】:
我们使用 Postgres 作为我们项目的数据库,发现流式复制适合我们的异步工作需求。我们有一台服务器处于只写模式(MASTER),其他服务器处于只读模式(SLAVES)。
在大多数情况下,我们将数据发送到 MASTER 并忘记它。但有时我们希望在继续之前确保当前块在主从之间同步。对于新行(INSERTS),这很简单,脚本可以检查简单的 SELECT 查询是否出现了新行。但是对于 UPDATE,它就成了问题。
那么,有没有简单合法的方法来检查slave是否赶上master呢?我知道每条记录都应该有自己的内部 id,但不确定服务器之间是否相同。
我们使用配置非常相似的 Postgres 9.2 described in this great article。
【问题讨论】:
-
为什么
UPDATEs 有问题?你能显示你正在使用的代码吗? -
我认为
pg_stat_replication视图应该可以做到这一点,但我之前没有使用过:postgresql.org/docs/current/static/… -
@vyegorov: 插入顺序如下: 1. write_connection("insert to ..."), get record_key 2. read_connection("select * from ... where key =record_key ") 3.如果未找到,则延迟后再次执行第 2 步。想要更新类似的东西,但不想检查每一列。寻找更通用的方法。
-
我觉得太复杂了。我建议按照@a_horse_with_no_name 的建议查看
pg_stat_replication视图。
标签: postgresql synchronization replication master-slave