参数配置
逻辑解码参数配置如下:
将 wal_level 设置为logical允许WAL记录逻辑解码所需的信息。
max_replication_slots 指定了发送端可以支持的最大复制槽数量,默认为10个
max_wal_sender 指定发送方用于流复制的并发连接的最大数量,默认值也是10
pg_recvlogica
pg_recvlogical是 PostgreSQL自带的工具,它管理插槽并使用插槽中的流数据。
必须至少要指定下列选项之一来选择一个动作:
--create-slot
为 --dbname 指定的数据库用 --slot 指定的名称创建一个新的逻辑复制槽,使用 --plugin 指定的
输出插件。
--drop-slot
删除名称由 --slot 指定的复制槽,然后退出。
--start
从 --slot 指定的逻辑复制槽开始进行流式传送更改,一直继续 到被一个信号终止。如果服务器端
关机或者断开连接导致更改流结束,会进入一个 循环一直重试,通过指定 --no-loop 可以防止这种
情况下进入 循环重试。流格式由槽创建时指定的输出插件决定。连接必须是连接到用于创建该槽的
同一个数据库上。
--create-slot 和 --start 可以被一起指定。 --drop-slot 不能和另一个动作组合在一起。
物理流复制
物理流复制内容主要引用自博客。
物理流复制是一种数据库主备同步技术,该特性同步的数据是数据库中物理页面变化数据(WAL),该
模式备库的底层数据页面状态和主库完全相同,这样的实现方案让数据库主备以及同步状态都非常稳
定。
流复制中的角色
主库 backend 进程
它负责执行用户的 SQL,在修改数据前会先记录 WAL(Write-Ahead Logging)日志。这些日志中
事物提交日志(CommitTransaction)由 backend 进程负责写到磁盘。
主库 WALsender 进程
负责把 WAL 日志发送给备库的 WALreceiver 进程。
备库 WALreceiver 进程
负责接收 WALsender 发送的 WAL 日志,并持久化到存储。
备库 startup 进程
负责恢复 WALsender 写到磁盘上的 WAL 日志,把数据 apply 到数据页面上。
评论