我在2台Postgresql 9.2.1.4计算机(主站和从站)上运行同步复制
以下是配置:
主参数
synchronous_commit=on
synchronous_standby_names = '*'
no synchronous_replication_timeout parameter, so 10 sec by default
no synchronous_replication parameter, so async by default
wal_level = hot_standby
max_wal_senders = 5
wal_keep_segments = 32
hot_standby = on
从属参数
no synchronous_commit, so by default on
no synchronous_replication_service parameter, so by default async
max_wal_senders = 5
wal_keep_segments = 32
hot_standby = on
应用程序在Master上插入记录,并使用pgpool从Master或Slave中读取。有时它恰好在插入记录之后,应用程序看不到插入的记录(可能是从插入的另一个db主机读取), 但是当我们在数据库中记录后,我们会检查它。
在 http://wiki.postgresql.org/wiki/Synchronous_replication#SYNCHRONOUS_REPLICATION_OVERVIEW 我发现: “如果在超时内没有收到回复,我们会发出通知然后返回成功提交(不可能采取其他行动)。”
我的问题
Master提交事务但奴隶根本没有提交?
如果是这样,那么交易似乎并不真正同步......
我应该在
中设置什么值synchronous_replication(在master上) = async(def)| recv | fsync |应用
和
synchronous_replication_service (on Slave)
= async (def) | recv | fsync | apply
为了确保我确实有propper同步复制设置 (所以我确信数据在两台服务器上提交或在两台服务器上回滚)
他们都准备申请了吗?
答案 0 :(得分:0)
您当前引用的Wiki页面描述了一个未实现同步复制的补丁,如果您有兴趣,请参阅此处: http://archives.postgresql.org/pgsql-hackers/2010-12/msg02484.php
因此,您对GUC“synchronous_replication_timeout”或“synchronous_replication_service”的问题与PostgreSQL的已发布版本无关,因为最终提交的同步复制版本与该Wiki页面中描述的版本大不相同。很抱歉,我会看到有关清理该Wiki页面的信息。您想要的信息是: http://www.postgresql.org/docs/current/static/warm-standby.html#SYNCHRONOUS-REPLICATION