我还是Postgresql的相对新手,如果这是简单的无知,请原谅。
我已经按照集群实验室文档设置了一个Postgres v9.4的活动/只读起搏器集群。
我正在尝试验证两个数据库是否确实同步。我正在两台主机上进行转储,并检查输出之间的差异。我正在使用的命令是:
pg_sql -U myuser mydb >dump-node-1.sql
Pacemaker将数据库状态显示为“同步”,并且直接查询Postgres似乎也表明同步良好...(主机.59是我的只读备用节点)
psql -c "select client_addr,sync_state from pg_stat_replication;"
+---------------+------------+
| client_addr | sync_state |
+---------------+------------+
| 192.16.111.59 | sync |
+---------------+------------+
(1 row)
但是,当我在只读主机上进行转储时,最终所有表都具有“ public”。添加到名称的前面。因此,主节点上的表foo转储为“ foo”,而在只读节点上,表foo转储为“ public.foo”。我不明白为什么会这样...我已经在类似的设置中完成了9.2 Postgresql集群,但是没有看到这个问题。我在主节点上的公共架构中没有表...
希望有人可以帮助我了解发生了什么事。
非常感谢!
答案 0 :(得分:0)
对于每个a_horse_with_no_name,相比9.4.15,9.4.18中的安全更新更改了转储的写入方式。我没有发现一个节点仍在运行旧版本。确定该问题的命令是他的运行建议:
psql -c "select version();"