Postgresql pg_dump将public添加到所有模式名称

时间:2018-07-06 18:59:27

标签: postgresql pg-dump

我还是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集群,但是没有看到这个问题。我在主节点上的公共架构中没有表...

希望有人可以帮助我了解发生了什么事。

非常感谢!

1 个答案:

答案 0 :(得分:0)

对于每个a_horse_with_no_name,相比9.4.15,9.4.18中的安全更新更改了转储的写入方式。我没有发现一个节点仍在运行旧版本。确定该问题的命令是他的运行建议:

psql -c "select version();"