数据库代理发布说明

本文主要介绍了PolarDB PostgreSQL版(兼容Oracle)数据库代理的版本更新记录。

2.3.54(发布日期:20240924)

类别

说明

新增功能&性能优化

  • 新增SQL限流功能。

  • 支持按需建连功能。

问题修复

修复多语句(Multi-Statment)无法正常解析导致路由出错问题。

2.3.53(发布日期:20240816)

类别

说明

新增功能&性能优化

优化短事务转发性能。

问题修复

  • 修复按活跃请求数负载均衡的只读地址在延迟较大时无法选中节点路由的问题。

  • 修复兼容Oracle版本访问dual表的SQL无法路由到只读节点的问题。

  • 修复在部分情况下Parse报文重放失败,连接可能关闭的问题。

  • 修复Prepare语句执行失败场景下可能导致的内存泄漏。

2.3.52(发布日期:20240703)

类别

说明

新增功能&性能优化

一致性级别支持全局一致性。

问题修复

  • 修复数据库返回大Error Msg导致数据库代理爆栈并崩溃的问题。

  • 修复多个自定义地址开关高级事务拆分功能可能冲突的问题。

  • 修复混合协议报文无法解析的问题。

  • 修复Close报文相关逻辑未能正确释放内存导致的内存泄漏问题。

2.3.51(发布日期:20240528)

类别

说明

新增功能&性能优化

  • SSL支持双向认证、强制SSL、CRL、TLS1.3版本。

  • 支持报文拆分。

  • 支持Serverless集群API。

  • 支持master_failure_mode,当主节点断开时只读节点继续服务。

  • 增加enable_master_retry_req参数,默认值false。对于只读节点执行失败的错误,不再直接转发到主节点。

  • 重放逻辑优化,重放ParseClose时,组合成一次发送。

  • 支持只读节点鉴权失败,主节点鉴权成功时依然建立连接。

问题修复

  • 修复Parse报文被标记为master_read时不发送到其他节点的问题。

  • 修复使用Deallocate语句释放资源时,未识别Prepare语句中的type_mask类型的问题。

  • 修复is_superuser数组长度设置不正确的问题。

  • 修复权限验证失败返回正确的错误信息。

  • 修复SSL开启后没有传入ssl_version导致的崩溃问题。

  • 修复处理异常auth包时没有及时终止而导致的崩溃问题。

2.3.50(发布日期:20240329)

类别

说明

新增功能&性能优化

  • 支持连接保持功能。

  • 增强对包含函数的SQL语句的读写分离路由能力。

问题修复

  • 修复只读节点断开重连后事务状态与主节点不一致的问题。

  • 修复连接池模式下只读节点上的连接可能无法被放回池中的问题。

2.3.49(发布日期:20240205)

类别

说明

问题修复

  • 修复只读地址事务状态不一致缺陷。

  • 修复两处存量内存泄漏。

  • 修复startup报文解析时C-type字符串越界问题。

2.3.48(发布日期:20240119)

类别

说明

新增功能&性能优化

只读地址负载均衡策略支持按活跃请求数负载均衡。

问题修复

  • 修复事务级连接池时,使用MySQL函数判断PostgreSQL报文类型导致报文丢弃。

  • 修复2.3.47版本调用 /v1/maxscale接口调整threads参数会导致内核崩溃的问题。

2.3.47(发布日期:20230831)

类别

说明

问题修复

修复事务级连接池时,事务中语句执行失败,导致的连接复用问题。

2.3.46(发布日期:20230808)

类别

说明

新增功能&性能优化

支持事务级连接池。

问题修复

修复只读地址崩溃的问题。

2.3.34(发布日期:20230606)

类别

说明

新增功能&性能优化

支持/*force_session_to_master*/ hint,确保session的所有请求都到主节点。

问题修复

  • 修复使用lru负载不均衡的问题。

  • 修复SQL中带有特殊字符\t\n,而/*force_master*/未生效的问题。

  • 修复PG认证时引起内存泄漏的问题。

  • 修复只读地址崩溃的问题。

2.3.33(发布日期:20221116)

类别

说明

问题修复

  • 修复只读地址负载不均衡问题。

  • 修复集群CPU超过32核时引起崩溃的问题。

2.3.31(发布日期:20220811)

类别

说明

问题修复

  • 管控刷新配置时兼容PolarDB for PostgreSQL 14版本。

  • pgmon探测数据库时,数据库需要校验数据库代理的IP和端口。

  • 函数名白名单忽略大小写。

  • 白名单个数统计不会导致数据库代理持续拉取白名单。

2.3.28(发布日期:20220221)

类别

说明

新增功能&性能优化

支持数据库实例优雅重启。

问题修复

优化事务拆分,通过代理的事务拆分开关来控制数据库上的开关行为。

2.3.26(发布日期:20210916)

类别

说明

问题修复

在数据库代理中设定TCP KeepAlive相关的参数,不使用系统参数,确保在不同环境下TCP KeepAlive具有相同行为。

2.3.25(发布日期:20210907)

类别

说明

问题修复

  • 优化Parse报文,写属性的Parse报文不广播到只读节点。

  • 优化全局临时表的路由。

  • 优化表名/函数名白名单的信息管理。

  • 修改只读延时时间单位为毫秒,默认值为300 ms。

2.3.24(发布日期:20210901)

类别

说明

问题修复

只读Endpoint无需判断报文长度。

2.3.23(发布日期:20210603)

类别

说明

问题修复

  • 在只读节点探测建连超时的时候保持Running状态。其他探活失败仍然保持修改状态。

  • 如果只读节点探测创建连接超时,则客户端新建连接时,后端不与此只读节点建连接。

  • 路由时支持全局临时表的识别并路由。

  • 修复大量广播请求时,导致内存膨胀的问题。

2.3.21(发布日期:20210420)

类别

说明

新增功能&性能优化

  • monitor可以查看数据库内部变量的值。

  • 增加强制路由到主库的开关。

问题修复

  • monitor启动时会根据配置初始化内部变量。

  • 支持流量限流功能。

2.3.16(发布日期:20210222)

类别

说明

问题修复

  • Extended query切分报文的流程中,遇到连续的E/v报文时,以最后一个E/v为边界切分报文。

  • Extended query默认不切分报文。

  • 重放Parse报文时携带参数信息。

  • monitor每个探测周期只建立一个连接,在这个探测周期中,可以使用此连接去探测其他必要信息。

2.3.15(发布日期:20201228)

类别

说明

问题修复

  • 优化函数和表的路由白名单。函数白名单主要去掉nextval,表白名单增加了一些系统表。

  • 记录Bind的路由节点,单独路由Execute报文时根据Bind的路由节点进行路由。

  • Extended Query以Bind为起始边界,Execute为结束边界进行拆分。

  • 当路由给主库的事务中不包含Execute报文时,可以视为当前事务没有发生写操作,则仍然可以将后续读请求路由到只读库。

  • 广播报文未收到所有结果前不强行路由SYNC报文。

  • 修复建立连接过程中只读节点断开时,会断开客户端连接的问题。

  • 添加enable_split_ext_pkts开关。开关关闭时不拆分Extended Query报文序列。

  • 主库连接关闭之后不路由任何请求。

  • 修复当所有只读节点不可用时,新请求会卡住的问题。

  • 对事务开启、提交和回滚语句进行广播。

2.3.14(发布日期:20200929)

类别

说明

新增功能&性能优化

支持RC隔离级别事务写后读请求拆分到只读节点。

问题修复

  • 只读节点重连优化。只读节点连接断开之后,不立即重连,而是等到下一次monitor探测结束之后,确定只读节点为健康状态时再重连。

  • 修复读写Endpoint处于stopped状态时,不自动添加主节点的问题。

  • 修复数据库不健康导致建连失败时,向客户端返回数据库不健康的消息的问题。

2.3.12(发布日期:20200819)

类别

说明

问题修复

修复双主问题。当有新主加进来时,旧主的标志位会因为连接失败而去除。

2.3.10(发布日期:20200629)

类别

说明

新增功能&性能优化

支持自定义Endpoint。

问题修复

  • 如果读写集群地址没有主节点,monitor会自动将主节点添加到读写集群地址里。

  • 修复代理广播后,在只读节点未返回结果之前,客户端单独发sync报文会导致连接卡住的问题。

2.3.8(发布日期:20200402)

类别

说明

问题修复

  • Extended Query报文序列拆分。含Begin或者Set的报文序列会从重复报文序列里抽取出来单独处理发送。

  • 事务拆分流程中,如果连接事务已经开启,路由到只读节点时,需要修改包中的事务状态为事务中

2.3.7(发布日期:20200320)

类别

说明

新增功能&性能优化

PostgreSQL支持事务拆分功能。

问题修复

  • 查询白名单表之前,先查看表是否存在。如果不存在,则跳过查询白名单内容的过程。

  • 仅包含SET和读请求的multi-statement不再广播,改为直接路由到主节点。

2.3.6(发布日期:20200312)

类别

说明

新增功能&性能优化

  • 支持只读节点自动重连功能:只读节点连接异常断开后可以自动重连。

  • 支持动态增加节点功能。

问题修复

  • 修复调用API删除只读节点时,对应的只读连接没有断开的问题。

  • 支持edb协议报文。

  • 建连时如果代理没有获取过密码,则先从数据库获取一次密码再建连。

2.3.3(发布日期:20200213)

类别

说明

新增功能&性能优化

支持function name和table name动态白名单功能。

问题修复

将JSON相关函数添加到代理内置函数白名单中。

2.3.1(发布日期:20200204)

类别

说明

问题修复

  • 默认关闭主节点接收读操作的开关。

  • 修复SSL阻塞代理主线程的问题。

2.3.0(发布日期:20200103)

类别

说明

新增功能&性能优化

  • 支持SSL。

  • 支持同步建连。

  • 支持cancel request。

  • 支持monitor探测数据库版本信息。

  • 支持pg_stat_activity、pg_locks、pg_stat_ssl视图的多节点结果合并。

问题修复

修复parser内存泄露的问题。

2.2.2(发布日期:20191218)

类别

说明

问题修复

  • execute语句沿用prepare语句中的hint信息。

  • 修复存储过程或者事务中,SET操作不锁主节点的问题。

  • 修复主库不接收读且所有只读库权重为零时,查询会导致代理crash的问题。

  • 修复主库接受读对老连接生效的问题。

2.2.1(发布日期:20191113)

类别

说明

问题修复

  • 在TCP三次握手之后开启TCP keepalive。

  • 将某些特定的读请求函数添加到函数白名单中。

2.2.0(发布日期:20191024)

类别

说明

新增功能&性能优化

新增hint(/* force_master *//* force_slave */)语法。

问题修复

  • 优化multi-statement路由(只有set和select情况下不锁主节点)。

  • 只读返回error时将原请求重放到主节点。

  • 修复show语句路由到主节点的问题。

2.1.0(发布日期:20190912)

类别

说明

问题修复

  • 支持PostgreSQL协议。

  • monitor支持探测的存活状态、主备状态、LSN 位点、复制延迟(微秒)信息。

  • 支持读写分离功能。

  • 支持session级读一致性功能和表级读一致性功能。其中,由于表级读一致性功能限制较多,暂时默认关闭。默认开启session级读一致性功能。