概要说明
在 V3.1.3 版本,OceanBase 数据库进一步增强社区生态能力,更好地服务广大社区用户。
- 多模应用:新增 JSON 格式数据类型和 OBKV HBASE 客户端,支持半结构化和 NoSQL 类型业务场景应用。
- 生态能力增强:支持 MySQL 原生的 Python/Go/ODBC 类型驱动连接 OceanBase 数据库,发布 ob-operator 支持 K8s 容器编排,支持 ARM 平台编译运行。
- 更优的产品能力:支持更小的资源规格(2C8GB),提升 CDC 链路同步可靠性。
内核特性更新
支持 JSON 格式数据类型
支持 DDL、索引创建、SQL 查询、数据类型转换等基本操作,兼容 MySQL 5.7 版本的全量以及 8.0 版本的部分 JSON 函数。
- 支持四种基本类型(字符串、数字、布尔值和 NULL )和两种结构化类型(对象和数组)。
- 支持在创建表、添加列时创建类型为 JSON 的列。
- 支持基于 JSON 列的生成列创建索引。
- 支持通过 ->、->> 操作符引用 JSON 对象。
- 支持在 SELECT/INSERT/UPDATE/DELETE 等 SQL 语句中使用 JSON 文本。
- 支持 MySQL 5.7 版本的全量 JSON 函数以及 JSON_OVERLAPS()、JSON_VALUE() 等 8.0 版本新增函数。
OBKV 能力增强
开源 OBKV HBase 客户端
应用可以通过该客户端获得 HBase 语法兼容(HBase 0.94版本)的 API 接口,与 OceanBase 数据库通过 RPC 调用方式进行通信。在数据模型上增加宽表模型( WideColumn ),优化 Filter 逻辑,支持 KEY 分区、RANGE 分区和前缀分区。
优化 TableAPI Query 处理
针对 TableAPI 客户端 Query 查询操作流程,服务端使用异步的方式处理客户端请求,提高系统整体的吞吐能力,优化端到端的查询性能。
兼容 MySQL 原生驱动
支持更多 MySQL 生态原生驱动连接 OceanBase 数据库:
- 新增支持 Python3 pyMySQL 和 Python2 MySQL-python 驱动。
- 新增支持 golang Go-SQL-Driver/MySQL 驱动。
- 新增支持 Unix ODBC 驱动。
新增支持 ARM 平台
完成 OceanBase 数据库与 OBProxy 中间件在 ARM 架构平台下的适配验证,并发布基于 ARM 架构的版本,社区用户可以在 ARM 平台下进行业务开发、编译测试和应用部署。
支持更小规格
发布 2C8GB 资源规格的 Docker 镜像,方便社区开发者使用更小的资源学习和使用 OceanBase 数据库,降低入门成本。
CDC 数据同步可靠性增强
CDC 从 OceanBase 数据库拉取的数据以内存态的形式提供给下游消费者,对机器资源配置规格有较高要求,对于用户的关键业务场景(例如大数据量入库场景),可能会造成数据同步失败。因此,我们对 CDC 链路的数据同步能力进行增强:
- 支持持久化模式,数据在同步开始前先进行本地临时存储,然后再通过 CDC 链路同步给下游消费者,待消费完毕后清理本地临时存储的事务数据,减少数据同步过程中对内存的占用。
- 支持大事务,优化大事务同步时对内存的使用,结合持久化模式,满足大事务场景下的数据同步需求。
OMS 新增事务持久化模式
内存模式下事务输出前会写入内存,新增持久化模式后,事务输出后进行持久化,一定程度上节省了内存占用。
发布 OB-Operator,支持 K8s 容器编排
通过使用 OB-operator,OceanBase 数据库可以以容器的形式运行在公有云或私有化部署的 Kubernetes 集群上。用户通过 YAML 或 Kustomize 部署 OB-operator,OB-operator 以服务的形式提供如下能力:
- 在 K8s 环境下独立部署 OceanBase 集群。
- 支持集群的创建、删除、扩容、缩容和生命周期管理。
- 支持 Zone 的创建、删除。
- 支持 OBServer 实例的创建、删除、重启、故障转移。
- 支持使用 kubectl 命令查看集群、Zone 和 OBServer 的状态。
- 支持通过 HTTP API 管理 K8s 资源。
OBD 新增八大特性,支持使用 OCP 接管 OBD 部署集群
新版 OBD 支持使用 OCP 接管 OBD 部署集群。用户可以通过 OBD 调整当前集群的配置以满足 OCP 的接管条件。同时提供对应的条件检查命令,检查当前集群是否满足 OCP 的接管条件。OBD V1.3.0新增特性如下:
- 新增 OBserver 配置风格 cluster,支持设置 IDC 信息 (#85 )
- 支持 OBagent 1.1.1
- 支持 OBproxy-ce 3.2.3
- 支持 轮转重启
- 支持 修改 username,修改有需要重启
- 新增 obd cluster check4ocp
- 新增开发者模式,开启后允许修改架构信息,修改后配置将被标记为 need redeploy
- 支持 arm 架构
OCP 易用性持续提升
此版本针对用户常见的问题场景做了优化,增强了前置检查并提供明确的错误信息,具体的优化点包括:
- 优化 metadb 初始化
- 增强 RPM 包检查
- 在提交任务之前增加必要的检查
- 修改⼀些配置的默认值
产品易用性增强
- 资源容量(存储、内存)相关配置项支持小数设置,例如:alter system set datafile_size ='11.5G'。
- OBD 在报错时提供帮助链接地址。
- ob_admin 支持在 Clog 解析时过滤用户数据。
- information_schema.TABLES 增加 ENGINE 值。
- 文档开源,支持通过 Github 提交文档 issue 和 pr 。文档包括架构设计原理、性能调优、故障处理、日常维护指导等。
行为变更
- 分区表默认创建的索引变更为本地索引
在一些客户使用过程中我们发现 ,需要经常对分区表的索引性能进行调优,经过分析总结,发现局部索引更适合多数客户业务场景,因此我们将分区表默认创建的索引调整为本地索引。如果需要创建全局索引,可以参考示例 create table ad1(c1 int primary key, c2 int, index(c2) global)partition by key(c1) partitions 2。
- 修改创建表的默认行为为非严格模式
OceanBase 数据库建表时只要求多数派副本创建成功即认为建表成功。如果需要使用严格模式创建表,需要将系统变量 ob_create_table_strict_mode 设置为True。
问题修复
内核 Bug 修复:
- FLASHBACK TABLE 功能修复,删除的表会临时存放在数据库的回收站中,用户可以通过 FLASHBACK TABLE 命令恢复表和数据。
- 修复 TIMESTAMP 值域变更导致的显示错误问题,例如:列类型由 TIMESTAMP(0) 修改为 TIMESTAMP(6) ,保证前后查询时间结果显示一致。
- 修复 ALTER SYSTEM SET DATAFILE_SIZE 命令执行报错,若将数据文件大小变更缩小直接报错返回。
- 修复因事务状态表非空导致增量备份失败的缺陷。
OCP Bug 修复:
- ⽆法使⽤默认的 Python 解释器执⾏ OceanBase 升级脚本
- ⽆法通过 OBproxy 连接接管集群
- 由于依赖关系问题,未能卸载 OCP 代理程序包
OMS Bug 修复:
- 修复处理大事务 oom 问题——处理单个大事务,在内存模式下需要更多内存资源才能输出该事务,容易造成内存 oom 问题,在事务持久化模式下可以用相对少的内存完成事务数据处理和输出,从而避免 oom 的问题
- 修复数据迁移目标数据源为 MySQL 开启 ssl 安全认证时写入失败问题
OBD Bug 修复:
- 修复 TPCH 默认路径错误的问题 (#88 )
- 修复 TPCH ddl 分区数不能根据实际情况调整的问题.
以上就是 OceanBase v3.1.3_CE 发版相关的所有内容了,有任何问题都可以通过以下方式和我们联系。
联系我们
欢迎广大 OceanBase 爱好者、用户和客户随时与我们联系、反馈,方式如下:
社区版官网论坛
社区版项目网站提 Issue