Postgresql 有一些有趣的监控工具,用于监控新的逻辑复制系统的进度,但我不是很了解它们。我知道的两个工具是:
pg_stat_replication
Run Code Online (Sandbox Code Playgroud)
它是兄弟姐妹:
pg_stat_subscription
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这些文档,但他们没有说明如何知道副本是否实际同步,并且解释这些表对我来说似乎并不明显。有人可以解释一下吗?
我经营一个非营利组织,致力于分享类似于维基百科的数据。
我们最近有一个客户想要我们的数据库的副本,我们意识到通过使用 PostgreSQL 的新逻辑复制,我们可以将我们的数据库表复制到他们控制的服务器上。
这对于完成我们共享数据的使命非常有用。它比提供慢速 API 好 100 倍。
我们为他们创建了一个这样的角色:
CREATE ROLE some_client WITH REPLICATION LOGIN PASSWORD 'long-password';
GRANT SELECT ON TABLE some_table TO some_client;
Run Code Online (Sandbox Code Playgroud)
我们为他们创建了一个 PUBLICATION,如下所示:
CREATE PUBLICATION testpublication FOR TABLE ONLY some_table;
Run Code Online (Sandbox Code Playgroud)
这样做有风险吗?我的分析是,这使他们可以选择访问他们正在复制到他们自己的服务器的表,但仅此而已。还有其他顾虑吗?如果有顾虑,是否有办法使这项工作发挥作用?我们有不想共享的表,但我们的大多数表只有公共数据。
我创建了一个逻辑复制 PUBLICATION 使用FOR ALL TABLES
. 现在我意识到我不想复制所有的表。我尝试从出版物中删除其中一个表格,但是:
mydb=# alter publication replicapublication drop table only migrations;
ERROR: publication "replicapublication" is defined as FOR ALL TABLES
DETAIL: Tables cannot be added to or dropped from FOR ALL TABLES publications.
Run Code Online (Sandbox Code Playgroud)
我已经完成了数百 GB 的巨大同步,而且我不想从新出版物开始。
问题: 1、本刊有赎回的希望吗?2. 如果没有,有没有办法创建一个完全同步的新发布,而不用完全同步重新开始?
谢谢。