K.28. lt_standby_forward

K.28.1. 配置参数
K.28.2. 使用方法
K.28.3. 认证
K.28.4. 功能/限制

lt_standby_forward是一个模块,它将SQL语句从热备节点转发到主节点,提供一个减轻主节点负载和允许客户端从备用节点查询的功能。例如,客户端可以将INSERT、CREATE语句发送到热备节点。

K.28.1. 配置参数

lt_standby_forward.enable_forward

它控制用户是否启用此功能。默认为off。在备用节点上设置此选项,或者为单个会话设置此选项。

K.28.2. 使用方法

您必须在lightdb.conf中添加如下所示的行。

shared_preload_libraries = 'lt_standby_forward'

K.28.3. 认证

lt_standby_forward使用primary_conninfo连接到主节点,将当前的dbname和username(即用于连接到备用节点的数据库和用户)附加到primary_conninfo中。 连接信息类似于:

primary_conninfo dbname=a_db user=a_user application_name=lt_standby_forward options='-c opt1=value1 -c opt2=value2'

不支持设置密码。在主节点上配置lt_hba.conf或在备用节点上将密码放入passfile中以避免输入密码。

K.28.4. 功能/限制

  • 转发DELETE、UPDATE、INSERT、SELECT with modifying CTE语句到主节点。

  • 转发包含volatile函数的SELECT/CALL语句到主节点,否则在备用节点上执行。

  • 在备用节点上执行只读事务,否则转发到主节点。

  • 事务中不允许DDL语句。

  • 在转发到主节点之前,视图(View)将在备用节点上重写(expanded)。如果视图包含当前用户无法访问的对象,则查询失败。

  • 在主备库上都执行 SET 命令,但在备库上执行 show 命令。 不要在连接建立后执行 SET xxx_timeout 命令,请使用 ltsql/jdbc 参数 options 设置这些参数。 对于 ltsql/jdbc 的 options,只有 statement_timeoutlock_timeoutidle_in_transaction_session_timeout 会传递到主库。

  • 不支持 COPY FROM 命令。

  • 不支持 CREATE TEMP/UNLOGGED TABLE 命令。

  • 未在上文提到的实用命令将会转发到主库。