lt_standby_forward
是一个模块,它将SQL语句从热备节点转发到主节点,提供一个减轻主节点负载和允许客户端从备用节点查询的功能。例如,客户端可以将INSERT、CREATE语句发送到热备节点。
您必须在lightdb.conf
中添加如下所示的行。
shared_preload_libraries = 'lt_standby_forward'
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
中以避免输入密码。
转发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_timeout
、lock_timeout
和 idle_in_transaction_session_timeout
会传递到主库。
不支持 COPY FROM 命令。
不支持 CREATE TEMP/UNLOGGED TABLE 命令。
未在上文提到的实用命令将会转发到主库。