**发布端**
1. 查看发布端的相关参数并修改为合适值```bash
alter system set wal_level =logical;
alter system set max_replication_slots=8;
alter system set max_wal_senders=10; --应该将此参数设置的比 max_replication_slots 参数要大
--修改参数后重启数据库,使参数生效
pg_ctl restart
```2. 发布节点创建发布```bash
postgres=# create user a password'root123';
CREATE ROLE
postgres=# create database a owner a;
CREATE DATABASE
postgres=# \c a a
-- 创建发布测试表
a=> create table badtable (id serial primary key,name varchar(32),age int,hobby
a(> text,date timestamp);
CREATE TABLE
a=> insert into badtable (name,age,hobby,date) values ('postgres',
a(> (random()*100)::int,md5('random()::highgo'),
a(> generate_series('2008-03-01 00:00'::timestamp,'2008-03-04 23:00', '10 hours'));
INSERT 0 10
a=> select count(*) from badtable;
count
-------
10
(1 row)
--创建发布
[root@rhel1 data]# psql a a
a=> create publication pub1 for table badtable ;
--查询发布
a=> select * from pg_publication;
oid | pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate
-------+---------+----------+--------------+-----------+-----------+-----------+-------------
16399 | pub1 | 16385 | f | t | t | t | t
(1 row)
```3. 发布节点创建逻辑复制用户```bash
a=> \c a postgres
a=# create user logicalrep password'root123' replication;
```
4.配置replication网络访问控制```bash
$ vi $PGDATA/pg_hba.conf
#IPv4
host all all 0.0.0.0/0 md5
#replication
host replication all 0.0.0.0/0 md5
$ pg_ctl reload
```**订阅端配置**
1. 查看相关参数并修改为合适值```bash
alter system set max_replication_slots=8;
alter system set max_logical_replication_workers=8;
$ vi $PGDATA/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
# replication privilege.
local replication all md5
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
host replication all 0.0.0.0/0 md5
```2. 订阅节点创建订阅```bash
--先将订阅端表创建
postgres=# create user b password'root23';
postgres=# create database b owner b;
postgres=# \c b b
b=> create table badtable (id serial primary key,name varchar(32),age int,hobby
b(> text,date timestamp);
--创建订阅
b=> \c b postgres
b=# create subscription sub1 connection 'host=192.168.230.101 port=5866 dbname=a user=logicalrep password=root123' publication pub1;
NOTICE: created replication slot "sub1" on publisher -----备端连到主端创建逻辑复制槽 作用也是保证没有被订阅端解析的wal日志被主端删除
CREATE SUBSCRIPTION
--订阅节点查询订阅信息
select * from pg_subscription;
```
3. 查询订阅端表```bash
2021-03-15 15:04:37.786 CST [20014] LOG: logical replication table synchronization worker for subscription "sub1", table "badtable" has started
NOTICE:
2021-03-15 15:04:37.928 CST [20014] ERROR: could not start initial contents copy for table "public.badtable": ERROR: permission denied for table badtable
2021-03-15 15:04:37.937 CST [20001] LOG: background worker "logical replication worker" (PID 20014) exited with exit code 1
2021-03-15 15:04:42.961 CST [20015] LOG: logical replication table synchronization worker for subscription "sub1", table "badtable" has started
--没有数据同步,主要是复制用户logicalrep对表所属的schema及表没有读写权限
--在发布端进行表授权
a=> grant usage on schema public to logicalrep;
a=> grant select on badtable to logicalrep ;
a=> alter default privileges in schema public grant select on tables to logicalrep ;
--订阅端再次查询数据
b=> select * from badtable;
id | name | age | hobby | date
----+--------+-----+----------------------------------+---------------------
1 | postgres | 81 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-01 00:00:00
2 | postgres | 58 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-01 10:00:00
3 | postgres | 14 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-01 20:00:00
4 | postgres | 66 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-02 06:00:00
5 | postgres | 37 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-02 16:00:00
6 | postgres | 52 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-03 02:00:00
7 | postgres | 21 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-03 12:00:00
8 | postgres | 78 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-03 22:00:00
9 | postgres | 20 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-04 08:00:00
10 | postgres | 31 | 311e7462a6242cbc0578f9d6d91d5d33 | 2008-03-04 18:00:00
--查询状态
b=# select * from pg_subscription;
oid | subdbid | subname | subowner | subenabled | subconninfo
| subslotname | subsynccommit | subpublications
-------+---------+---------+----------+------------+-----------------------------------------------------------
-----------------+-------------+---------------+-----------------
16400 | 16385 | sub1 | 9999 | t | host=192.168.230.101 port=5866 dbname=a user=logicalrep pa
ssword=root123 | sub1 | off | {pub1}
(1 row)
```
详谈pg逻辑复制系列之逻辑复制的搭建(二)
来源:这里教程网
时间:2026-03-14 20:15:28
作者:
编辑推荐:
- RHEL6.9+PG1203-14
- 详谈pg逻辑复制系列之逻辑复制的搭建(二)03-14
- 流复制浅析 —— 物理流复制部署03-14
- PostgreSQL patroni高可用集群03-14
- postgresql 11版本psql命令帮助大全03-14
- 【INDEX】Postgresql索引介绍03-14
- greenplum单节点安装03-14
- 【读书笔记】《PostgreSQL指南-内幕探索》-3.3创建单表查询的计划树03-14
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 详谈pg逻辑复制系列之逻辑复制的搭建(二)
详谈pg逻辑复制系列之逻辑复制的搭建(二)
26-03-14 - 流复制浅析 —— 物理流复制部署
流复制浅析 —— 物理流复制部署
26-03-14 - 【读书笔记】《PostgreSQL指南-内幕探索》-3.3创建单表查询的计划树
- TBase-开源版本安装部署(超详细)
TBase-开源版本安装部署(超详细)
26-03-14 - PostgreSQL高可用:多主复制解决方案
PostgreSQL高可用:多主复制解决方案
26-03-14 - PG和MySQL详细的一些特性对比
PG和MySQL详细的一些特性对比
26-03-14 - Redash中文版以PostgreSQL为例设置用户权限
Redash中文版以PostgreSQL为例设置用户权限
26-03-14 - postgresql:pgbench基准性能测试
postgresql:pgbench基准性能测试
26-03-14 - PostgreSQL email list:nvm wal buffer
PostgreSQL email list:nvm wal buffer
26-03-14 - RockyLinux sg命令详解(以其他组身份安全执行命令的完整教程)
RockyLinux sg命令详解(以其他组身份安全执行命令的完整教程)
26-03-14
