第三十章 逻辑复制_《逻辑复制》.pptx-程序员宅基地

技术标签: postgresql  PostgreSQL 13.0 Documentation  

30.1 发布

发布可以理解为一个或一组表的数据变化。发布当前仅针对表。发布的变更数据可以是DML和truncate操作的任意组合,默认为全发布(DML和TRUNCATE)。

 

对于UPDATE和DELETE操作,发布表必须有复制标识,默认为主键,也可以是唯一索引;如果都没有,可以设置为full,即所有列。

 

使用ALTER TABLE的REPLICA IDENTITY设置复制标识;使用CREATE PUBLICATION创建发布;使用 ALTER PUBLICATION修改发布。

30.2 订阅

订阅通过一个复制槽接收数据变化。使用 CREATE SUBSCRIPTION创建订阅;使用 ALTER SUBSCRIPTION修改订阅;使用 DROP SUBSCRIPTION删除订阅。

 

暂不支持不同表名的同步。

30.2.1 复制槽管理

订阅从发布节点的复制槽接收数据。一般,复制槽会在创建订阅时自动创建;删除订阅时自动删除。但也存在需要手动处理的情形:

  • 在创建订阅时,复制槽已存在:创建订阅时使用create_slot=false;

  • 创建订阅时,发布主机不可访问:创建订阅时使用connect=false,然后启动前在发布端手动创建复制槽;

  • 删除订阅时,需要保留复制槽:在删除订阅前,先使用ALTER SUBSCRIPTION修改订阅;

  • 删除订阅时,发布主机不可访问:在删除订阅前,先使用ALTER SUBSCRIPTION修改订阅;然后手动在发布主机删除复制槽;

30.3 冲突

可在订阅日志查看冲突信息。可使用pg_replication_origin_advance跳过冲突事务;使用pg_replication_origin_status查看当前状态。

30.4 限制

  • 数据库模式和DDL不同步;

  • 不同步序列;

  • 有外键表的TRUNCATE操作支持度不够;需要将父子表都放到同步中;

  • 不同步大对象;

  • 仅支持表(含分区表)的同步;

  • 同步分区表时,订阅端必须已经存在相应分区;

30.5 架构

逻辑复制通过拷贝发布数据库的快照开始。一旦基础数据拷贝完成,则数据开始实时同步。逻辑复制只会触发行级触发器;但基础数据的同步会同时触发行级和语句级触发器。

30.6 监控

查看pg_stat_subscription获取订阅信息。

30.7 安全

发布和订阅,一般需要超级用户。需要做好相应安全管理。

30.8 配置设置

逻辑复制需要设置几个参数。

  • 发布端:wal_level必须设置为logical;max_replication_slots设置至少比订阅数量多;max_wal_senders设置至少比max_replication_slots+物理复制连接数多;

  • 订阅端:max_replication_slots设置为预计订阅数;max_logical_replication_workers设置至少比订阅数+表同步预留连接数多;max_worker_processes至少设置为max_logical_replication_workers+1;

30.9 快速设置

  1. 首先,设置wal_level=logical;pg_hba.conf设置;

  2. 然后在发布端执行:CREATE PUBLICATION mypub FOR TABLE users, departments;

  3. 在订阅端执行:CREATE SUBSCRIPTION mysub CONNECTION 'dbname=foo host=bar user=repuser' PUBLICATION mypub;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ghostliming/article/details/114580447

智能推荐

Android8.0下切换横竖屏幕时Activity的生命周期。_屏幕转向活动周期-程序员宅基地

一、前言看了一些关于切换屏幕时Activity生命周期变化的博客,初步理解了切换屏幕时的变化过程(私以为,默认情况下之所以切换横竖屏时会重新加载活动,是为了更好的用户体验哈哈)。但是因API版本号以及收集型号的不一样,这个过程都会略有不同。——————>所以我现在比较新的8.0系统下测试一番。二、测试环境安卓版本:android 8.0—API26 手机型号:Nexus_5X ..._屏幕转向活动周期

[Firefox扩展] TableTools2: 对网页上的表格提供排序、过滤、图表分析等功能-程序员宅基地

最近发现一个很不错的Firefox扩展,分享给大家。跟以往分享那些不同,这个扩展具有真正的“实用价值” :-) TableTools2 - Copy/Sort/Chart/Filter Table & More! 1.17by Mingyi LiuDoes everything for HTML tables: Copy (table/row/column/cell), Sor...

SQL查询--列出薪资比“SMITH”多的所有员工_列出薪金比smith多的所有员工-程序员宅基地

请先查看解决问题所需的数据表结构:点击跳转问题:列出薪资比“SMITH”多的所有员工答案:解法一:select * from emp where sal>(select sal from emp where ename='SMITH');解法二:select * from emp A where exists(select null from emp_列出薪金比smith多的所有员工

帝国cms网站迁移教程-程序员宅基地

帝国cms网站迁移教程核心提示:网站迁移步骤: 1、在旧服务器备份数据库、d附件目录与表单目录; 2、到新服务器安装新的帝国网站管理系统; 3、登陆后台恢复备份的数据库、d附件目录与表单目录; 4、重新生成前台页面; 5、网站迁移完毕。 一、在旧服务器备份数据库、d附件目录与表单

粒子群算法优化PID参数实例_studyer_domi的博客-程序员宅基地

粒子群优化算法(PSO)以及Matlab实现1、粒子群算法粒子群算法是一种智能优化算法。关于智能,个人理解,不过是在枚举法的基础上加上了一定的寻优机制。试想一下枚举法,假设问题的解空间很小,比如一个函数 y = x^2 ,解空间在[-1,1],现在求这个函数的最小值,我们完全可以使用枚举法,比如在这里,在解空间[-1,1]上,取1000等分,也就是步长为0.002,生成1000个x值,然后代入函数中,找到这1000个最小的y就可以了。然而实际情况不是这样的,比如为什么选1000等分,不是1w,10w等_粒子群算法优化pid参数

使用python爬取中国电影票房数据并写入csv文件_中国电影大数据分析下载。csv-程序员宅基地

环境PyCharm 2021.1.2 x64爬取的目标网页一、代码import requestsfrom bs4 import BeautifulSoupurl = "http://58921.com/alltime/wangpiao"#目标网页response = requests.get(url)#print(response.text)response.encoding = "utf-8"text = response.textbs = BeautifulSoup(text,'l_中国电影大数据分析下载。csv

随便推点

Metasploit 使用msfconsole帮助功能技巧-程序员宅基地

Metasploit使用msfconsole帮助功能技巧当用户使用Metasploit框架时,通常都是直接执行msfconsole,进入MSF终端。此时,将使用所有默认设置启动了Metasploit框架。用户也可以在启动时,进行简单配置。为了帮助用户配置Metasploit框架,启动MSF终端时,使用msfconsole--help技巧查看更多可以配置的选项。然后,在执行msfconsole...

MATLAB中datestr与datenum的函数效率问题-程序员宅基地

最近用Matlab写了个东西,运行效率不如我意。用Profiler跟踪了一下,结果让我大吃一惊。其中三分之一的时间花费在datestr这个函数上,六分之一的时间花费在save和load数据上。这里先谈前一个问题,关于save和load的效率以后再谈。1.datestr和datenum的功能这两个函数的功能需要从日期(和时间)的表示方法谈起。一个日期,它可以用一个字符串来表示,比如"

iOS UIView简单的缩放动画效果_ios uiview 缩放-程序员宅基地

// 创建一个背景self.bgView = [UIView new]; [self addSubview:self.bgView]; [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.bounds.origin.x);_ios uiview 缩放

python界面交互pyside2的学习(2):制作ui界面的准备工作_pyside2设计侧边栏-程序员宅基地

在上一次的学习中,我们学习了如何用pyside2创建一个简单的窗口,但是实在是太简陋了。为了设计ui界面,并将其放到pyside2程序中,我们需要做一些准备工作。首先我们要安装一个软件,它的名字叫做:Qt Creator,也简称QC,它是一个用来设计ui界面的软件,具体的下载方式我也就不介绍了,大家自己安装下载。下载完成后,打开大概是这样:既然能打开QC设计界面,那就让我们进行下一步准备工作:ui文件转python的.py文件。废话不多说,直接上代码:"""qt2py_release_v_1_pyside2设计侧边栏

vs2017 开始自己的第一个深度学习例子——MNIST分类(基于TensorFlow框架)-程序员宅基地

这是针对于博客vs2017安装和使用教程(详细)的深度学习例子——MNIST分类项目新建示例目录一、新建项目二、运行代码三、生成结果一、新建项目1.项目创建参照博主文章:vs2017 开始自己的第一个Python程序2.输入代码:# -*- coding: utf-8 -*-#获得数据集from tensorflow.examples.tutorials.m...

linux网卡驱动内核文件目录,LINUX内核升级更新网卡驱动_创新工场的博客-程序员宅基地

转载请注明来自"祁峰"的程序员宅基地因项目需要,将当前内核(2.6.32-220.el6.x86_64)升级到目标内核(2.6.33-110.el6.x86_64),但是编译的目标内核(2.6.33-110.el6.x86_64)的对应驱动程序并不一定支持当前系统的对应设备。本篇将详细讲述目标内核驱动无法支持当前网卡设备的处理步骤。01、编译目标内核请参考内核编译相关文档(省略)02、显示所有网卡..._linux网卡驱动目录