问题标签 [pglogical]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1059 浏览

postgresql - 使用 pglogical 进行 Postgres 复制:错误:与另一端的连接已终止

在 2 个 Postgres 实例之间复制时出现此错误(在副本上):

ERROR: connection to other side has died

这是副本/订阅者的日志:

登录主/提供者:

在主/提供者上配置:

在副本/订阅者上配置:

我总共订阅了 18 个模式的 18 个。一开始它似乎工作得很好,但很快就恶化了,一些订阅开始在downreplicating状态之间反弹,上面发布了错误。

问题

可能的原因是什么?我需要更改我的 Pg 配置吗?

另外,我注意到在进行复制时,master/provider 上的 CPU 使用率非常高。

提前致谢!

0 投票
0 回答
93 浏览

pglogical - 我将如何使用来自下游数据库的 pglogical?

我想使用 pglogical 复制一组表,但我想在主数据库下游进行所有更改 - 为避免风险,我不想对主数据库进行任何修改。我也想现在开始使用 pglogical,以便我们熟悉这项技术,并可以在我们的下一个版本中将它包含在我们所有的数据库中。

我不需要不断更新,所以我想出了一个计划,一个 cron 工作:

  1. 关闭流复制到备用
  2. 使这个备用服务器成为逻辑复制的主服务器(仅用于逻辑复制,无写入)
    • 停止 postgresql
    • 复制数据目录
    • 进行配置更改
    • 启动postgresql
    • 创建 pglogical 扩展
  3. 赶上逻辑复制
  4. 使该数据库成为流式备用数据库,无需再次进行逻辑复制
    • 停止 postgresql
    • 用以前的副本替换数据目录
    • 配置更改
    • 启动postgresql

我的问题 - 这种方法是否有意义?有没有一些我完全想念的简单方法来完成这个?

0 投票
1 回答
1006 浏览

postgresql - 使用 pglogical 复制插入是否需要主键?

我尝试使用 pglogical 设置一个简单的主 > 从复制。pglogical文档提到需要一个主键来复制更新和删除。由于我一个都不需要,所以我在提供者处设置了一个复制集,如下所示:

然后我添加了我的表:

我的订阅者设置如下:

有了这个设置和这样的表格布局:

只有结构被复制。

只要我添加一个主键:

一切都按预期工作。

由于我想存储高频时间序列(使用timescaledb)并且永远不需要更新/删除单行,我在这里看不到主键的好处。因此,我想知道如果没有设计主键,pglogical 是否无法正常工作,或者我是否做了一些错误配置。

预建的复制集“default_insert_only”在没有任何主键的情况下工作,但我想使用我自己的复制集。

有点题外话:您甚至会建议将 pglogical 用于简单的多个主服务器 > 特定表的一个从服务器复制(=聚合)?由于postgres 10逻辑复制无论如何都是核心的一部分。

0 投票
1 回答
463 浏览

postgresql - 从 pglogical 复制表上的触发器通知

我正在尝试基于 PostgreSQL、pglogical 和 PostgreSQL 的侦听通知机制设置从服务器推送的功能。在我的复制表上,我设置了一个触发器,它使用 pg_notify 在插入后将消息推送到队列。将触发器更改为“始终启用触发器”。使用此设置,行为不是我所期望的。

设置监听客户端(另一个 postgresql 控制台,也尝试了多个 python 驱动程序,行为始终相同)后,我不会收到通知,直到我从另一个不是由复制触发的进程发送另一个通知。手动发送通知后,我会收到从触发器推送的所有通知以及我手动发送的通知。

任何帮助表示赞赏。

0 投票
1 回答
717 浏览

postgresql - timescaleDB 是否可以使用 pglogical 进行逻辑复制?

我设置了多个主服务器到一个从服务器的功能齐全的逻辑复制。

一旦我将任何复制的表转换为 timescaleDB 的hypertable,复制就会停止工作 - 只有结构被复制,但没有数据。

是否可以将 timescaleDB 与 pglogical 一起使用?是否可以使用 PostgreSQL 10 及其内置的逻辑复制能力?

我的猜测是,逻辑复制在由虚拟块组成的表的上下文中没有意义。

0 投票
1 回答
3335 浏览

postgresql - 如何将订阅状态从向下更改为正在复制

我正在尝试将 postgresql 数据库从提供者节点复制到订阅者节点。我遵循了http://bonesmoses.org/2016/10/14/pg-phriday-perfectly-logical/中的教程并创建了提供程序节点并向复制集添加了一个表,并类似地创建了订阅者来订阅此表和订阅是为此工作正常。之后我添加了几个表,它们是不同数据库的一部分,但在同一个 postgres 实例上,并将这些表添加到新的复制集中,但是对于这个集,复制不起作用,并且订阅者正在关闭这个集。我怎样才能使这个订阅成为我稍后添加的复制集的复制。

以下是我在提供程序节点上运行的命令:

第 1 步:运行 pg_dump 文件以导入 DDL 命令

第 2 步:创建提供程序节点

);

第 3 步:创建复制状态

第 4 步:向该集合添加三个表

订阅者节点:

第 1 步:使用 pg_dump 文件运行 DDL 命令

第 2 步:创建订阅者节点

第 3 步:创建订阅

第 4 步:使用检查状态

它显示订阅 qrtz_data 的状态为关闭

0 投票
2 回答
956 浏览

sql - 我可以在逻辑复制中使用 .pgpass 吗?

我正在使用逻辑复制。我做了如下订阅。

但我想知道我是否可以使用 .pgpass 文件来提供密码。当然,我试过了。但它失败了,如下所示。

[我的 .pgpass]

这个 .pgpass 文件适用于 pgAgent。

我可以使用 .pgpass 文件进行逻辑复制吗?或者我应该在 CREATE 语句中写下我的密码吗?如果在 CREATE 命令中写入密码是唯一的答案,它是否安全?

0 投票
2 回答
426 浏览

postgresql - pglogical-2 如何处理同一张表上的逻辑复制,同时允许它在两个数据库上都可写?

在此处输入图像描述

根据上图,我希望在内部数据库(右侧)中有某些表。我想在外部数据库中复制的其他表。

实际上,只有一组值不应该被复制。可以复制数据库的其余部分。基本上,表中的实际价格列prices无法复制。它应该保留在内部数据库中。

由于供应商在网络外部,因此他们无法访问内部应用程序。

我的计划是创建相同应用程序的复制版本,并允许供应商提交报价和拣货。

假设复制的表至少是quotationsquotation_line_items这些表在外部数据库和内部数据库中都应该是可写的(就 INSERT、UPDATE 和 DELETE 的数据而言)。因此,在两个数据库中,quotationsandquotation_line_items表中的数据都是可写的,并且应该双向复制。

除了表中的实际原始价格列外,其他表中的数据将按单一方向(从内部到外部)复制prices

quotation_line_items表将有一price_id列。但是,表中的原始价格值prices不应出现在外部数据库中。

最终,我希望两个数据库上的复制表的数据保持一致。我对同步复制没问题,所以有点延迟(比如,写操作需要几秒钟)就可以了。

我遇到了 pglogical https://github.com/2ndQuadrant/pglogical/tree/REL2_x_STABLE

他们有PUBLISHER和SUBSCRIBER的概念。

根据自述文件,我无法判断哪个将充当发布者和订阅者,以及如何针对我的情况进行配置。

0 投票
1 回答
1566 浏览

postgresql - Postgresql pglogical 订阅已关闭

我想在两个 postgresql 9.5 服务器之间设置逻辑复制。我可以让它在两台虚拟 PC 上运行,但是当我尝试在我们的生产机器上运行时,复制状态已关闭(pglogical.show_replication_status())。

在我们的主服务器上有很多数据(~250GB),所以我们真的不能删除它。但是我通过 pg_dump 将它移到了复制存储服务器。

主要生产服务器:

pg_hba.conf:

postgresql.conf:

重击:

这些命令后我没有收到任何错误。

我在我们的存储服务器上做的步骤:

pg_hba.conf:

postgresql.conf:

重击:

在此之后我也没有收到任何错误。

有人遇到过这个,我该如何解决?

提前致谢!

0 投票
1 回答
290 浏览

postgresql - 在 PostgreSQL 中通过 pglogical 使用多主控时的不同选择结果

有两个 PostgreSQL 9.6 节点通过 pglogical 相互订阅。如果节点 A 在复制表中插入一行,则节点 B 会看到它,反之亦然。

但是,当我在一个节点上更新一行时,SELECT两个节点上的后续查询将不断返回不同的结果——当前的结果和之前的一些结果。

此外,两个节点的日志中都有关于复制冲突的日志条目。

为什么会发生这种情况,我该如何解决?

upd:将 pglogical.conflict_resolution 设置为 last_update_wins 会有所帮助。也可以考虑其他解决冲突的选择