本文主要介绍了PolarDB PostgreSQL引擎数据库代理的版本更新记录。

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启动时会根据配置初始化内部变量。
  • 开启限流机制。其中,高水位(high water): 100M,低水位(low water): 1M。

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视图的多节点结果合并。
问题修复 修复paser内存泄露的问题。

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支持探测PolarDB PostgreSQL的存活状态、主备状态、LSN 位点、复制延迟(微秒)信息。
  • 支持读写分离功能。
  • 支持session级读一致性功能和表级读一致性功能。其中,由于表级读一致性功能限制较多,暂时默认关闭。默认开启session级读一致性功能。