postgreSql逻辑复制常用语句汇总和说明
简单说明
postgreSql逻辑复制的原理这里不再赘述,度娘一下即可。这里只是对常用的语句做一些汇总和说明,以便日后查找时方便。
逻辑复制的概念
逻辑复制整体上采用的是一个发布订阅的模型,订阅者可以订阅一个或者多个发布者, 发布者也可以被一个或者多个订阅者订阅,通常我们在做逻辑复制的通用步骤是:订阅者首先获取发布者数据库上的数据快照并拷贝这部分存量数据,当这个快照复制执行完成之后,发布者数据库上的变更数据就可以实时的发送给订阅者,订阅者也会顺序处理这些增量数据,基于此逻辑复制可以保证事物的一致性,所以有时候也称逻辑复制为事物复制。
前置条件
想要使用postgreSql的逻辑复制,需要PostgreSQL 10以上版本,并且需要将数据库属性wal_level配置为logical。
wal_level 包含三个选项:minimal、replica、logical,默认是replica。
wal_level = logical
常用语句汇总
//创建发布 定义发布别名 表可以设置多个 使用逗号分割
create publication test_sync_p for table table_sync;
//删除发布
drop publication test_sync_p;
//创建订阅 定义订阅别名 publication与发布的别名保持一致 配置发布数据库链接信息
create subscription test_sync_s connection 'host=192.168.0.1 dbname=system user=postgres password=12345 port=5432' publication test_sync_p;
//删除订阅
drop subscription test_sync_s;
//使用唯一索引设置复制标识 默认为主键
alter table table_sync replica identity using index index_name;
//设置订阅槽为空 方便删除订阅
alter subscription test_sync_s set (slot_name = none)
//查询publication发布的表
select * from pg_publication_tables;
//查询publication
select * from pg_publication;
//查询槽
select * from pg_replication_slots;
//删除槽
select pg_drop_replication_slot('slot_name');