问题标签 [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.
postgresql - 使用 pglogical 进行 Postgres 复制:错误:与另一端的连接已终止
在 2 个 Postgres 实例之间复制时出现此错误(在副本上):
ERROR: connection to other side has died
这是副本/订阅者的日志:
登录主/提供者:
在主/提供者上配置:
在副本/订阅者上配置:
我总共订阅了 18 个模式的 18 个。一开始它似乎工作得很好,但很快就恶化了,一些订阅开始在down
和replicating
状态之间反弹,上面发布了错误。
问题
可能的原因是什么?我需要更改我的 Pg 配置吗?
另外,我注意到在进行复制时,master/provider 上的 CPU 使用率非常高。
提前致谢!
pglogical - 我将如何使用来自下游数据库的 pglogical?
我想使用 pglogical 复制一组表,但我想在主数据库下游进行所有更改 - 为避免风险,我不想对主数据库进行任何修改。我也想现在开始使用 pglogical,以便我们熟悉这项技术,并可以在我们的下一个版本中将它包含在我们所有的数据库中。
我不需要不断更新,所以我想出了一个计划,一个 cron 工作:
- 关闭流复制到备用
- 使这个备用服务器成为逻辑复制的主服务器(仅用于逻辑复制,无写入)
- 停止 postgresql
- 复制数据目录
- 进行配置更改
- 启动postgresql
- 创建 pglogical 扩展
- 赶上逻辑复制
- 使该数据库成为流式备用数据库,无需再次进行逻辑复制
- 停止 postgresql
- 用以前的副本替换数据目录
- 配置更改
- 启动postgresql
我的问题 - 这种方法是否有意义?有没有一些我完全想念的简单方法来完成这个?
postgresql - 使用 pglogical 复制插入是否需要主键?
我尝试使用 pglogical 设置一个简单的主 > 从复制。pglogical文档提到需要一个主键来复制更新和删除。由于我一个都不需要,所以我在提供者处设置了一个复制集,如下所示:
然后我添加了我的表:
我的订阅者设置如下:
有了这个设置和这样的表格布局:
只有结构被复制。
只要我添加一个主键:
一切都按预期工作。
由于我想存储高频时间序列(使用timescaledb)并且永远不需要更新/删除单行,我在这里看不到主键的好处。因此,我想知道如果没有设计主键,pglogical 是否无法正常工作,或者我是否做了一些错误配置。
预建的复制集“default_insert_only”在没有任何主键的情况下工作,但我想使用我自己的复制集。
有点题外话:您甚至会建议将 pglogical 用于简单的多个主服务器 > 特定表的一个从服务器复制(=聚合)?由于postgres 10逻辑复制无论如何都是核心的一部分。
postgresql - 从 pglogical 复制表上的触发器通知
我正在尝试基于 PostgreSQL、pglogical 和 PostgreSQL 的侦听通知机制设置从服务器推送的功能。在我的复制表上,我设置了一个触发器,它使用 pg_notify 在插入后将消息推送到队列。将触发器更改为“始终启用触发器”。使用此设置,行为不是我所期望的。
设置监听客户端(另一个 postgresql 控制台,也尝试了多个 python 驱动程序,行为始终相同)后,我不会收到通知,直到我从另一个不是由复制触发的进程发送另一个通知。手动发送通知后,我会收到从触发器推送的所有通知以及我手动发送的通知。
任何帮助表示赞赏。
postgresql - timescaleDB 是否可以使用 pglogical 进行逻辑复制?
我设置了多个主服务器到一个从服务器的功能齐全的逻辑复制。
一旦我将任何复制的表转换为 timescaleDB 的hypertable,复制就会停止工作 - 只有结构被复制,但没有数据。
是否可以将 timescaleDB 与 pglogical 一起使用?是否可以使用 PostgreSQL 10 及其内置的逻辑复制能力?
我的猜测是,逻辑复制在由虚拟块组成的表的上下文中没有意义。
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 的状态为关闭
sql - 我可以在逻辑复制中使用 .pgpass 吗?
我正在使用逻辑复制。我做了如下订阅。
但我想知道我是否可以使用 .pgpass 文件来提供密码。当然,我试过了。但它失败了,如下所示。
[我的 .pgpass]
这个 .pgpass 文件适用于 pgAgent。
我可以使用 .pgpass 文件进行逻辑复制吗?或者我应该在 CREATE 语句中写下我的密码吗?如果在 CREATE 命令中写入密码是唯一的答案,它是否安全?
postgresql - pglogical-2 如何处理同一张表上的逻辑复制,同时允许它在两个数据库上都可写?
根据上图,我希望在内部数据库(右侧)中有某些表。我想在外部数据库中复制的其他表。
实际上,只有一组值不应该被复制。可以复制数据库的其余部分。基本上,表中的实际价格列prices
无法复制。它应该保留在内部数据库中。
由于供应商在网络外部,因此他们无法访问内部应用程序。
我的计划是创建相同应用程序的复制版本,并允许供应商提交报价和拣货。
假设复制的表至少是quotations
和quotation_line_items
。这些表在外部数据库和内部数据库中都应该是可写的(就 INSERT、UPDATE 和 DELETE 的数据而言)。因此,在两个数据库中,quotations
andquotation_line_items
表中的数据都是可写的,并且应该双向复制。
除了表中的实际原始价格列外,其他表中的数据将按单一方向(从内部到外部)复制prices
。
该quotation_line_items
表将有一price_id
列。但是,表中的原始价格值prices
不应出现在外部数据库中。
最终,我希望两个数据库上的复制表的数据保持一致。我对同步复制没问题,所以有点延迟(比如,写操作需要几秒钟)就可以了。
我遇到了 pglogical https://github.com/2ndQuadrant/pglogical/tree/REL2_x_STABLE
他们有PUBLISHER和SUBSCRIBER的概念。
根据自述文件,我无法判断哪个将充当发布者和订阅者,以及如何针对我的情况进行配置。
postgresql - Postgresql pglogical 订阅已关闭
我想在两个 postgresql 9.5 服务器之间设置逻辑复制。我可以让它在两台虚拟 PC 上运行,但是当我尝试在我们的生产机器上运行时,复制状态已关闭(pglogical.show_replication_status())。
在我们的主服务器上有很多数据(~250GB),所以我们真的不能删除它。但是我通过 pg_dump 将它移到了复制存储服务器。
主要生产服务器:
pg_hba.conf:
postgresql.conf:
重击:
这些命令后我没有收到任何错误。
我在我们的存储服务器上做的步骤:
pg_hba.conf:
postgresql.conf:
重击:
在此之后我也没有收到任何错误。
有人遇到过这个,我该如何解决?
提前致谢!
postgresql - 在 PostgreSQL 中通过 pglogical 使用多主控时的不同选择结果
有两个 PostgreSQL 9.6 节点通过 pglogical 相互订阅。如果节点 A 在复制表中插入一行,则节点 B 会看到它,反之亦然。
但是,当我在一个节点上更新一行时,SELECT
两个节点上的后续查询将不断返回不同的结果——当前的结果和之前的一些结果。
此外,两个节点的日志中都有关于复制冲突的日志条目。
为什么会发生这种情况,我该如何解决?
upd:将 pglogical.conflict_resolution 设置为 last_update_wins 会有所帮助。也可以考虑其他解决冲突的选择