如何配置 pglogical | PostgreSQL 的流复制

pglogical 扩展为 PostgreSQL 提供逻辑流复制

我们使用以下术语来描述节点之间的数据流,有意重复使用早期的 Slony 技术:
节点 - PostgreSQL 数据库实例
提供者和订阅者 - 节点承担的角色
复制集- 表的集合 
 
建筑细节:
• pglogical在每个数据库级别上工作,而不是像物理流复制那样在整个服务器级别工作
一个提供程序可以为多个订阅程序提供服务,而不会产生额外的磁盘写入开销
一个订阅服务器可以合并来自多个来源的变更,并通过自动和可配置的冲突解决方案检测变更之间的冲突(多主服务器所需的一些方面,但不是所有方面)。
级联复制以变更集转发的形式实现。
 
要求 :- 
  • 要使用 pglogical,提供商和订阅者必须运行 PostgreSQL 9.4 或更新版本。
  • 提供商和订阅者都必须安装 pglogical 扩展。您必须在两者上都创建扩展 pglogical。
  • 提供方和订阅方的表必须具有相同的名称并采用相同的架构。未来的修订版本可能会添加映射功能。
  • 提供者和订阅者上的表必须具有相同的列,并且每列的数据类型相同。订阅者上的 CHECK 约束、NOT NULL 约束等必须与提供者上的相同或更弱(更宽松)。
  • 表必须具有相同的 PRIMARY KEY。除了 PRIMARY KEY 之外,不建议添加其他 UNIQUE 约束。
  • 此处涵盖更多限制和约束 
安装 pglogical 扩展。
 
从以下链接下载 pglogical 扩展的源代码。
步骤1 
 
解压下载的文件夹。
 
第2步 
 
我正在配置从 9.5 到 9.6 PostgreSQL 社区版本的复制。
 
确保您已经配置了正确的环境变量。
 
进入文件夹。
cd pglogical-master
make USE_PGXS=1 install
 
Make below changes into postgresql.conf in both side .
wal_level = 'logical'
max_worker_processes = 10  
max_replication_slots = 10 
max_wal_senders = 10       
shared_preload_libraries = 'pglogical'
track_commit_timestamp = on 
pg_hba.conf has to allow replication connections
 
创建两个服务器的扩展。
create extension pglogical;
create extension pglogical_origin ;

 

确保您也在副本服务器上创建了表结构。
 
步骤3.创建节点和订阅。
 
在主服务器上。
A) 
 
SELECT pglogical.create_node(
 
node_name := 'provider1',
dsn := 'host=Replica/Subscriber_host port=5432 dbname=postgres'
);
B)将“公共”模式中的所有表添加到“默认”复制集。
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

 

 在副本/辅助服务器上。

A)
create table employee(id int primary key ,name varchar(20));
 
B)
一旦设置了提供者节点,订阅者就可以订阅它。首先
必须创建订阅者节点:
SELECT pglogical.create_node(
    node_name := 'subscriber1',
    dsn := 'host=Replica_host port=5432 dbname=postgres'
);
C) 
最后,在订阅者节点上,你可以创建订阅,它将
在后台启动同步和复制过程:
SELECT pglogical.create_subscription(
subscription_name := 'subscription1',
provider_dsn := 'host=master_host port=5432 dbname=postgres'
);
 

 

步骤4 
让我们在表中插入一些行并检查是否开始与辅助节点同步。
我已经插入了 100 行,现在我正在主服务器上插入另外 100 行。

 在订阅/辅助服务器上验证

 

步骤5.检查哪些后端进程正在运行。
 
在主服务器上 

 在辅助服务器上 - 

 

 
 
 
 
 
posted @ 2024-07-27 00:37  wongchaofan  阅读(10)  评论(0编辑  收藏  举报