V4.2.3
Version information
Release date: December 26, 2023
Version: V4.2.3
RPM version: obproxy-4.2.3.0-20231226165754
Overview
Apart from the usability capabilities, such as routing diagnostics and connection diagnostics, introduced in OceanBase Database Proxy (ODP) V4.2.2, ODP V4.2.3 supports the following new features:
Logon audit logs, log usability, protocol diagnostics, and memory diagnostics usability, which comprehensively improve the product's usability; wide-integer routing and routing based on more partitioning functions and expressions, which enrich the product's routing capabilities.
Globally unique client session IDs and protocol compression between ODP and OBServer nodes, which enhance the product's link capabilities.
MySQL-compatible features, such as the
MYSQL_SET_OPTION(27)command and data loading from local files.
Key features
Globally unique client session IDs
A client session ID uniquely identifies a session. ODP and OceanBase Database have different mechanisms for generating client session IDs. The client session ID generated by an ODP for a connected client differs from that generated by an OBServer node. When a client connects to an ODP, the ODP sends the generated client session ID back to the client during the handshake. In a distributed system, the client may connect to a different ODP after connecting to the load balancer. An ODP does not know the client session ID generated by another ODP. Therefore, client session IDs must be globally unique. With globally unique client session IDs, OceanBase clusters can better support the kill session and show processlist mechanisms, transaction table locks, and other features.
Link compression between ODP and OBServer nodes
OceanBase clusters support geo-redundant deployment modes, such as three IDCs across two regions. When OceanBase Database replicas are deployed across regions, data writing and reading across regions may encounter bandwidth restrictions. ODP V4.2.3 supports data compression between ODP and OBServer nodes at a stable compression rate around 55% for random data insertion, which effectively reduces the bandwidth pressure.
Log usability
ODP provides various log files, including obproxy_digest.log, obproxy_error.log, and obproxy.log, to help you quickly troubleshoot problems. Numerous and comprehensive logs also cause problems such as poor readability of logs and performance loss, which impair log usability.
ODP V4.2.3 improves log usability in two aspects. First, it solves the problem of fast log printing based on throttling and printing optimization. Second, it improves log readability and reduces the log volume by optimizing log content and setting clearer log levels. For more information about log levels and different type of logs, see Logs.
Memory usability
ODP of earlier versions records limited memory information. Once a memory leak occurs, it will be difficult to locate the leak location. In addition, connection establishment behavior and logging after memory usage exceeds the limit must also be optimized.
ODP V4.2.3 improves memory usability by adding the feature of memory leak diagnostics and the WARN log level. After memory usage exceeds the limit, new connections cannot be established and memory cannot be allocated to prepared statements, but forced logout will not be triggered. This reduces the impact on existing business. For more information about memory leak diagnostics, see Memory leak diagnostics.
Routing improvement
Columnar OceanBase Database supports wide-integer columns. Accordingly, ODP V4.2.3 supports accurate routing for queries on partitioned tables with wide-integer columns as partitioning keys. The new version also supports accurate routing based on more partitioning key expressions, including arithmetic expressions, character expressions, and time expressions. For more information, see Function partitioning key-based routing.
Compatibility changes
Product behavioral changes
The default system log level is changed to WDIAG.
When memory usage exceeds 90% of the limit, the product's behavior changes as follows:
For existing connections: Memory allocation to prepared statements fails (connections are terminated) while the execution of other SQL statements remains normal.
For new connections: New connections to user tenants cannot be established but those to the sys tenant and proxysys tenant are allowed. ODP configurations are modified, and SQL execution remains normal.
Parameter changes
| Parameter | Change type | Description |
|---|---|---|
| mem_leak_check_mod_name | New | Specifies the names of modules to be monitored by the show proxymemory command, which can be names in the mod_name column of the command output. The value ALL indicates to monitor all modules. We recommend that you use the value ALL only in debugging mode. |
| mem_leak_check_class_name | New | Specifies the names of classes to be monitored by the show proxymemory objpool command, which can be names in the free_list_name column of the command output. The value ALL indicates to monitor all classes. We recommend that you use the value ALL only in debugging mode. |
| protocol_diagnosis_level | New | Specifies whether to enable protocol diagnostics and whether to output diagnostic information to logs. The default value is 0, which indicates to disable protocol diagnostics. |
| compression_algorithm | New | Specifies the compression protocol and compression level of the OceanBase 2.0 protocol. Value range: zlib:[0,9]. The value zlib:0 indicates to disable the compression protocol and the compression feature of the OceanBase 2.0 protocol. |
| syslog_io_bandwidth_limit | New | Specifies the upper limit of disk I/O bandwidth allowed for ODP logging. ODP logging is throttled when its traffic exceeds the upper bandwidth limit. When throttling is triggered, the log REACH SYSLOG RATE LIMIT will be printed in obproxy.log. The default value is 30 MB. You need to specify the unit when you configure the parameter. The default unit is MB. |
| enable_syslog_wf | New | Specifies whether to print logs at or above the WARN level in obproxy.log to a separate log file (obproxy.log.wf). The default value is False, indicating not to print such logs to a separate log file. |
| client_session_id_version | New | Specifies the version of the format used for generating client session IDs. The default value is 1. To use the new calculation logic, you need to set this parameter to 2. |
| enable_abort_conn_info | Deprecated | This parameter is introduced since ODP V4.2.0 and is deprecated since ODP V4.2.3. |
| xflush_log_level | Modified | The default value of this parameter is changed from INFO to ERROR since ODP V4.2.3. |
| syslog_level | Modified | The default value of this parameter is changed from INFO to WDIAG since ODP V4.2.3. |
| connection_diagnosis_option | Modified | The default value of this parameter is changed from 1 to 3 since ODP V4.2.3. The description of bit 1 is changed. In the new version, bit 1 specifies whether to build an error packet when internal errors occur. |
| enable_sharding | Modified | This parameter takes effect upon a restart since ODP V4.2.3. In earlier versions, the parameter takes effect dynamically after modification. |
Supported OceanBase Database versions
OceanBase Database V4.x, V3.x, and earlier versions are supported. The recommended ODP version varies based on the OceanBase Database version.
We recommend that you use ODP V3.2.11 for OceanBase Database V3.x or earlier.
For OceanBase Database V4.x:
We recommend that you use ODP V4.2.3 if new features are required.
We recommend that you use ODP V4.2.1 (an LTS version) if new features are not required.
Bug fixes
Fixed the issue where connection fails when a .NET driver is used for connection and SSL is enabled.
Fixed the issue where connection attributes fail to be parsed and the connection is then terminated when a .NET driver is used for connection.
Fixed the issue where the performance of queries based on the specified cursor fetch size is poor when ODP connects to an OceanBase cluster.
Fixed the issue where a MySQL 8.0 client fails to connect to an OceanBase cluster with a password.