网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务
本文导读

展开导读

逻辑复制函数

更新时间:2024-12-19 GMT+08:00
分享
说明:

使用逻辑复制函数,需要设置GUC参数wal_level为logical。具体配置请参考《特性指南》的“逻辑复制 > 逻辑解码 > 使用SQL函数接口进行逻辑解码”章节。

  • pg_create_logical_replication_slot('slot_name', 'plugin_name', 'output_order')

    描述:创建逻辑复制槽。

    参数说明:

    • slot_name

      流复制槽名称。

      取值范围:字符串,仅支持小写字母、数字以及“_”,“?”,“-”,“.”字符,且不支持“.”或“..”单独作为复制槽名称。

    • plugin_name

      插件名称。

      取值范围:字符串,当前支持mppdb_decoding。

    • output_order

      复制槽解码结果输出顺序,该参数为可选参数。

      取值范围:0或1,在DN上默认值为0, 在CN上默认值为1。

      • 0:设为0时,复制槽解码结果按照事务的COMMIT LSN排序。此时复制槽的confirmed_csn为0,此复制槽称为LSN序复制槽
      • 1:设为1时,复制槽解码结果按照事务的CSN排序。此时复制槽的confirmed_csn为非0值,此复制槽称为CSN序复制槽,此类复制槽的confirmed_flush值无意义。

    返回值类型:name, text

    示例:
    gaussdb=# SELECT * FROM pg_create_logical_replication_slot('slot_lsn','mppdb_decoding',0);
     slotname | xlog_position
    ----------+---------------
     slot_lsn | 0/6D08B58
    (1 row)
    
    gaussdb=# SELECT * FROM pg_create_logical_replication_slot('slot_csn','mppdb_decoding',1);
     slotname | xlog_position
    ----------+---------------
     slot_csn | 0/59AD800
    (1 row)

    备注:第一个返回值表示slot_name,第二个返回值在LSN序复制槽和CSN序复制槽下有不同含义。对于LSN序复制槽,该值为复制槽的confirmed_flush,表示COMMIT LSN小于等于该值的事务之后不会被解码输出;对于CSN序复制槽,该值为复制槽的confirmed_csn,表示CSN小于等于该值的事务之后不会被解码输出。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在CN或主DN上调用。

    注意:

    当该函数在CN上执行时,如果output_order值为1,会在所有CN和主DN上创建同名复制槽,如果某些DN上已存在同名复制槽,会在除当前CN节点外,其他不存在同名复制槽的CN和主DN节点上创建CSN序逻辑复制槽,同时报错复制槽已存在。因此需删除DN上已有的同名复制槽(如为LSN序复制槽则需在对应节点手动删除)再在CN上重新创建。如果在CN上创建复制槽时指定output_order为0,则不会在DN上创建复制槽。CN上创建的复制槽仅用于标识DN上存在相关复制槽。

  • pg_create_physical_replication_slot('slot_name', 'isDummyStandby')

    描述:创建新的物理复制槽。

    参数说明:

    • slot_name

      流复制槽名称。

      取值范围:字符串,仅支持小写字母、数字以及“_”,“?”,“-”,“.”字符,且不支持“.”或“..”单独作为复制槽名称。

    • isDummyStandby

      预留参数。

      类型:Boolean

    返回值类型:name,text

    备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。由于该函数创建的物理复制槽没有restart_lsn,会被认为是无效槽,在做checkpoint时会被自动删除。

  • pg_drop_replication_slot('slot_name')

    描述:删除流复制槽。

    参数说明:

    • slot_name

      流复制槽名称。

      取值范围:字符串,仅支持小写字母、数字以及“_”,“?”,“-”,“.”字符,且不支持“.”或“..”单独作为复制槽名称。

    返回值类型:void

    备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。

    注意:
    • 在CN上删除逻辑复制槽时,若为LSN序逻辑复制槽,则仅删除当前节点复制槽,其他节点同名复制槽不受影响;否则只要其他节点有残留同名CSN序逻辑复制槽,执行删除时不会因为某些节点不存在复制槽而报错,同时所有节点的同名复制槽会被成功删除;如果任何节点均不存在该复制槽,则报错。
    • 如果当前CN节点残留LSN序逻辑复制槽,同时其他某些节点上残留同名CSN序逻辑复制槽,则在当前CN节点上执行删除复制槽操作仅会删除本地LSN序逻辑复制槽,待删除完成再次执行删除操作方可删除其他节点的同名CSN序逻辑复制槽。
  • pg_logical_slot_peek_changes('slot_name', 'upto_lsn', upto_nchanges, 'options_name', 'options_value')

    描述:在解码DN上执行, 解码并不推进流复制槽(下次解码可以再次获取本次解出的数据)。

    参数说明:

    • slot_name

      流复制槽名称。

      取值范围:字符串,仅支持小写字母、数字以及“_”,“?”,“-”,“.”字符,且不支持“.”或“..”单独作为复制槽名称。

    • upto_lsn

      在CSN序逻辑复制槽上代表日志的CSN,表示解码直到小于等于此CSN的事务日志解码完毕(可能会解码一个CSN大于指定CSN的事务);在LSN序复制槽上代表日志的LSN,表示解码直到COMMIT LSN大于等于该LSN的第一个事务解码完毕。

      取值范围:字符串(代表十六进制格式表示的uint64,在正中间用'/'分割,左右两边各为一个uint32,如某个uint32为0则显示0),如'1/2AAFC60'、'0/A060'或'3A/0'。为NULL时表示不对解码截止的日志位置做限制。

    • upto_nchanges

      解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。

      取值范围:非负整数。

      说明:

      upto_lsn和upto_nchanges中任一参数达到限制,解码都会结束。

    • options:此项为可选参数,由一系列options_name和options_value一一对应组成。
      • include-xids

        解码出的data列是否包含xid信息。

        取值范围:0或1,默认值为1。

        • 0:设为0时,解码出的data列不包含xid信息。
        • 1:设为1时,解码出的data列包含xid信息。
      • skip-empty-xacts

        解码时是否忽略空事务信息。

        取值范围:0或1,默认值为0。

        • 0:设为0时,解码时不忽略空事务信息。
        • 1:设为1时,解码时会忽略空事务信息。
      • include-timestamp

        解码信息是否包含commit时间戳。

        取值范围:0或1,默认值为0。

        • 0:设为0时,解码信息不包含commit时间戳。
        • 1:设为1时,解码信息包含commit时间戳。
      • only-local

        是否仅解码本地日志。

        取值范围:0或1,默认值为1。

        • 0:设为0时,解码非本地日志和本地日志。
        • 1:设为1时,仅解码本地日志。
      • force-binary

        是否以二进制格式输出解码结果

        取值范围:0,默认值为0。

        • 0:设为0时,以文本格式输出解码结果。
      • white-table-list

        白名单参数,包含需要进行解码的schema和表名。

        取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分隔,不允许存在任意空白符。例:

        gaussdb=# SELECT * FROM pg_logical_slot_peek_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2');
      • max-txn-in-memory

        内存管控参数,单位为MB,单个事务占用内存大于该值即进行落盘。

        取值范围:0~100的整型,默认值为0,即不开启此种管控。

      • max-reorderbuffer-in-memory

        内存管控参数,单位为GB,拼接-发送线程中正在拼接的事务总内存(包含缓存)大于该值则对当前解码事务进行落盘。

        取值范围:0~100的整型,默认值为0,即不开启此种管控。

      • include-user

        事务的BEGIN逻辑日志是否输出事务的用户名字。

        取值范围:0或1,默认值为0。

        • 0:设为0时,事务的BEGIN逻辑日志不输出事务的用户名字。
        • 1:设为1时,事务的BEGIN逻辑日志输出事务的用户名字。
      • exclude-userids

        黑名单用户的OID参数。

        取值范围:指定黑名单用户的OID,多个OID通过','分隔,不校验用户OID是否存在。

      • exclude-users

        黑名单用户的名字参数。

        取值范围:指定黑名单用户的名字,多个名字通过','分隔;通过dynamic-resolution设置是否动态解析识别用户名字。若解码报错用户不存在而中断,在确定日志产生时刻不存在对应的黑名单用户,可以通过配置dynamic-resolution成true或者从用户黑名单中删除报错用户名字来启动解码继续获取逻辑日志。

      • dynamic-resolution

        是否动态解析黑名单用户名字。

        取值范围:0或1,默认值为1。

        • 0:设为0时,当解码观测到黑名单exclude-users中用户不存在时将会报错并退出逻辑解码。
        • 1:设为1时,当解码观测到黑名单exclude-users中用户不存在时继续解码。
    说明:

    其他配置选项可参考《特性指南》中“逻辑复制 > 逻辑解码 > 逻辑解码选项”章节。

    返回值类型:text、xid、text

    示例:
    gaussdb=# EXECUTE DIRECT ON (datanode1) 'SELECT * FROM pg_logical_slot_peek_changes(''slot_lsn'',NULL,4096,''skip-empty-xacts'',''on'')';
     location  |  xid  |                                                                                            data
    -----------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     0/6D0B500 | 46914 | BEGIN 46914
     0/6D0B530 | 46914 | {"table_name":"public.t1","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","1"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
     0/6D0B8B8 | 46914 | COMMIT 46914 (at 2023-02-22 17:29:31.090018+08) CSN 94034528
     0/6D0BB58 | 46915 | BEGIN 46915
     0/6D0BB88 | 46915 | {"table_name":"public.t1","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","2"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
     0/6D0BF08 | 46915 | COMMIT 46915 (at 2023-02-22 17:31:30.672093+08) CSN 94034568
     0/6D0BF08 | 46916 | BEGIN 46916
     0/6D0BF38 | 46916 | {"table_name":"public.t1","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","3"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
     0/6D0C218 | 46916 | COMMIT 46916 (at 2023-02-22 17:31:34.438319+08) CSN 94034570
    (9 rows)
    
    gaussdb=# EXECUTE DIRECT ON (datanode1) 'SELECT * FROM pg_logical_slot_peek_changes(''slot_csn'',NULL,4096,''skip-empty-xacts'',''on'')';
     location  |  xid  |                                                                                            data
    -----------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     0/0       | 46914 | BEGIN CSN: 94034528
     0/0       | 46914 | {"table_name":"public.t1","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","1"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
     0/59ADA60 | 46914 | COMMIT 46914 (at 2023-02-22 17:29:31.090018+08) CSN 94034528
     0/59ADA60 | 46915 | BEGIN CSN: 94034568
     0/59ADA60 | 46915 | {"table_name":"public.t1","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","2"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
     0/59ADA88 | 46915 | COMMIT 46915 (at 2023-02-22 17:31:30.672093+08) CSN 94034568
     0/59ADA88 | 46916 | BEGIN CSN: 94034570
     0/59ADA88 | 46916 | {"table_name":"public.t1","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","3"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]}
     0/59ADA8A | 46916 | COMMIT 46916 (at 2023-02-22 17:31:34.438319+08) CSN 94034570
    (9 rows)

    备注:上述函数示例中,datanode1为需要解码的DN节点名称,slot_lsn/slot_csn为逻辑复制槽名称。函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN(LSN序复制槽)或CSN(CSN序复制槽)位置、xid和解码内容。其中location列代表CSN时,仅当解码到COMMIT日志时才会更新。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。

    说明:

    在CN上,该函数不支持在CSN序复制槽(confirmed_csn值不为0)上执行。

  • pg_logical_slot_get_changes('slot_name', 'upto_lsn', upto_nchanges, 'options_name', 'options_value')

    描述:在解码DN上执行, 解码并推进流复制槽。

    参数说明:与pg_logical_slot_peek_changes一致,详细内容请参见•pg_logical_slot_peek_ch...

    备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。

    说明:

    在CN上,该函数不支持在CSN序复制槽(confirmed_csn值不为0)上执行。此函数在备DN调用会同步推进主DN上对应的逻辑复制槽。在备DN上执行该函数,推进主DN对应复制槽时需占用主DN的一个walsender。由于逻辑解码功能会为每个逻辑复制槽预留walsender,因此正常场景执行该函数会正常推进主DN的逻辑复制槽,如果短时间连续执行该函数会导致通知主DN推进失败,且没有报错。

  • pg_logical_slot_peek_binary_changes('slot_name', 'upto_lsn', upto_nchanges, 'options_name', 'options_value')

    描述:在解码DN上执行, 以二进制格式解码且不推进流复制槽(下次解码可以再次获取本次解出的数据)。

    参数说明:

    • slot_name

      流复制槽名称。

      取值范围:字符串,仅支持小写字母、数字以及“_”,“?”,“-”,“.”字符,且不支持“.”或“..”单独作为复制槽名称。

    • upto_lsn

      在CSN序逻辑复制槽上代表日志的CSN,表示解码直到小于等于此CSN的事务日志解码完毕(可能会解码一个CSN大于指定CSN的事务);在LSN序复制槽上代表日志的LSN,表示解码直到COMMIT LSN大于等于该LSN的第一个事务解码完毕。

      取值范围:字符串(代表十六进制格式表示的uint64,在正中间用'/'分割,左右两边各为一个uint32,如某个uint32为0则显示0),如'1/2AAFC60'、'0/A060'或'3A/0'。为NULL时表示不对解码截止的日志位置做限制。

    • upto_nchanges

      解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。

      取值范围:非负整数。

      说明:

      upto_lsn和upto_nchanges中任一参数达到限制,解码都会结束。

    • options:此项为可选参数,由一系列options_name和options_value一一对应组成。
      • include-xids

        解码出的data列是否包含xid信息。

        取值范围:0或1,默认值为1。

        • 0:设为0时,解码出的data列不包含xid信息。
        • 1:设为1时,解码出的data列包含xid信息。
      • skip-empty-xacts

        解码时是否忽略空事务信息。

        取值范围:0或1,默认值为0。

        • 0:设为0时,解码时不忽略空事务信息。
        • 1:设为1时,解码时会忽略空事务信息。
      • include-timestamp

        解码信息是否包含commit时间戳。

        取值范围:0或1,默认值为0。

        • 0:设为0时,解码信息不包含commit时间戳。
        • 1:设为1时,解码信息包含commit时间戳。
      • only-local

        是否仅解码本地日志。

        取值范围:0或1,默认值为1。

        • 0:设为0时,解码非本地日志和本地日志。
        • 1:设为1时,仅解码本地日志。
      • force-binary

        是否以二进制格式输出解码结果。

        取值范围:0或1,默认值为0,均以二进制格式输出结果。

      • white-table-list

        白名单参数,包含需要进行解码的schema和表名。

        取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分隔,不允许存在任意空白符。例:select * from pg_logical_slot_peek_binary_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2');

      • max-txn-in-memory

        内存管控参数,单位为MB,单个事务占用内存大于该值即进行落盘。

        取值范围:0~100的整型,默认值为0,即不开启此种管控。

      • max-reorderbuffer-in-memory

        内存管控参数,单位为GB,拼接-发送线程中正在拼接的事务总内存(包含缓存)大于该值则对当前解码事务进行落盘。

        取值范围:0~100的整型,默认值为0,即不开启此种管控。

      • include-user

        事务的BEGIN逻辑日志是否输出事务的用户名字。

        取值范围:0或1,默认值为0。

        • 0:设为0时,事务的BEGIN逻辑日志不输出事务的用户名字。
        • 1:设为1时,事务的BEGIN逻辑日志输出事务的用户名字。
      • exclude-userids

        黑名单用户的OID参数。

        取值范围:指定黑名单用户的OID,多个OID通过','分隔,不校验用户OID是否存在。

      • exclude-users

        黑名单用户的名字参数。

        取值范围:指定黑名单用户的名字,多个名字通过','分隔;通过dynamic-resolution设置是否动态解析识别用户名字。若解码报错用户不存在而中断,在确定日志产生时刻不存在对应的黑名单用户,可以通过配置dynamic-resolution成true或者从用户黑名单中删除报错用户名字来启动解码继续获取逻辑日志。

      • dynamic-resolution

        是否动态解析黑名单用户名字。

        取值范围:0或1,默认值为1。

        • 0:设为0时,当解码观测到黑名单exclude-users中用户不存在时将会报错并退出逻辑解码。
        • 1:设为1时,当解码观测到黑名单exclude-users中用户不存在时继续解码。
    说明:

    某些配置选项在函数中仅能配置而不实际生效,可参考《特性指南》中“逻辑复制 > 逻辑解码 > 逻辑解码选项”章节。

    返回值类型:text、xid、bytea

    备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和二进制格式的解码内容。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。

    说明:

    在CN上,该函数不支持在CSN序复制槽(confirmed_csn值不为0)上执行。

  • pg_logical_slot_get_binary_changes('slot_name', 'upto_lsn', upto_nchanges, 'options_name', 'options_value')

    描述:在解码DN上执行, 以二进制格式解码并推进流复制槽。

    参数说明:与pg_logical_slot_peek_binary_changes一致,详细内容请参见•pg_logical_slot_peek_bi...

    备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。

    说明:

    在CN上,该函数不支持在CSN序复制槽(confirmed_csn值不为0)上执行。该函数不支持在备DN上执行。

  • pg_replication_slot_advance ('slot_name', 'upto_lsn')

    描述:在解码DN执行, 直接推进流复制槽到指定LSN,不输出解码结果。

    参数说明:

    • slot_name

      流复制槽名称。

      取值范围:字符串,不支持除小写字母,数字,以及_?-.以外的字符,且不支持'.'或'..'单独作为复制槽名称。

    • upto_lsn

      在CSN序逻辑复制槽上代表推进到的日志CSN位置,下次解码时只会输出比该CSN大的事务结果。如果输入的CSN比当前流复制槽记录的confirmed_csn还要小,则直接返回;如果输入的CSN比当前可获取的最新CSN要大,则推进到当前可获取的最新CSN。

      在LSN序复制槽上代表推进到的日志LSN位置,下次解码时只会输出提交位置比该LSN大的事务结果。如果输入的LSN比当前流复制槽记录的推进位置还要小,则报错;如果输入的LSN比当前最新物理日志LSN还要大,则推进到当前最新物理日志LSN。

      取值范围:字符串(代表十六进制格式表示的uint64,在正中间用'/'分割,左右两边各为一个uint32,如某个uint32为0则显示0),如'1/2AAFC60'、'0/A060'或'3A/0'。为NULL时表示不对解码截止的日志位置做限制。

    返回值类型:name, text

    说明:
    • 返回值分别对应slot_name和实际推进到的位置(CSN或LSN)。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。
    • 在CN上,该函数不支持在CSN序复制槽(confirmed_csn值不为0)上执行。该函数在备DN上仅支持对逻辑复制槽执行,同步推进主DN上对应的逻辑复制槽。在备DN上执行该函数,推进主DN对应复制槽时需占用主DN的一个walsender。由于逻辑解码功能会为每个逻辑复制槽预留walsender,因此正常场景执行该函数会正常推进主DN的逻辑复制槽,如果短时间连续执行该函数会导致通知主DN推进失败,且没有报错。
  • pg_get_replication_slots()

    描述:获取复制槽列表。

    示例:
    在DN上执行查询:
    gaussdb=# SELECT * FROM pg_get_replication_slots();
     slot_name |     plugin     | slot_type | datoid | active | xmin | catalog_xmin | restart_lsn | dummy_standby | confirmed_flush | confirmed_csn
    -----------+----------------+-----------+--------+--------+------+--------------+-------------+---------------+-----------------+---------------
     dn_6002   |                | physical  |      0 | t      |      |              | 0/3622B528  | f             |                 |
     dn_6003   |                | physical  |      0 | t      |      |              | 0/3622B528  | f             |                 |
     slot_lsn  | mppdb_decoding | logical   | 131072 | f      |      |        66658 | 0/36252350  | f             | 0/362523D0      |
     slot_test | mppdb_decoding | logical   | 131072 | f      |      |        66658 | 0/36251718  | f             |                 |      10025527
    (4 rows)
    在CN上执行查询:
    gaussdb=# SELECT * FROM pg_get_replication_slots();
     slot_name |     plugin     | slot_type | datoid | active | xmin | catalog_xmin | restart_lsn | dummy_standby | confirmed_flush | confirmed_csn
    -----------+----------------+-----------+--------+--------+------+--------------+-------------+---------------+-----------------+---------------
     slot_test | mppdb_decoding | logical   | 139264 | f      |      |              |             | f             |                 |
    (1 row)

    返回值类型: text, text, text, oid, boolean, xid, xid, text, boolean, text, xid

    备注:返回值的slot_name代表复制槽名,plugin代表逻辑复制槽对应的输出插件名称,slot_type代表复制槽的类型(physical代表物理复制槽,logical代表逻辑复制槽),datoid代表复制槽所在的数据库OID,active代表复制槽是否为激活状态(f代表未激活,t代表已激活),xmin代表数据库须为复制槽保留的最早事务的事务号,catalog_xmin代表数据库须为逻辑复制槽保留的最早的涉及系统表的事务的事务号,restart_lsn表示复制槽需要的最早xlog的物理位置,dummy_standby为预留参数,confirmed_flush代表客户端确认接收到的日志位置(逻辑复制槽专用),confirmed_csn代表客户端确认接收到的日志中最后一个事务对应的CSN(逻辑复制槽专用)。

    须知:

    在DN上执行查询,LSN序逻辑复制槽的confirmed_csn查询结果为空,CSN序逻辑复制槽的confirmed_flush查询结果为空;在CN上执行查询,CSN序逻辑复制槽的catalog_xmin、restart_lsn、confirmed_flush和confirmed_csn均不予显示,查询结果为空。

  • pg_logical_get_area_changes('LSN_start', 'LSN_end', upto_nchanges, 'decoding_plugin', 'xlog_path', 'options_name', 'options_value')

    描述:在解码DN执行, 没有ddl的前提下,指定lsn区间进行解码,或者指定xlog文件进行解码。

    说明:

    约束条件如下:

    • 当前网络和硬件环境正常。
    • 单条元组大小建议不超过500MB,500MB~1GB之间会报错。
    • 不支持数据页复制这种不落xlog的数据找回。
    • 调用接口时,要求日志级别wal_level=logical,且只有在wal_level=logical期间产生的日志文件才能被解析。如果使用的xlog文件为非logical级别,则解码内容没有对应的值和类型,无其他影响。如果wal_level未被设置成logical级别,则报错不解码。
    • xlog文件只能被完全同构的dn的某个副本解析,且数据库发生没有DDL操作和VACUUM FULL,以确保可以找到数据对应的元信息。
    • 需注意一次不要读入过多xlog文件,在指定范围解码不指定文件解码时,推荐指定一次一个xlog文件的大小。一般情况下,一个xlog文件解码过程中占用内存约为该xlog文件大小的2~3倍。
    • 不支持VACUUM FULL之前的数据找回。
    • 不能解码扩容前的xlog文件。
    • 对于update语句解码需要表有主键,否则会导致update语句where里数据为空。
    • 此解码方式为根据xlog文本记录数据进行解码,将可解码内容解码出来,不基于事务进行解码。因此不在此xlog里的数据无法解码。
    • 从解码点开始,如果未指定解码文件,会先检测从解码开始点到最新redo值之间是否发生ddl,如果发生ddl则全部不解码;如果指定解码文件,会同时检测解码文件的开始点到文件最后可读内容之间,以及数据目录下xlog开始点到最新redo值之间是否发生ddl,检测到一条ddl则对所有表都不解码。

    备注:打开三权分立时,只有数据库初始用户可以调用;关闭三权分立时,需要具备系统管理员权限。

    参数说明:

    • LSN_start

      指定开始解码的lsn。

      取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。

    • LSN_end

      指定解码结束的lsn。

      取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。

    • upto_nchanges

      解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。

      取值范围:非负整数。

      说明:

      LSN和upto_nchanges中任一参数达到限制,解码都会结束。

    • decoding_plugin

    解码插件,指定解码内容输出格式的so插件。

    取值范围:提供mppdb_decoding和sql_decoding两个解码插件。

    • xlog_path

    解码插件,指定解码文件的xlog绝对路径,文件级别。

    取值范围:NULL 或者 xlog文件绝对路径的字符串。

    • options:此项为可选参数,由一系列options_name和options_value一一对应组成,可以缺省,详见pg_logical_slot_peek_cha...

    示例:

    在CN上执行DML操作,在DN上可以查询出当前DN上执行的DML:
    gaussdb=# execute direct on (datanode1) 'select * from pg_logical_get_area_changes(''0/502E418'', NULL, NULL, ''sql_decoding'', NULL);';
     location  |  xid  |                                  data
    -----------+-------+------------------------------------------------------------------------
     0/502E448 | 17365 | insert into public.t1 values (1, 1);
     0/502E5A0 | 17365 | COMMIT 17365 (at 2023-11-01 11:28:43.92526+08) 2010016
     0/502E5D0 | 17366 | delete from public.t1 where a = 1;insert into public.t1 values (1, 2);
     0/502E6D8 | 17366 | COMMIT 17366 (at 2023-11-01 11:28:45.889283+08) 2010017
     0/502E7B8 | 17367 | delete from public.t1 where a = 1;
     0/502E8B0 | 17367 | COMMIT 17367 (at 2023-11-01 11:28:48.301307+08) 2010018
    (6 rows)
  • gs_get_parallel_decode_status()

    描述:在并行解码所在的DN执行, 监控各个解码线程的读取日志队列和解码结果队列的长度,以便定位并行解码性能瓶颈。

    返回值类型:text、int、text、text、text、int64、int64、TimestampTz

    示例:

    gaussdb=# execute direct on (datanode1) 'select * from gs_get_parallel_decode_status();';
     slot_name | parallel_decode_num | read_change_queue_length  | decode_change_queue_length | reader_lsn | working_txn_cnt | working_txn_memory |      decoded_time
    -----------+---------------------+---------------------------+----------------------------+------------+-----------------+---------------------------------------------
     slot1     |                   2 | queue0: 1005, queue1: 320 | queue0: 63, queue1: 748    | 0/1DCE2578 |              42 |          192927504 | 2023-01-10 11:18:22+08
    (1 row)

    备注:返回值的slot_name代表复制槽名,parallel_decode_num代表该复制槽的并行解码线程数,read_change_queue_length列出了每个解码线程读取日志队列的当前长度,decode_change_queue_length列出了每个解码线程解码结果队列的当前长度,reader_lsn表示当前reader线程读取的日志位置,working_txn_cnt表示当前拼接-发送线程中正在拼接的事务个数,working_txn_memory代表拼接-发送线程中拼接事务占用总内存(单位字节),decoded_time代表该复制槽最新解码到的WAL日志时间。

    须知:

    decoded_time时间来自检查点日志和事务提交日志,存在一定误差。如果没有解码到任何前述包含时间的日志,则显示“2000-01-01 08:00:00+08”(依照数据库设置的时区而定)。

  • gs_get_slot_decoded_wal_time(slot_name)

    描述:在并行解码所在的DN执行, 查看某个活跃状态复制槽最新解码的WAL日志时间。

    参数说明:

    • slot_name:

      要查询的复制槽名称。

      取值范围:字符串,不支持除字母、数字以及(_?-.)以外的字符。

    示例:

    gaussdb=# execute direct on (datanode1) 'select * from gs_get_slot_decoded_wal_time(''replication_slot'');';
     gs_get_slot_decoded_wal_time
    ------------------------------
     2023-01-10 11:25:22+08
    (1 row)

    备注:返回一列值代表该复制槽最新解码到的WAL日志时间。

    须知:

    返回的时间来自检查点日志和事务提交日志,存在一定误差。如果没有解码到任何前述包含时间的日志,则显示“2000-01-01 08:00:00+08”(依照数据库设置的时区而定)。查询一个当前不存在的逻辑复制槽的最新解码的WAL日志时间时,返回NULL,在gsql中NULL显示和设置有关,可以使用\pset null 'null'设置。

  • gs_logical_parallel_decode_status('slot_name')

    描述:在并行解码所在的DN执行, 获取并行逻辑解码某一活跃状态复制槽的解码统计信息,包含26行指标。

    指标定义如下:

    Record - (stat_id int, stat_name TEXT, value TEXT)
    表1 指标含义

    指标名称

    说明

    slot_name

    逻辑解码任务复制槽名称。

    reader_lsn

    逻辑解码日志位置。

    wal_read_total_time

    日志模块加载耗时。

    wal_wait_total_time

    日志模块等待耗时。

    parser_total_time

    reader线程处理耗时。

    decoder_total_time

    各decoder线程处理耗时总值。

    sender_total_time

    sender线程处理耗时。

    net_send_total_time

    网络发送逻辑日志耗时。

    net_wait_total_time

    网络等待发送逻辑日志耗时。

    net_send_total_bytes

    网络发送逻辑日志字节数。

    transaction_count

    事务数量。

    big_transaction_count

    大事务数量。

    max_transaction_tuples

    事务操作元组的最大数量。

    sent_transaction_count

    发送事务数量(本库)。

    spill_disk_transaction_count

    落盘事务数量。

    spill_disk_bytes

    累计落盘字节数量,单位:byte。

    spill_disk_count

    落盘次数。

    input_queue_full_count

    各decode线程输入队列FULL次数总数。

    output_queue_full_count

    各decode线程输出队列FULL次数总数。

    dml_count

    各decode线程解码WAL日志中DML数量(本库)总数。

    dml_filtered_count

    各decode线程解码过滤WAL日志中DML数量(本库)总数。

    toast_count

    涉及TOAST表修改行数。

    candidate_catalog_xmin

    当前逻辑复制槽catalog_xmin候选点。

    candidate_xmin_lsn

    推进catalog_xmin所需要的日志确认接收点。

    candidate_restart_valid

    推进restart_lsn所需要的日志确认接收点。

    candidate_restart_lsn

    当前逻辑复制槽restart_lsn候选点。

    参数说明:

    • slot_name

      流复制槽名称。

      取值范围:字符串,仅支持小写字母、数字以及“_”,“?”,“-”,“.”字符,且不支持“.”或“..”单独作为复制槽名称。

    返回值类型:int、text、text

    示例:

    gaussdb=# execute direct on (datanode1) 'select * from gs_logical_parallel_decode_status(''replication_slot'');';
     stat_id |          stat_name           |      value
    ---------+------------------------------+------------------
           1 | slot_name                    | replication_slot
           2 | reader_lsn                   | 0/357E180
           3 | wal_read_total_time          | 266694599
           4 | wal_wait_total_time          | 266691307
           5 | parser_total_time            | 39971
           6 | decoder_total_time           | 81216
           7 | sender_total_time            | 48193
           8 | net_send_total_time          | 19388
           9 | net_wait_total_time          | 0
          10 | net_send_total_bytes         | 266897
          11 | transaction_count            | 7
          12 | big_transaction_count        | 1
          13 | max_transaction_tuples       | 4096
          14 | sent_transaction_count       | 7
          15 | spill_disk_transaction_count | 1
          16 | spill_disk_bytes             | 244653
          17 | spill_disk_count             | 4096
          18 | input_queue_full_count       | 0
          19 | output_queue_full_count      | 0
          20 | dml_count                    | 4097
          21 | dml_filtered_count           | 0
          22 | toast_count                  | 0
          23 | candidate_catalog_xmin       | 17152
          24 | candidate_xmin_lsn           | 0/420A598
          25 | candidate_restart_valid      | 0/420A598
          26 | candidate_restart_lsn        | 0/420A598
    (26 rows)

    备注:按照指标定义,指标应该满足下列约束关系:

    wal_read_total_time >= wal_wait_total_time;

    transaction_count >= big_transaction_count;

    transaction_count >= sent_transaction_count;

    transaction_count >= spill_disk_transaction_count;

    dml_count >= dml_filtered_count;

    dml_count >= toast_count;

    如果spill_transaction_count == 0,那么 spill_disk_bytes == 0;

    但由于严格保证需要频繁加锁解锁,将对性能造成较大影响,故上面约束关系在极端情况下可能不满足。

    transaction_count 统计的是所有库的事务数量。

    sent_transaction_count统计的是本库的发送事务数量,因为非本库事务将不会被发送。

    当传入不存在的slot_name时,函数不报错,返回值为空。

  • gs_logical_parallel_decode_reset_status('slot_name')

    描述:在并行解码所在的DN执行, 重置gs_logical_parallel_decode_status('slot_name')中的指标。

    参数说明:

    • slot_name

      流复制槽名称。

      取值范围:字符串,仅支持小写字母、数字以及“_”,“?”,“-”,“.”字符,且不支持“.”或“..”单独作为复制槽名称。

    返回值类型:text

    示例:

    gaussdb=# execute direct on (datanode1) 'select * from gs_logical_parallel_decode_reset_status(''replication_slot'');';
     gs_logical_parallel_decode_reset_status
    -----------------------------------------
     OK
    (1 row)
    
    gaussdb=# execute direct on (datanode1) 'select * from gs_logical_parallel_decode_status(''replication_slot'');';
     stat_id |          stat_name           |      value
    ---------+------------------------------+------------------
           1 | slot_name                    | replication_slot
           2 | reader_lsn                   | 0/357E420
           3 | wal_read_total_time          | 0
           4 | wal_wait_total_time          | 0
           5 | parser_total_time            | 0
           6 | decoder_total_time           | 0
           7 | sender_total_time            | 0
           8 | net_send_total_time          | 0
           9 | net_wait_total_time          | 0
          10 | net_send_total_bytes         | 0
          11 | transaction_count            | 0
          12 | big_transaction_count        | 0
          13 | max_transaction_tuples       | 0
          14 | sent_transaction_count       | 0
          15 | spill_disk_transaction_count | 0
          16 | spill_disk_bytes             | 0
          17 | spill_disk_count             | 0
          18 | input_queue_full_count       | 0
          19 | output_queue_full_count      | 0
          20 | dml_count                    | 0
          21 | dml_filtered_count           | 0
          22 | toast_count                  | 0
          23 | candidate_catalog_xmin       | 0
          24 | candidate_xmin_lsn           | 0/0
          25 | candidate_restart_valid      | 0/420A598
          26 | candidate_restart_lsn        | 0/420A598
    (26 rows)

    备注:传入不存在的slot_name时,函数不报错,返回值为invalid slot name。

    不允许对正在进行observe的复制槽进行reset操作,异常信息按优先级如下:
    1. slot_name为空,报错,显示:ERROR: inputString should not be NULL。
    2. slot_name不为空,但不存在,不报错,显示:invalid slot name。
    3. slot_name不为空,但当前slot_name对应的复制槽正在被采样(observing),不报错,显示can't reset during observing! use gs_logical_decode_stop_observe to stop。
  • gs_get_parallel_decode_thread_info()

    描述:在并行解码所在的DN执行,返回当前DN上并行解码的活跃复制槽的线程信息。

    返回值类型:int64、text、text、int

    示例:

    gaussdb=# execute direct on (decode_datanode1) 'select * from gs_get_parallel_decode_thread_info();';
        thread_id    | slot_name | thread_type | seq_number
    -----------------+-----------+-------------+------------
     140335364699904 | slot1     | sender      |          1
     140335214098176 | slot1     | reader      |          1
     140335325312768 | slot1     | decoder     |          1
     140335291750144 | slot1     | decoder     |          2
     140335274968832 | slot1     | decoder     |          3
     140335258187520 | slot1     | decoder     |          4
     140335165404928 | slot2     | sender      |          1
     140335022864128 | slot2     | reader      |          1
     140335129818880 | slot2     | decoder     |          1
     140335113037568 | slot2     | decoder     |          2
    (10 rows)

    备注:返回值thread_id代表线程id,slot_name代表复制槽名,thread_type表示线程种类(共三种,sender代表发送线程、reader代表读取线程、decoder代表解码线程),seq_number代表每个线程在当前复制槽中同种线程的序号。其中sender和reader在每个并行解码连接中均只有一个,因此序号均为1,decoder的序号从1排列到当前复制槽解码并行度。

  • gs_get_distribute_decode_status()

    描述:获取当前节点上分布式解码状态细节(以复制槽为粒度),需在CN上执行,DN上执行仅返回空。

    返回值类型:text、int、int、int64、xid、xid、text、text、text

    gaussdb=# SELECT * FROM gs_get_distribute_decode_status();
     slot_name | logical_receiver_num | slice_num | walsender_thread_id | last_sent_csn | last_confirmed_csn |      receiver_queue_length      |          connect_times          |                 csn_receive_array
    -----------+----------------------+-----------+---------------------+---------------+--------------------+---------------------------------+---------------------------------+---------------------------------------------------
     slot1     |                    1 |         3 |     139958481843968 |       2012169 |            2010107 | queue0: 1, queue1: 1, queue2: 0 | slice0: 2, slice1: 2, slice2: 2 | slice0: 2012244, slice1: 2012244, slice2: 2012244
    (1 row)
    表2 指标含义

    指标名称

    类型

    说明

    slot_name

    text

    复制槽名。

    logical_receiver_num

    int

    分布式解码启动的receiver线程数量。

    slice_num

    int

    集群分片数。

    walsender_thread_id

    int64

    walsender线程id。

    last_sent_csn

    xid

    最近发送的CSN。

    last_confirmed_csn

    xid

    最后从客户端返回的已确认接收的CSN。

    receiver_queue_length

    text

    各DN接收日志队列长度(拼接后以字符串格式显示)。

    connect_times

    text

    各DN连接次数(拼接后以字符串格式显示)。

    csn_receive_array

    text

    各DN获取到的最新CSN(拼接后以字符串格式显示)。

  • gs_get_distribute_decode_status_detail()

    描述:获取当前节点上分布式解码状态细节(以DN为粒度),需在CN上执行,DN上执行仅返回空。

    返回值类型:text、int、int64、int、int、xid

    gaussdb=# SELECT * FROM gs_get_distribute_decode_status_detail();
     slot_name | slice_id |    thread_id    | queue_len | connect_times | received_csn
    -----------+----------+-----------------+-----------+---------------+--------------
     slot1     |        0 | 139959895848704 |         1 |             2 |      2012244
     slot1     |        1 | 139959895848704 |         1 |             2 |      2012244
     slot1     |        2 | 139959895848704 |         0 |             2 |      2012244
    (3 rows)
    表3 指标含义

    指标名称

    类型

    说明

    slot_name

    text

    复制槽名。

    slice_id

    int

    分片号(从0开始)。

    thread_id

    int64

    分布式解码启动的receiver线程号。

    queue_len

    int

    当前DN接收日志队列长度。

    connect_times

    int

    各DN连接次数。

    received_csn

    xid

    从当前DN获取的最新CSN。

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容