云数据库 GAUSSDB-逻辑解码支持指定位点解码:接口设计

时间:2024-11-13 10:05:07

接口设计

  • 新增控制参数
    1. 新增逻辑解码控制参数,用于指定解码开始点。可通过JDBC接口或者逻辑复制函数(例如:pg_logical_slot_peek_changes、pg_logical_slot_get_changes、pg_logical_slot_peek_binary_changes、pg_logical_slot_get_binary_changes)开启。
      • restart-lsn:未使用该可选参数时,表示逻辑解码开始点使用逻辑复制槽原来的一致性点;有值时,表示逻辑解码开始点是restart-lsn后的一个一致性点。
    2. 新增GUC参数
      • logical_replication_dictionary_retention_time:默认值为365天,用于控制数据字典相关系统表回收时,数据保存时间。
      • enable_logical_replication_dictionary:默认为ON,ON状态下,逻辑复制支持创建多版本字典表类型的逻辑复制槽;OFF状态下,不支持创建多版本字典表类型的逻辑复制槽。
  • 新增系统函数
    • gs_logical_dictionary_baseline():执行逻辑解码数据字典的存量数据基线化,执行成功返回耗时,执行失败返回失败原因。

      规格说明:函数的执行时长与实例上的业务表数量正相关。实例存在1万张业务表的场景下,基线化函数执行耗时25秒左右;10万张业务表的场景下,基线化函数执行耗时120秒左右。函数执行期间不会阻塞其他SQL语句的操作。

      可以通过SELECT status FROM gs_logical_dictionary;确认实例是否已经完成基线化,返回值及含义:

      • 0:基线化完成状态未加载。
      • 1:基线化未完成。
      • 2:基线化进行中。
      • 3:基线化已完成。

      函数执行成功,查询结果预期是3,表示基线化已完成。并开启对数据字典相关系统表的同步写入,例如:pg_class更改时会同步更改gs_logical_class。

    • gs_logical_dictionary_disabled():关闭逻辑解码数据字典功能,停止对数据字典相关系统表的同步写入,执行成功返回OK,执行失败返回失败原因。

      关闭数据字典功能之后,无法使用已有的数据字典模式复制槽继续解码,如需使用数据字典功能,须执行gs_logical_dictionary_baseline()函数,对逻辑数据字典重新进行基线化。

support.huaweicloud.com/fg-gaussdb-cent-v8/gaussdb-48-0325.html