pglogical
前言
pglogical是一个完全作为PostgreSQL扩展实现的逻辑复制系统,为PostgreSQL数据库提供了逻辑流复制发布和订阅的功能。
环境信息
| IP | postgres版本 | 说明 |
|---|---|---|
| 10.20.30.40 | 14.8 | 发布端 |
| 10.20.30.41 | 14.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');