跳到主要内容

pglogical

前言

pglogical是一个完全作为PostgreSQL扩展实现的逻辑复制系统,为PostgreSQL数据库提供了逻辑流复制发布和订阅的功能。

环境信息

IPpostgres版本说明
10.20.30.4014.8发布端
10.20.30.4114.8订阅端

步骤

发布端创建测试库

create database test1;

发布端创建扩展。创建扩展前要切换到test1库

create extension pglogical;

发布端创建测试表

create table tb01(id int primary key, name text);

发布端制造模拟数据

insert into tb01 select n,'qwer' from generate_series(1,100) n;

订阅端创建测试库、扩展、测试表

create database test1;
-- psql 使用 \c 可以切换数据库
\c test1

create extension pglogical;

create table tb01(id int primary key, name text);

发布端创建发布节点、复制集

-- 创建发布节点
select pglogical.create_node(node_name := 'provider1', dsn := 'host=10.20.30.40 port=5432 dbname=test1');

-- 创建复制集. 较新版本可能会提示default复制集已存在
select pglogical.create_replication_set('default');

-- 增加表
select pglogical.replication_set_add_table('default','public.tb01');

-- 查看复制集
select * from pglogical.replication_set_table;

订阅端创建节点

select pglogical.create_node(node_name := 'subscribe1', dsn := 'host=10.20.30.41 port=5432 dbname=test1');

-- 创建订阅
select pglogical.create_subscription(subscription_name := 'subscription1',provider_dsn := 'host=10.20.30.40 port=5432 dbname=test1');