You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pglogical如何查询已加入replication_set的schema/表/数组列表?

pglogical查询复制集内对象的方法

pglogical内置系统视图可直接查询复制集关联的schema、表等对象,具体操作如下:

1. 查询所有已创建的复制集基础信息

执行以下SQL即可获得当前节点所有复制集的基础配置:

SELECT * FROM pglogical.replication_set;

返回结果包含复制集ID、所属节点ID、复制集名称、是否同步INSERT/UPDATE/DELETE/TRUNCATE操作等字段,示例返回如下:

set_id   | set_nodeid |       set_name       | replicate_insert | replicate_update | replicate_delete | replicate_truncate
------------+------------+----------------------+------------------+------------------+------------------+--------------------
 1921995266 | 1338498914 | default              | t                | t                | t                | t
 4027572585 | 133849914 | default_insert_only  | t                | f                | f                | t
 3823354649 | 13384994914 | ddl_sql              | t                | f                | f                | f
 1724847149 | 1338498914 | replication_set      | t                | t                | t                | t
(4 rows)

2. 查询指定复制集包含的所有表及所属schema

通过关联pglogical.replication_set_table视图和PostgreSQL系统表,可直接查询复制集内的表和对应schema:

SELECT 
    s.set_name AS replication_set_name,
    n.nspname AS schema_name,
    c.relname AS table_name,
    rst.set_reloid::regclass AS table_full_name
FROM pglogical.replication_set s
INNER JOIN pglogical.replication_set_table rst 
    ON s.set_id = rst.set_id
INNER JOIN pg_class c 
    ON rst.set_reloid = c.oid
INNER JOIN pg_namespace n 
    ON c.relnamespace = n.oid
-- 去掉下方WHERE条件可查询所有复制集的对象
WHERE s.set_name = '替换为你要查询的复制集名称';

3. 查询指定复制集覆盖的所有schema

如果你是通过pglogical.replication_set_add_all_tables批量添加了整个schema到复制集,可通过以下SQL去重得到该复制集覆盖的所有schema列表:

SELECT DISTINCT n.nspname AS replicated_schema
FROM pglogical.replication_set s
INNER JOIN pglogical.replication_set_table rst 
    ON s.set_id = rst.set_id
INNER JOIN pg_class c 
    ON rst.set_reloid = c.oid
INNER JOIN pg_namespace n 
    ON c.relnamespace = n.oid
WHERE s.set_name = '替换为你要查询的复制集名称';

注意:pglogical不会单独存储批量添加的schema列表,调用replication_set_add_all_tables时会将调用时刻该schema下的所有表逐个添加到复制集表中,后续新增的表不会自动同步到复制集,除非再次调用该函数。

内容的提问来源于stack exchange,提问作者Gowthamakanthan Gopal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:54:04