GBase8c使用wal2json逻辑复制槽

原文链接:https://www.gbase.cn/community/post/4065
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

1. 参数设置

要想使用wal2json逻辑复制,要设置以下参数:

wal_level = logical

enable_slot_log = on

wal_level设置为logical,表示WAL日志支持逻辑复制。如果需要进行备机解码,要在对应的主机上设置enable_slot_log为on。

2. 逻辑复制槽的使用

2.1 创建逻辑复制槽

下面来创建一个逻辑复制槽例子,复制槽名为test_slot,使用的复制槽插件为wal2json。

select pg_create_logical_replication_slot('test_slot', 'wal2json');

2.2 查询逻辑复制槽

select * from pg_replication_slots;

select pg_get_replication_slots();

PG_REPLICATION_SLOTS视图查看复制槽的信息。

名称

类型

描述

slot_name

text

复制槽的名称。

plugin

text

逻辑复制槽对应的输出插件名称。

slot_type

text

复制槽的类型。

physical:物理复制槽。

logical:逻辑复制槽。

datoid

oid

复制槽所在的数据库OID。

database

name

复制槽所在的数据库名称。

active

boolean

复制槽是否为激活状态。

t(true):表示是。

f(false):表示不是。

xmin

xid

数据库须为复制槽保留的最早事务的事务号。

catalog_xmin

xid

数据库须为逻辑复制槽保留的最早的涉及系统表的事务的事务号。

restart_lsn

text

复制槽需要的最早xlog的物理位置。

dummy_standby

boolean

复制槽的连接对端是否为从备。

t(true):表示是。

f(false):表示不是。

confirmed_flush

text

逻辑复制槽专用,客户端确认接收到的日志位置。

2.3 删除逻辑复制槽

select pg_drop_replication_slot('test_slot');

2.4 解码复制槽

有2种方式解码复制操,一种是解码不推进复制槽(下次解码可以再次获取本次解出的数据),另一种是解码并推进复制槽。

解码不推进复制槽pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value')

解码并推进复制槽pg_logical_slot_get_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value')

下面举例:

创建一张表并插入数据

postgres=# create table t1(id int, c1 int);

CREATE TABLE

postgres=# insert into t1 values (1,1);

INSERT 0 1

postgres=# insert into t1 values (2,2);

解码并推进逻辑槽

select pg_logical_slot_get_changes('test_slot', null, null);

解码不推进逻辑槽

没有记录是正常的,因为之前已经推进过逻辑槽,如果再有新的数据变动,就会查询到结果。

3. 逻辑复制槽监控

select

 slot_name,

 database as datname,

  plugin,

 slot_type,

  datoid,

 database,

  active,

  xmin,

 catalog_xmin, 

 restart_lsn,

 pg_size_pretty(pg_xlog_location_diff(

  case

    when pg_is_in_recovery() then pg_last_xlog_receive_location()

    else pg_current_xlog_location()

  end ,

 restart_lsn)) as delay_lsn_bytes,

 dummy_standby,

 confirmed_flush

from pg_replication_slots;

由于不推进复制槽,会使得GBase不能自动清理WAL日志,日志的积累会占用本地磁盘空间,通过该SQL可以查询当前逻辑槽所需的LSN到最新LSN之间的字节数,以此来大致判断是否应该推挤复制槽。

原文链接:https://www.gbase.cn/community/post/4065
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值