逻辑复制从拷贝发布者数据库上的数据库快照开始。拷贝一旦完成,发布者上的更改会在它们发生时实时传送给订阅者。订阅者按照数据在发布者上被提交的顺序应用数据,这样任意单一订阅中的发布的事务一致性才能得到保证。
逻辑复制被构建在一种类似于物理流复制(见第 26.2.5 节)的架构上。它由“walsender”和“apply”进程实现。walsender进程开始对WAL的逻辑解码(在 第 48 章中描述)并且载入标准逻辑解码插件(pgoutput)。该插件把从WAL中读取的更改转换成逻辑复制协议(见第 52.5 节)并且根据发布说明过滤数据。然后数据会被连续地使用流复制协议传输到应用工作者,应用工作者会把数据映射到本地表并且以正确的事务顺序应用它们接收到的更改。
订阅者数据库上的应用进程总是将session_replication_role
设置为replica
运行,这会产生触发器和约束上通常的效果。
逻辑复制应用进程当前仅会引发行触发器,而不会引发语句触发器。不过,初始的表同步是以类似一个COPY
命令的方式实现的,因此会引发INSERT
的行触发器和语句触发器。
已有的被订阅表中的初始数据会被快照并且以一种特殊类型的应用进程的并行实例进行拷贝。这种进程将创建自己的临时复制槽并且拷贝现有的数据。一旦现有的数据被拷贝完,工作者会进入到同步模式,主应用进程会流式传递在使用标准逻辑复制拷贝初始数据期间发生的任意改变,这会确保表被带到一种已同步的状态。一旦同步完成,该表的复制的控制权会被交回给主应用进程,其中复制会照常继续。
目录32.1. 运行测试32.1.1. 在一个临时安装上运行测试32.1.2. 在一个现有安装上运行测试32.1.3. 附加测试套件32.1.4. 区域和编码...
本文章中的33.1.1. 连接字符串33.1.2. 参数关键词下列函数会建立到一个PostgreSQL后端服务器的连接。 一个应用程序可以在一个时...
33.9.1. 用于发送COPY数据的函数33.9.2. 用于接收COPY数据的函数33.9.3. 用于COPY的废弃函数 PostgreSQL中的COPY命令有用于libpq...
如果libpq已经在编译时打开了 LDAP 支持(configure的选项--with-ldap),就可以通过 LDAP 从一个中央服务器检索host或dbname之...
34.3.1. 创建一个大对象34.3.2. 导入一个大对象34.3.3. 导出一个大对象34.3.4. 打开一个现有的大对象34.3.5. 向一个大对象写入数...
35.13.1. 主变量的可见范围35.13.2. 使用外部 C 模块的 C++ 应用开发ECPG 对于 C++ 应用提供了有限的支持。这一节描述了一些忠告...
EXECUTE IMMEDIATE — 动态地准备和执行一个语句大纲EXECUTE IMMEDIATE string描述 EXECUTE IMMEDIATE立刻预备并且执行一个动态...
Input Button name 属性 Button 对象定义和用法name 属性可设置或者返回 button 元素的 name 属性值。name 属性用于表单提交后向...