Skip to content

v4.3.3

Latest
Compare
Choose a tag to compare
@zhuzhaoyang001 zhuzhaoyang001 released this 24 Jan 08:01
· 0 commits to master since this release

V4.3.3_CE

版本信息

名称 描述
发布时间 2025 年 01 月 24 日
版本号 V4.3.3

版本定位

ODP 4.3.3 版本是 ODP 4.3.x 的最新版本,推荐云上、线下业务用于 POC 测试、生产。SQL 代理,新增主备库读写分离能力,支持云上用户通过同一个连接串实现主备库读写分离,完善主备库产品能力;对复制表路由、事务内弱读路由等场景做了优化,满足用户对特殊表、特定场景的路由需求,支持 utf16le、sjis、dec8、utf8mb4_german2_ci、HKSCS 等更多字符集/字符序,同时拓展支持 to_dasy()、timestamp 等表达式的准确路由,路由能力更加完善;丰富 PS 缓存、路由信息等监控信息,提升诊断易用性;修复了多个协议相关疑难问题,提升稳定性。RPC 代理,对云上、云下用户环境支持不同的鉴权逻辑,完善了 Auth 鉴权机制;增加 OBKV-Redis 协议命令,同时优化其处理逻辑,提升性能。ODP 4.3.3 版本全面适配了 Rocky Linux 9。

关键特性说明

SQL 代理

主备库读写分离

目前,云平台上对主备集群实现了业务异地容灾,但是没有专有云 ODP 的灵活度,除了数据库切换动作,其它场景都需要切换域名地址,随着云上主备库用户数量增加,需要完善主备库的产品能力,支持通过使用一个连接串实现读写分离和主备切换。

ODP V4.3.3 新增了主备库读写分离功能,支持在不改变用户登录连接串的情况下,实现自动登录到本地的主备集群、支持跨主备集群的自动读写分离能力,同时为了降低跨地域的带宽成本,ODP 和 OceanBase 数据库之间采用压缩协议。

主备库读写分离能力仅适用于 OceanBase 数据库 4.x 版本的主备租户架构,支持弱读请求的最终一致性。

路由完善

  • 字符集扩展

    支持 utf16le、sjis、dec8、utf8mb4_german2_ci、HKSCS 字符集/字符序下,SQL 请求的正确路由。

  • 复制表路由优化

    复制表适用于读多写少的场景,对复制表的查询、读取本地副本操作性能最佳,所以复制表整体采用随机路由的策略。但是在事务内,如果复制表做过变更,随机路由到 Follower 节点时,有可能读不到最新修改的数据。因此,ODP V4.3.3 中,在事务内复制表做过变更的场景下,优化路由策略为将复制表的查询请求路由到复制表的 Leader 节点。

  • 事务内弱读路由优化

    在一个事务中,如果执行过写语句或 SELECT FOR UPDATE 语句,后续的读语句若想读取本事务尚未提交的修改,必须走强读方式,由 ODP 将读请求路由到 Leader 节点执行。如果该读请求被设置为弱读,会被随机路由到 Follower 节点。ODP V4.3.3 中优化该逻辑,将一个事务中,写请求之后的弱读语句按照强读策略路由,也就是路由到 Leader 节点。

  • 拓展支持更多表达式的准确路由:to_days() 函数、timestamp 'xxxxx' 表达式、not in 表达式。

BINLOG 支持

  • 兼容支持 log_bin_basename 变量、支持 show master logs 语法

  • 支持 binglog service 登录帐密配置

诊断易用性

  • PS 缓存监控能力

    在 PS 协议场景中,客户端有可能使用了大量的 PS 缓存没有及时 close,从而占用大量内存不释放,并有可能导致性能问题,而且此类问题难以排查。为了提升 PS 协议问题的排查效率,ODP 在 Prometheus 监控中增加了 PS 缓存信息,包括已分配的 PS 缓存数目和内存量的信息,并周期性地对外输出以上监控数据,同时支持 SHOW PROXYPS 这一内部命令方式,提供 SQL 方式查询 PS 相关 SQL、解析结果、内存占用大小等,提升易用性。

    命令的具体介绍可参见 SHOW PROXYPS

  • 路由信息监控

    ODP 在 Prometheus 监控中增加单位时间内事务内路由的请求量、二次路由的请求量、计算分区失败后的随机路由请求量、全局索引表路由请求量等各类不同路由情况的统计信息,协助排查路由问题。

RPC代理

  • OBKV-Redis 命令完善

    继 ODP V4.3.2 开始支持 OBKV-Redis 协议能力后,V4.3.3 中又新增 Client LIST、INFO、MONITOR 三个 Client 侧处理命令,进一步完善协议命令列表。具体介绍可参见 ODP 支持 OBKV-Redis 协议能力客户端命令

  • OBKV-Redis 性能优化

    ODP V4.3.3 优化了 OBKV-Redis 的整体处理流程,CPU 资源消耗从 95% 降低到 50% 左右,相较于 ODP V4.3.1,性能最高提升 13%。

  • Auth 鉴权机制完善

    OBKV-Redis 支持多租户使用方式,对于云上环境,ODP 可以获取租户名和集群名,对于线下环境,ODP 强依赖于用户透传租户和集群信息,针对不同的用户环境,ODP 对鉴权逻辑进行区分,完善了 Auth 鉴权机制。

兼容性变更

配置项变更

配置项 变更类型 变更说明
enable_standby_read_write_split 新增 主备租户读写分离开关,默认为 false,只对设置配置项之后的新连接生效。
enable_check_cluster_name 新增 用于控制三段式登录时是否校验集群名。
rootservice_cluster_name 变更 在有多个备集群/租户的场景下,配置 service_name 映射到哪个集群下的备租户。
rpc_redis_default_user_name 变更 由原本需配置为 user_name@tenant_name#cluster_name 格式,变更为支持仅配置为 user_name 格式。

变量变更

变量 变更类型 变更说明
log_bin_basename 新增 支持转发该变量给 Binlog Service,查询 Binlog 文件的前缀名称。

语法变更

语法 变更类型 变更说明
show proxyps 新增 提供 SQL 方式查询 PS 缓存信息,结果集中的每一行表示一个 PS 缓存,单行信息包括 PS 相关的 SQL、解析结果、内存占用大小。
show master logs 新增 支持转发该命令至 Binlog Service。

支持的 OceanBase 数据库版本

支持 OceanBase 数据库 4.x 和 3.x 以及更低版本。根据使用的 OceanBase 数据库版本不同,对应推荐如下:

  • 当 OceanBase 数据库为 3.x 版本及更低版本时,建议使用 ODP V3.2.11。

  • 当 OceanBase 数据库为 4.x 版本时,推荐使用 ODP V4.3.1(LTS 版本)。

ODP V4.3.3 支持多项新功能,如果用户环境依赖新功能,推荐使用最新版本 V4.3.3;若不依赖新功能,推荐使用 LTS 版本 V4.3.1。

缺陷修复

  • 修复路由计算遇到不支持的字符集和数据类型时夯住的问题。

  • 修复分布式事务路由中事务跨机请求处理异常时,事务状态判断不准确的问题。

  • 修复 COM_STMT_PREPARE_EXECUTE 请求未创建 PS 缓存的问题。

  • 修复 Prepare 已经存在的文本 PS 失败时,原有的 PS 被误删除,导致 Deallocate 报错的问题。

  • 修复 COM_STMT_SEND_LONG_DATA 超 16MB 无法转发的问题。

  • 修复 ODP 不支持处理两个 MySQL Packet 连续格式的请求导致请求报错的问题。

  • 修复 ODP 转发 AuthSwitchResponse 失败导致驱动调用 change user 接口后夯住的问题。

  • 修复 MySQL 8.0.22 客户端版本通过 ODP 无法连接带密码的 OceanBase 数据库的问题。

  • 修复分区表的分区键缺失的场景下,ODP 未随机打散 SQL 请求的问题。

  • 修复同一集群不同租户下的分区表 tablet_id 相同时,路由不准的问题。

  • 修复 PS 二合一协议下,路由请求未走分布式事务路由导致的 Remote SQL 的请求。

  • 修复匿名块中对 SQL 请求执行分布式事务路由失败,重试校验失败导致的断连接问题。

  • 修复 BMSQL 测试结束,客户端夯住,无法正常结束的问题。

  • 修复 GO 客户端 send_long_data 发送超过 16MB 的数据,异常报错问题。

  • 修复 ODP 不支持 client setinfo 导致 Jedis 连接时,ODP 打印大量错误日志的问题。

  • 修复 OBSharding 场景下,列名为 server_id 时,SQL 执行报错的问题。