postgreSQL-复制槽

1.复制槽简介

流复制正常工作的时候,主服务器不会为落后的备用服务器保留额外的 WAL。在某些情况
下,由于某些原因,从服务器可能会断开连接,从而导致延迟的时间增大,并且当某些未
复制的 WAL 文件被回收,备用机无法恢复,就会收到如下错误:

ERROR: requested WAL segment 000000010000000000000008 has already been 
removed
复制槽(Physical Replication Slot)提供了一种办法确保主库不会删除还未发送到备库的
WAL 日志,即使备库掉线。
通过 Replication Slot 记录的从库状态,PostgreSQL 会保证从库还没有 apply 的日志,
不会从主库的日志目录里面清除。而且,replication slot 的状态信息是持久化保存的,即
便从库断掉或主库重启,这些信息仍然不会丢掉或失效。

 2.创建复制槽

  • 主库创建复制槽
select * from pg_create_physical_replication_slot('slot1'); 
 slot_name | lsn 
-----------+----- 
 slot1 | 
(1 row) 
select * from pg_replication_slots; 
-[ RECORD 1 ]-------+--------- 
slot_name           | slot1 #复制槽名称 
plugin              | #复制槽对应的输出插件名,如果是物理复制槽,这里显示为空 
slot_type           | physical #复制槽类型,有 physical 或 logical 
datoid              | #复制槽对应的数据库 oid,如果物理复制槽,此字段显示为空 
database            | #复制槽对应的数据库名称,如果物理复制槽,此字段显示为空 
temporary           | f #是否为临时复制操,临时槽不会被保存在磁盘上并且会在出错
或会话结束时自动被删除掉
### PostgreSQL 复制使用方法及配置教程 #### 启用逻辑复制 为了在PostgreSQL中设置复制,首先需要确保已启用了逻辑复制功能。这涉及到更新`postgresql.conf`文件中的特定参数。 编辑PostgreSQL配置文件(通常位于`postgresql.conf`),并将`wal_level`参数设为`replica`或更高级别以支持逻辑解码[^1]: ```bash wal_level = replica ``` 此更改允许数据库生成足够的WAL日志条目来实现数据的一致性和恢复能力,同时也满足了逻辑复制的需求。 #### 创建物理复制 创建一个新的物理复制可以通过执行SQL命令完成。连接到主服务器上的psql客户端工具或其他兼容接口,并运行如下语句: ```sql SELECT * FROM pg_create_physical_replication_slot('my_physical_slot'); ``` 这里定义了一个名为`my_physical_slot`的新复制。请注意,在生产环境中应选择更具描述性的名称以便管理和识别。 #### 查看现有复制状态 要查看当前存在的所有复制及其状态信息,可以查询系统视图`pg_replication_slots`: ```sql SELECT slot_name, plugin, active, restart_lsn FROM pg_replication_slots; ``` 上述查询返回的结果列出了每一个活跃的复制详情,包括插件名、活动标志位以及最近一次重置位置(LSN)等重要属性。 #### 删除不再使用的复制 当某个备用节点被移除或者重新初始化时,则应当清理掉对应的过期复制以免占用不必要的资源。删除指定复制的操作同样简单明了: ```sql SELECT pg_drop_replication_slot('my_physical_slot'); ``` 通过这种方式即可安全地释放已被弃用的复制所持有的锁和其他内部结构。 #### 配置从库环境 对于作为备选实例的角色来说,除了基本的服务启动外还需要额外做一些调整工作。例如修改服务单元文件内的环境变量指向实际的数据目录路径[^4]: ```ini Environment=PGDATA=/data/pgsql/data/ ``` 之后记得重启PostgreSQL进程使新的设定生效[^3]。 最后一步就是确认整个集群架构下的各个组件之间能够正常通信交互,从而保障高效稳定的读写分离机制得以顺利实施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值