【问题标题】:Postgresql pg_dump adding public to all schema namesPostgresql pg_dump 将公共添加到所有模式名称
【发布时间】:2018-12-15 09:52:03
【问题描述】:

我仍然是 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”,而在只读节点上它转储为“public.foo”。我不明白为什么会这样……我在类似的设置中做了一个 9.2 Postgresql 集群,但没有看到这个问题。我在主节点的公共架构中没有表...

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

非常感谢!

【问题讨论】:

  • 什么是确切版本的Postgres安装在master和slave上? (select version();)
  • 有区别。从站正在运行 9.4.15 (Debian 4.9.2-10),从站正在 x86_46 (Debian 4.9.2-10+deb8u1) 上运行 9.4.18。我们的环境是debian Jessie。谢谢“a_horse_with_no_name”...如果没有选择版本的差异,我不会明白这一点!
  • 最新补丁版本中的一些安全更改影响了转储的编写方式。因此,与 9.4.15 相比,9.4.18 的行为有所不同。检查release notes
  • 我已经运行了 apt-get dist-upgrade,但显然我和 dpkg 都没有重新启动 Postgres 守护进程。我以为它们都已经更新到 9.4.18,但是您的“选择版本();”确定了问题。我重新启动了 Postgres,现在转储是相同的。我会将此移至答案。

标签: postgresql pg-dump


【解决方案1】:

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

psql -c "select version();"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多