逻辑日志复制
在逻辑复制中把主库称为源端库,备库称为目标端数据库,源端数据库根据预先指定好的逻辑解析规则对WAL文件进行解析,把DML操作解析成一定的逻辑变化信息(标准SQL语句),源端数据库把标准SQL语句发给目标端数据库,目标端数据库收到后进行应用,从而实现数据同步。逻辑复制只有DML操作。逻辑复制可以实现跨版本复制,异构数据库复制,双写数据库复制,表级别复制。
支持WDR自动性能分析报告
定时主动分析run日志和WDR报告(自动后台生成,可由关键指标阈值如CPU占用率、内存占用率、长SQL比例等触发),并生成html、pdf等格式的报告。能自动生成性能报告。WDR(Workload Diagnosis Report)基于两次不同时间点系统的性能快照数据, 生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。
WDR主要有两个组件:
- SNAPSHOT性能快照:性能快照可以配置成按一定时间间隔从内核采集一定量的性能数据,持久化在用户表空间。任何一个SNAPSHOT可以作为一个性能基线,其他SNAPSHOT与之比较的结果,可以分析出与基线的性能表现。
- WDR Reporter:报表生成工具基于两个SNAPSHOT,分析系统总体性能表现,并能计算出更多项具体的性能指标在这两个时间段之间的变化量,生成SUMMARY 和DETAIL两个不同级别的性能数据。
增量备份/恢复(beta)
支持对数据库进行全量备份和增量备份,支持对备份数据进行管理,查看备份状态。支持增量备份的合并,过期备份的删除。数据库服务器动态跟踪页面更改,每当一个关系页被更新时,这个页就会被标记为需要备份。增量备份功能需要打开GUC参数 enable_cbm_tracking,以便允许服务器跟踪修改页。
恢复到指定时间点(PITR)
时间点恢复(Point In Time Recovery)基本原理是通过基础热备 + WAL预写日志 + WAL归档日志进行备份恢复。重放WAL记录的时候可以在任意点停止重放,这样就有一个在任意时间的数据库一致的快照。即可以把数据库恢复到自开始备份以来的任意时刻的状态。在恢复时可以指定恢复的停止点位置为TID,时间和LSN。
两地三中心跨Region容灾
两地三中心,顾名思义,两地指的是两座城市,即同城和异地,三中心指的是生产中心,同城容灾中心以及异地容灾中心。近年来,国内外频繁出现自然灾害,以同城双中心加异地灾备中心的“两地三中心”的灾备模式也随之出现,这一方案兼具高可用性和灾难备份的能力。同城双中心是指在同城或邻近城市建立两个可独立承担关键系统运行的数据中心,双中心具备基本等同的业务处理能力并通过高速链路实时同步数据,日常情况下可同时分担业务及管理系统的运行,并可切换运行;灾难情况下可在基本不丢失数据的情况下进行灾备应急切换,保持业务连续运行。与异地灾备模式相比较,同城双中心具有投资成本低、建设速度快、运维管理相对简单、可靠性更高等优点。异地灾备中心是指在异地的城市建立一个备份的灾备中心,用于双中心的数据备份,当双中心出现自然灾害等原因而发生故障时,异地灾备中心可以用备份数据进行业务的恢复。
openGauss两地三中心容灾架构示意图如图8所示。两地三中心跨Region容灾包括基于OBS的异地容灾解决方案和基于流式复制的异地容灾解决方案。openGauss 从3.1.0版本开始提供基于流式复制的异地容灾解决方案,开启容灾后可以实现以下功能:
-
全量复制:主数据库实例配置灾备数据库实例信息,等待灾备数据库实例连接后,可进行全量复制。
-
增量复制:灾备数据库实例完成全量build之后,将与主数据库实例建立流式复制进行日志的复制,实现增量复制。
图 8 openGauss两地三中心容灾架构示意图
生成列
生成列是指由表中其他字段计算得到的列。生成列是一个SQL标准特性,SQL 生成列在插入或者更新数据时自动计算,像普通列一样需要占用存储空间。
hash索引
openGauss支持HASH索引,长索引列等值查询场景下性能优于BTREE;优化锁管理提供更高的并发度;提供XLOG日志防护,保障数据不丢失。
支持国密算法
用户认证方式(gsql、JDBC、ODBC)支持国密SM3算法;提供国密SM4算法接口,用于对数据进行加解密,增强数据库的安全能力。
插件化架构
通过对SQL引擎中语法、语义的解耦,实现openGauss的语法、语义层插件化,实现异构数据库语法模块与openGauss内核的解耦;支持算子插件化,实现特定算子从计划创建、优化到执行的插件化。
指定节点升级
在灰度升级下,提供一种升级指定部分节点的功能。保证在不中断业务的情况下,先升级部分节点再升级剩余节点。
UWAL特性
本特性将数据库和自研公共组件UWAL(Unified Write-Ahead Log)相结合,提高数据库的主备事务提交和流复制传输性能,实现数据库WAL(Write-Ahead Log)的性能加速效果。
SCRLock特性
在资源池化场景下使用SCRLock(Smart Cached Remote Lock)提供分布式锁能力,提高分布式锁性能。
其他
-
on duplicate key update支持子查询
支持在on duplicate key update的更新语句之中使用子查询表达式进行赋值,且子查询表达式中支持通过excluded进行冲突行的引用。
-
列存表支持唯一索引
支持在列存表上创建基于cbtree的唯一索引、创建主键唯一键约束,防止表中出现重复数据,扩展了列存表使用场景。
-
支持jsonb数据类型
支持jsonb数据类型用来高效的操作JSON数据,支持对于json、jsonb的各种丰富的操作符、操作函数,支持在jsonb上创建索引,满足广泛的JSON使用与搜索场景。
-
UCE故障感知与响应
通过感知内存UCE错误产生时系统发出的SIGBUS信号,并根据所携带的物理地址,实现对应日志打印与openGauss数据库状态变化,进入对应的数据库进程退出流程。
-
支持unique sql语句监控自动淘汰
openGauss支持unique SQL自动淘汰,使用LRU算法依据uniqueSQL的更新时间自动淘汰旧的uniqueSQL信息,保障最新的统计信息能够持续记录,提高数据库的易运维性。
-
支持gs_cgroup负载管理
gs_cgroup 负载管理工具,通过在数据库内核创建与管理控制组,设置系统资源配额和资源限额,来管理用户与业务对资源的使用率与优先级,充分高效的利用机器资源。
-
备机支持慢SQL性能诊断
备机上也支持开启慢SQL诊断能力,同主机一样,支持通过多种维度、粒度的记录SQL的性能细节,如各种事件、等待事件等。