标签:13 01 PostgreSQL log CREATE 分区表 2020 tbl mydb
PostgreSQL 13: 逻辑复制支持分区表
发表于 2020-06-22 | 分类于 Postgres基础 | 0 | 阅读次数: 847PostgreSQL 10 版本开始支持逻辑复制,在12版本之前逻辑复制仅支持普通表,不支持分区表,如果需要对分区表进行逻辑复制,需单独对所有分区进行逻辑复制。
PostgreSQL 13 版本的逻辑复制新增了对分区表的支持,如下:
- 可以显式地发布分区表,自动发布所有分区。
- 从分区表中添加/删除分区将自动从发布中添加/删除。
发行说明的解释如下:
发行说明
Allow partitioned tables to be logically replicated via publications (Amit Langote)
Previously, partitions had to be replicated individually. Now partitioned tables can be published explicitly causing all partitions to be automatically published. Addition/removal of partitions from partitioned tables are automatically added/removed from publications. The CREATE PUBLICATION option publish_via_partition_root controls whether changes to partitions are published as their own or their ancestors.
Allow logical replication into partitioned tables on subscribers (Amit Langote)
Previously, subscribers could only receive rows into non-partitioned tables.
关于逻辑复制之前博客有介绍,详见PostgreSQL10:逻辑复制(Logical Replication)之一,本文仅做简单演示。
环境规划
环境规划,如下:
节点 | 数据库版本 | IP | 端口 |
---|---|---|---|
源库 | PostgreSQL 13beta1 | 192.168.2.11 | 1922 |
目标库 | PostgreSQL 13beta1 | 192.168.2.13 | 1924 |
环境准备
在源库、目标库安装 PostgreSQL 13beta1软件并初始化数据库,本文略。
部署mydb数据库
在源库和目标库上均部署 mydb 数据库,如下:
1 |
--建用户 |
创建分区表
在源库和目标库上创建分区表,如下:
1 |
--创建父表 |
部署逻辑复制
源库执行以下操作,如下:
1 |
--创建复制用户 |
以上有个步骤是给源库上的repuser用户赋相关权限,如果不给repuser用户赋权,创建订阅后目标库无法初始化同步源库数据。
目标库创建订阅,如下:
1 |
mydb=# CREATE SUBSCRIPTION sub1 CONNECTION 'host=192.168.2.11 port=1922 dbname=mydb user=repuser' PUBLICATION pub1; |
注意配置好源库的pg_hba.conf
和.pgpass
文件,否则创建订阅会报相关的连接不上错误。
数据验证
源库批量插入数据,如下:
1 |
INSERT INTO tbl_log(user_id,create_time) |
源库查看数据,如下:
1 |
[pg13@ydtf01 ~]$ psql mydb pguser -p 1922 |
目标库验证数据,如下:
1 |
[pg13@ydtf03 ~]$ psql mydb pguser -p 1924 |
可见分区表的数据已从源库同步到目标库。
参考
- Logical-Replication-Restrictions
- PostgreSQL10:逻辑复制(Logical Replication)之一
- PostgreSQL 13.0 Beta1版本发布说明
- PostgreSQL 13: CREATE SUBSCRIPTION新增publish_via_partition_root选项支持异构分区表间的数据逻辑复制
- PostgreSQL 13: 普通表数据逻辑复制到分区表
- PostgreSQL 13: 多源逻辑复制实践
标签:13,01,PostgreSQL,log,CREATE,分区表,2020,tbl,mydb 来源: https://www.cnblogs.com/yaoyangding/p/14964764.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。