首页 > 其他分享 >openGauss 逻辑解码概述

openGauss 逻辑解码概述

时间:2024-05-14 16:41:35浏览次数:23  
标签:逻辑 解码 数据库 复制 概述 openGauss 日志

逻辑解码概述

功能描述

openGauss对数据复制能力的支持情况为:

支持通过数据迁移工具定期向异构数据库(如Oracle等)进行数据同步,不具备实时数据复制能力。不足以支撑与异构数据库间并网运行实时数据同步的诉求。

openGauss提供了逻辑解码功能,通过反解xlog的方式生成逻辑日志。目标数据库解析逻辑日志以实时进行数据复制。具体如图1所示。逻辑复制降低了对目标数据库的形态限制,支持异构数据库、同构异形数据库对数据的同步,支持目标库进行数据同步期间的数据可读写,数据同步时延低。

图 1 逻辑复制

逻辑复制由两部分组成:逻辑解码和数据复制。逻辑解码会输出以事务为单位组织的逻辑日志。业务或数据库中间件将会对逻辑日志进行解析并最终实现数据复制。openGauss当前只提供逻辑解码功能,因此本章节只涉及逻辑解码的说明。

逻辑解码为逻辑复制提供事务解码的基础能力,openGauss使用SQL函数接口进行逻辑解码。此方法调用方便,不需使用工具,对接外部工具接口也比较清晰,不需要额外适配。

由于逻辑日志是以事务为单位的,在事务提交后才能输出,且逻辑解码是由用户驱动的;因此为了防止事务开始时的xlog被系统回收,或所需的事务信息被VACUUM回收,openGauss新增了逻辑复制槽,用于阻塞xlog的回收。

一个逻辑复制槽表示一个更改流,这些更改可以在其它数据库中以它们在原数据库上产生的顺序被重放。逻辑复制槽,由每个逻辑日志的获取者维护一个。

注意事项

  • 不支持DDL语句解码,在执行特定的DDL语句(如普通表truncate或分区表exchange)时,可能造成解码数据丢失。
  • 不支持列存、数据页复制的解码。
  • 不支持级联备机进行逻辑解码。
  • 当执行DDL语句(如alter table)后,该DDL语句前尚未解码的物理日志可能会丢失。
  • 单条元组大小不超过1GB,考虑解码结果可能大于插入数据,因此建议单条元组大小不超过500MB。
  • openGauss支持解码的数据类型为:INTEGER、BIGINT、SMALLINT、TINYINT、SERIAL、SMALLSERIAL、BIGSERIAL、FLOAT、DOUBLE PRECISION、DATE、TIME[WITHOUT TIME ZONE]、TIMESTAMP[WITHOUT TIME ZONE]、CHAR(n)、VARCHAR(n)、TEXT。
  • 如果需要ssl连接需要保证前置条件GUC参数ssl=on。
  • 逻辑复制槽名称必须小于64个字符,且只包含小写字母、数字或者下划线中的一种或几种。
  • 当前逻辑复制不支持MOT特性。
  • 当逻辑复制槽所在数据库被删除后,这些复制槽变为不可用状态,需要用户手动删除。
  • 仅支持utf-8字符集。
  • 对多库的解码需要分别在库内创建流复制槽并开始解码,每个库的解码都需要单独扫一遍日志。
  • 不支持强起,强起后需要重新全量导出数据。
  • 备机解码时,switchover和failover时可能出现解码数据变多,需用户手动过滤。Quorum协议下,switchover和failover选择升主的备机,需要与当前主机日志同步。
  • 不允许主备,多个备机同时使用同一个复制槽解码,否则会产生数据不一致。
  • 只支持主机创建删除复制槽。
  • 数据库故障重启或逻辑复制进程重启后,解码数据存在重复,用户需自己过滤。
  • 计算机内核故障后,解码存在乱码,需手动或自动过滤。
  • 当前备机逻辑解码,不支持开启极致RTO。
  • 请确保在创建逻辑复制槽过程中长事务未启动,启动长事务会阻塞逻辑复制槽的创建。
  • 不支持interval partition表复制。
  • 不支持全局临时表。
  • 在事务中执行DDL语句后,该DDL语句与之后的语句不会被解码。
  • 如需进行备机解码,需在对应主机上设置guc参数enable_slot_log = on。
  • 禁止在使用逻辑复制槽时在其他节点对该复制槽进行操作,删除复制槽的操作需在该复制槽停止解码后执行。
  • 在开启逻辑复制的场景下,如需创建包含系统列的主键索引,必须将该表的REPLICA IDENTITY属性设置为FULL或是使用USING INDEX指定不包含系统列的、唯一的、非局部的、不可延迟的、仅包括标记为NOT NULL的列的索引。

性能

在Benchmarksql-5.0的100warehouse场景下,采用pg_logical_slot_get_changes时:

  • 单次解码数据量4K行(对应约5MB~10MB日志),解码性能0.3MB/s~0.5 MB/s 。
  • 单次解码数据量32K行(对应约40MB~80MB日志),解码性能3MB/s~5MB/s 。
  • 单次解码数据量256K行(对应约320MB~640MB日志),解码性能3MB/s~5MB/s 。
  • 单次解码数据量再增大,解码性能无明显提升。

如果采用pg_logical_slot_peek_changes + pg_replication_slot_advance 方式,解码性能相比采用pg_logical_slot_get_changes时要下降30%~50%。

详情查看:https://opengauss.org

详情查看:https://docs-opengauss.osinfra.cn

标签:逻辑,解码,数据库,复制,概述,openGauss,日志
From: https://www.cnblogs.com/techbing/p/18191600

相关文章

  • openGauss 逻辑复制支持DDL操作
    逻辑复制支持DDL操作功能描述Vastbase在逻辑复制过程中支持如下DDL操作:CREATE/DROPTABLE|TABLEPARTITIONCREATE/DROPINDEX注意事项只支持行存表的DDL操作。不支持列存,ustore存储引擎。在订阅端手动删除表会导致DDL同步失败,发布订阅阻塞。不支持在对表进行相......
  • openGauss 慢SQL诊断
    慢SQL诊断背景信息在SQL语句执行性能不符合预期时,可以查看SQL语句执行信息,便于事后分析SQL语句执行时的行为,从而诊断SQL语句执行出现的相关问题。前提条件数据库实例运行正常。查询SQL语句信息,需要正确设置GUC参数track_stmt_stat_level。只能用系统管理员和监控管理员权限......
  • Jekins - [01] 概述
    “持续集成并不能消除Bug,而是让它们非常容易发现和改正。”——Martin Fowler 一、概述1.1、持续集成(CI)  持续集成(Continuousintegration)指的是频繁地(一天多次)将代码集成到主干。  它的好处主要有两个:快速发现错误。每完成一点更新,就集成到主干,可以快速发现错......
  • 数据结构概述
    数据结构定义我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法数据结构=个体+个体的关系算法=对存储数据的......
  • 合合信息携手业界专家,解码数据资产管理方法与入表的关键路径
    随着财政部印发的《企业数据资源相关会计处理暂行规定》提出企业数据资产入表相关办法,《数据资产评估指导意见》中进一步规范数据资产评估行为,细化数据资产评估操作要求,对解决数据要素市场建设中的“数据赋值”难题提供了有效方案。数据资产管理与入表成为当前社会关注热点和数据......
  • JDBC连接openGauss6.0和PostgreSQL16.2性能对比
    本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者:Gauss松鼠会小助手。PostgreSQLvsopenGauss01前置准备安装JDK:详细安装步骤请问度娘,输入能正常返回即已安装[root@db06~]#java-versionopenjdkversion"1.8.0_262"OpenJDKRuntimeEnvir......
  • openGauss 开启RemoveIPC引起的core问题
    开启RemoveIPC引起的core问题问题现象操作系统配置中RemoveIPC参数设置为yes,数据库运行过程中出现宕机,并显示如下日志消息。FATAL:semctl(1463124609,3,SETVAL,0)failed:Invalidargument原因分析当RemoveIPC参数设置为yes时,操作系统会在对应用户退出时删除IPC资源(共......
  • openGauss 例行维护表
    例行维护表为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于客户场景,定期做VACUUMFULL和ANALYZE,更新统计信息,以便获得更优的性能。相关概念使用VACUUM、VACUUMFULL和ANALYZE命令定期对每个表进行维护,主要有以下原因:VACUUMFULL可回收已更新或已删除的数据所占据的......
  • openGauss 例行维护
    例行维护检查时间一致性检查应用连接数例行维护表例行重建索引数据安全维护建议为保证openGauss数据库中的数据安全,避免丢失数据,非法访问数据等事故发生,请仔细阅读以下内容。慢SQL诊断......
  • openGauss 快速设置
    快速设置首先在postgresql.conf中设置配置选项:wal_level=logical对于一个基础设置来说,其他所需的设置使用默认值就足够了。需要调整pg_hba.conf以允许复制(这里的值取决于实际的网络配置以及用于连接的用户):hostallrepuser0.0.0.0/0sha256然后在发布......