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 执行报错的问题。