首页 > 其他分享 >GBase8c使用wal2json逻辑复制槽

GBase8c使用wal2json逻辑复制槽

时间:2024-09-19 17:26:49浏览次数:10  
标签:slot 逻辑 wal2json 解码 logical 复制 GBase8c pg

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();

GBase8c使用wal2json逻辑复制槽_数据

 

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);

GBase8c使用wal2json逻辑复制槽_数据库_02

解码不推进逻辑槽

GBase8c使用wal2json逻辑复制槽_json_03

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

 

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之间的字节数,以此来大致判断是否应该推挤复制槽。

标签:slot,逻辑,wal2json,解码,logical,复制,GBase8c,pg
From: https://blog.51cto.com/u_17026136/12058016

相关文章

  • 富文本编辑器CKEDITOR支持从WORD复制粘贴保留格式和图片的插件
    编辑器:ckeditor前端:vue2,vue3.vue-cli后端:asp,jsp,php,asp.net,.netcore功能:复制粘贴word内容图片该说不说最近这个需求挻火的,今天早上又有网友加我QQ,实际上之前QQ号码就已经在网上公开了,但是还是有很多网友找不到,这个说实话就真没办法了,除了公布QQ号码以外我还公开了微信号码......
  • Redis 主从复制
    Redis的主从复制(Replication)是其高可用性和扩展性的重要特性之一。它允许你在多个Redis服务器之间同步数据,从而提高数据的可用性和读取性能。基本概念主节点(Master):处理写操作和大多数读操作,数据的主要存储位置。从节点(Slave):复制主节点的数据,通常用于负载均衡,分担读操作的压......
  • MYSQL 查询将列中的所有数据从一个数据库复制到另一个数据库
    数据迁移的定义数据迁移是指将数据从一个系统或存储位置移动到另一个系统或存储位置的过程。它涉及到数据的提取、转换和加载,以确保数据在新的环境中能够正确地使用和访问。数据迁移通常是为了实现系统升级、数据中心迁移、数据库合并等目的。在数据迁移过程中,需要考虑数据的完整性......
  • WORD图文混排复制到XHEDITOR图片不显示
    编辑器:xhEditor前端:vue2,vue3,vue-cli,html5后端:asp,php,jsp,springboot,asp.net,.netcore功能:复制粘贴word内容图片,要求:免费,开源,技术支持最近搞定块挻火的,今天早上又有网友加我微信私聊,也是想了解这块的技术和方案。昨天晚上论坛里面的一个网友给我发私信,想了解一下如何解......
  • docker 将进程内的文件复制到物理机路径
     在实际开发过程中,经常遇到使用docker部署数据库时  很多同学未将容器的路径跟服务器路径做一个映射,从而会导致很多问题出现,因此做个记录1.使用dockerps命令可以获取docker容器中所有正在运行的容器,如下图所示 2.运行 dockerexec-it8236262ad053/bin/bash  ......
  • mysql5.5源码主从复制搭建(以两台机器的单实例为例)
    mysql5.5源码主从复制搭建(以两台机器的单实例为例)如果对运维课程感兴趣,可以在b站上、csdn或微信视频号上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频项目1  配置mysql服务器的主从结构(开始时主从数据不一致时需要找到临界点的主从同步,主库初始......
  • MySQL 主从复制:实现数据同步与高可用
    在数据库系统中,数据的可靠性和可用性至关重要。MySQL的主从复制功能为我们提供了一种有效的方式来实现数据同步和高可用。今天,我们就来深入探讨一下MySQL中如何实现主从复制。一、主从复制的概念与作用主从复制是指将一个MySQL数据库服务器(主服务器)的数据复制到一个或多个M......
  • Mysql 搭建主从复制
    DockerMysql镜像启动命令(主库)dockerrun--namemysql-master -ti-d--privileged="true" -p3306:3306alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized:20240221-8.0.32-2.3.0mysql_keentune.sh 修改临时密码如......
  • MySQL基于GTID同步模式搭建主从复制
    系列文章目录rpmbuild构建mysql5.7.42版本的rpm包文章目录系列文章目录一、mysql-5.7.42RPM包构建二、同步模式分类介绍1.异步同步模式2.半同步模式2.1.实现半同步操作流程2.2.半同步问题总结2.3.半同步一致性2.4.异步与半同步对比3.GTID同步三、GTID同步介绍1.gtid......
  • 《C++编程规范》六、构造、析构与复制
    目录第47条以同样的顺序定义和初始化成员变量使用这些函数之所以需要小心,其中一个原因是几乎一半的情况下编译器都会为我们生成代码。另一个原因是,C++默认时总是将类当作类似于值的类型,但是实际上并非所有的类型都类似于值(见第32条)。知道何时应该显式地编写(或者禁止)这些特殊......