codecamp

PostgreSQL 逻辑流复制协议

52.5.1. 逻辑流复制参数
52.5.2. 逻辑复制协议消息
52.5.3. 逻辑复制协议的消息流

这一节介绍逻辑复制协议,它是一种以复制命令START_REPLICATION SLOT slot_name LOGICAL开始的消息流。

逻辑流复制协议建立在物理流复制协议的原始积累之上。

52.5.1. 逻辑流复制参数

逻辑复制命令START_REPLICATION接受下列参数:

proto_version

协议版本。当前支持版本1

publication_names

要订阅(接收更改)的publication名称列表,用逗号分隔。每一个publication名称个体都被当作一个标准的对象名称,并且可以根据需要加上引号。

52.5.2. 逻辑复制协议消息

协议消息的个体在接下来的小节中讨论。个体的消息在第 52.9 节中介绍。

所有的顶层协议消息都以一个消息类型字节开头。虽然被表示为字符代码,但这是一个没有相关编码的有符号字节。

由于流复制协议提供了一个消息长度,因此不需要顶层协议消息在其头部嵌入长度。

52.5.3. 逻辑复制协议的消息流

START_REPLICATION命令和重放进度消息之外,所有信息流的方向都是从后端到前端。

逻辑复制协议会逐个发送事务个体。这意味着在一对Begin消息和Commit消息之间的所有消息都属于同一个事务。

每一个被发送的事务都包含零个或者多个DML消息(插入、更新、删除)。在级联设置的情况下,它还包括Origin消息。Origin消息表示该事务是在不同的复制节点上产生的。由于逻辑复制协议范围内的复制节点可以是任何东西,所以唯一的标识符是源头的名称。其下游的责任是根据需要处理这一信息(如果需要处理)。Origin消息总是在事务中任何DML消息之前被发送。

每个DML消息中都包含一个任意的关系ID,它可以被映射到Relation消息中的一个ID。Relation消息描述给定关系的模式。为一个给定的关系发送Relation消息的时机是:在当前会话中第一次为该关系发送DML消息,或者从上一次该关系的Relation消息以后该关系的定义发生改变。协议假定客户端有能力缓存够用的关系元数据。


PostgreSQL 流复制协议
PostgreSQL 消息数据类型
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }