问题标签 [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 数据库从一项服务迁移到另一项服务(例如从 AWS RDS 到 Google Cloud)。我们使用了 Google 的内置数据库迁移服务 (DMS),它使用了pglogical
扩展。
我们的源数据库在 postgres 9.6 中,我们开始将数据复制到另一个版本为 13 的 postgres。数据已成功复制,但由于没有primary_key约束,很少有表错过复制。如果不同步目标中的这些表,我们将无法使用目标数据库。我有以下问题,
具有 primary_key 约束的表已经同步,并且最新数据也会更新到目标,因为它是连续复制。单独添加 primary_key 会将数据复制到目标还是我们需要重新启动
pglocical
?我问这个是因为我们无法控制pglogical
Google 的 DMS 处理迁移过程。我们无法从头开始重新启动,因为我们的数据库大小超过 2TB,这会消耗大量时间来复制数据。我知道我们可以手动复制这些表。还有其他更好的方法来解决这个问题吗?
重要提示:当使用 pglogical 复制进行逻辑同步时,是否建议更改架构?
postgresql - 可以使用 pglogical 将本地数据库迁移到 AWS RDS 吗?
我正在尝试以最少的停机时间将我的本地 postgres 12.4 数据库复制到 AWS RDS 13.2。我测试了 pglogical 以创建从我的源数据库到另一个 prem 主机的副本,发现 pglogical 需要超级用户角色,例如具有Replication
属性的 postgres。我遵循了logical
在目标 RDS 实例和本地源主机上设置配置的所有步骤(https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-from-postgresql-on-amazon-ec2-到-amazon-rds-for-postgresql-using-pglogical.html)。
我在创建订阅步骤中收到超时错误,并显示无法联系源的消息。我已在我的源 pg_hba.confg 中允许 RDS 端点的连接。
由于rds_superuser
在 RDS 中并不是真正的超级用户,我想知道是否可以使用从本地复制到 RDS pglogical
?有什么想法或以前的经验吗?感谢有人可以分享。
谢谢
postgresql - pglogical.replicate_ddl_command 报价处理
提供者在 OEL 7 postgres 12.4 上,订阅者在 RDS 13.2 上
只要命令的开头和结尾之间没有引号,pglogical.replicate_ddl_command 就可以正常工作。例如,下面工作正常
设置事件触发器以将此新创建的表添加到默认的 replication_set。
接下来,我们需要将表 foo 作为分区附加到表 order 中,这就是 FOR VALUES 中的引号成为问题的地方。
在与此相关的文档中找不到任何内容。请帮忙。
postgresql - 通过 ssh 隧道设置 pglogical,由对等方重置连接
我正在本地 PostgreSQL 10.14(发布者和 AWS RDS Postgresql 10.16(订阅者)之间设置 pglogical 复制,但是在设置订阅后,我只能重置连接。谁能发现我做错了什么?
网络设置:
我已验证 ssh 隧道正在工作:
- 我可以使用连接到隧道的 psql 从 AWS 连接到本地 postgres
- 使用 postgres_fwd 时,我什至可以从 AWS RDS 连接到本地 postgres
Pglogical 设置:
内部部署:
- 使用 dsn 创建节点
host=10.2.0.8 dbname=... user=... password=...
AWS:
- 使用 dsn 创建节点
host=db01.some.tld dbname=... user=... password=...
- 使用 dsn 创建订阅
host=10.2.0.8 dbname=... user=... password=...
一旦完成:
- pglogical 进程同时在提供者和订阅者上运行
- 但我遇到以下错误:AWS:
日志:无法从客户端接收数据:对等方重置连接
日志:客户端连接与打开的事务发生意外 EOF
现场:
日志:客户端连接上的意外 EOF 与打开的事务
我试过摆弄日志参数,但没有得到任何有用的东西。同样,我无法从 ssh 隧道日志中获得任何帮助。
知道我做错了什么吗?
postgresql - 现有数据集上的 Postgres 13 + pglogical 2.3.4
我在尝试在提供者和订阅者之间设置 pglogical 时遇到问题,两者已经有一些共同的数据。
这是一个最小的脚本来重现我正在尝试做的事情:
我认为将冲突解决设置为 'apply_remote' pglogical 会在 db2 上重新插入具有 PK 1 的现有行并使用 PK2 插入新行。但是 db2.table1 仍然是 PK 1 的单行。
Postgres 日志显示:
冲突结果设置:
我也尝试过:
在看到日志上的 COPY 失败并阅读该批处理将在内部使用 COPY 命令的文档后,我尝试禁用它:
它仍然没有工作
我做错了什么还是我误解了它应该如何工作?也许冲突解决仅在执行初始复制批处理后才适用?
注意:如果在初始复制后插入重复的行,它可以正常工作:
postgresql - 对 jsonB 列类型使用 pgLogical 行过滤器
我正在尝试复制包含 jsonB 列的表。我想使用行过滤来仅选择我需要的行。如何为 jsonB 定义行过滤器?
表人:
样本数据:
我尝试了以下方法,但它们不起作用:
我尝试的另一个选项:
google-cloud-platform - 什么是修改源数据库中的 pglogical / 数据库迁移服务 (GCP)?
我们正在使用 pglogical 扩展,使用数据库迁移服务将 PostgreSQL 数据库复制到 Google Cloud。我们能够成功进入连续复制阶段。问题在这之后。
在源数据库上运行一个系统,该系统在数据库中执行一些检查,特别是在“公共”模式中。此检查正在检测此架构中的更改并删除所有更改,因此,复制失败。您能给我有关在“公共”模式中执行 pglogical/数据库迁移服务的修改的信息吗?
提前致谢。
networking - Pglogical 错误:致命:没有用于来自主机“xxx”、用户“xxx”、SSL 的复制连接的 pg_hba.conf 条目
我有两个节点,node1(提供者),node2(订阅者)。在node2、订阅节点上设置PG逻辑时,运行时
我收到以下错误:
错误:无法在复制模式下连接到 postgresql 服务器:致命:没有用于来自主机“172.19.0.3”的复制连接的 pg_hba.conf 条目,用户“test”,SSL 关闭
两个节点都是 docker 节点,node1 是预期的提供者,docker inpect
显示它的容器 ip 是 172.19.0.2。node2(我在其中运行 select pglogical.create_subscription)是订阅者节点,docker inspect
显示其 ip 为 172.19.0.3。在 node1 的 pg_hba.conf 文件中,我在 IPv4 部分下有以下内容:
在 postgresql.conf 我有:
我不确定为什么我仍然会收到错误消息。
postgresql - PostgreSQL pglogical 复制填满磁盘空间
我尝试使用 pglogical 在 2 个 PG 服务器之间复制数据,在此过程中发现巨大的磁盘占用。这是详细信息
环境:
来源 PG:
- 服务器名称:pg-publisher。
- IP地址:10.0.0.1
- 整盘空间:3.5T
- PG数据文件夹大小:2.2T
- 最大桌子尺寸:
- 表名 ->
my_schema.logs
。 - pg_table_size('logs') = 1.4T
- 表名 ->
- PG正在运行,新数据不断进入并插入到包括表在内的
logs
表中。
目的地PG:
- 服务器名称:pg-subscriber
- IP地址:10.0.0.2
- 整盘空间:3T
我是如何设置复制的:
在 pg-publisher 上
创建节点:
创建复制集
在 pg 订阅者上
创建节点
创建订阅
); ```
确认
经过上述操作。我检查了两台服务器上的状态:
- 在 pg 订阅者上。pglogical 复制处于
initializing
状态(来自pglogical.show_subscription_status()
) - 在 pg-publisher 上。复制槽已创建且未处于活动状态。这是意料之中的,因为有很多数据需要初始化。在达到状态之前它不会处于活动
replicating
状态
我的困惑
所有操作似乎都按预期工作。但 4 天后,我收到警报,发现可用磁盘空间pg-publisher
减少了很多(减少了 20% 以上)。然后这是我发现的:
pglogical
复制仍处于initializing
状态 onpg-subscriber
。在 pg-publisher 上,我检查了pg_stat_activity
它,发现pglogical
事件正在使用COPY
命令复制最大的表my_schema.logs
。PG数据的文件夹大小
pg-publisher
从2.2T增加到2.7T
我知道发布服务器会在达到replicating
状态之前保留复制所需的 WAL 文件,这将占用磁盘空间。但我检查了pg_wal
文件夹大小pg-publisher
,发现它只有不到 20GB。但base
文件夹增加到2.7T。我可以知道为什么会这样。命令是否COPY
占用磁盘空间(我不这么认为,因为我发现它会复制到标准输出)还是有其他事情会导致它?
database - pg_logical 复制失败 - Postgresql 11.9
在 pglogical 复制方面需要一些帮助。以下是我的复制设置:
在 Publisher 端,节点创建成功。我对某些表的列应用了行过滤。就像是:
在订阅者端,节点创建成功。当我创建对发布者的订阅时,状态会pglogical.show_subscription_status()
保持initializing
一段时间,然后更改为down
我检查了订阅者数据库日志,我看到以下错误:
some_column
我检查了 Publisher 并且 in中没有 NULL 值table_1
。table_1
我还检查了出错的特定行,some_column's
值为'f'。some_column
是一列Boolean NOT NULL
。
有关如何解决此问题的任何建议?
谢谢。