双集群容灾查询函数
- gs_get_local_barrier_status()
描述:基于流式复制的异地容灾特性开启后,主集群和灾备集群进行日志同步,通过barrier日志在主集群的落盘,在灾备集群的回放来确定主集群归档日志进度与灾备集群日志回放进度。gs_get_local_barrier_status用于查询灾备集群每个节点当前的日志回放情况。
返回值类型:text
barrier_id:灾备集群某节点当前回放到的最新barrier ID。
barrier_lsn:灾备集群某节点当前回放到的最新barrier ID的Log Sequence Number ( LSN )。
archive_lsn:灾备集群某节点当前已获得归档日志的位置,该参数当前未生效。
flush_lsn:灾备集群某节点当前已完成刷盘日志位置。
- gs_hadr_in_recovery()
描述:基于流式复制的异地容灾特性开启后,查询当前节点是否处于基于目标barrier的日志恢复中,还在恢复中返回true。只有完成日志恢复,才会启动switchover流程中的灾备集群升为生产集群的步骤,需要系统管理员角色执行。
返回值类型:Boolean
该函数只有在容灾集群启动计划内switchover时使用。
- gs_streaming_dr_get_switchover_barrier()
描述:基于流式复制的异地容灾解决方案中,查询灾备集群参与容灾的CN与首备DN实例是否已接收到switchover barrier日志并完成回放,已完成返回true。灾备集群只有在所有DN实例都完成switchover barrier日志回放,才会启动switchover流程中的灾备数据库实例升为生产数据库实例的步骤(需要系统管理员角色)。
返回值类型:Boolean
备注:该函数只有在流式容灾解决方案中容灾数据库实例启动计划内switchover时使用。
- gs_streaming_dr_service_truncation_check()
描述:基于流式复制的异地容灾解决方案中,查询主集群参与容灾的CN与主DN实例是否已完成switchover barrier日志发送,已完成返回true。只有完成日志发送,才会启动switchover流程中的生产数据库实例降为灾备数据库实例的步骤(需要系统管理员角色)。
返回值类型:Boolean
备注:该函数只有在容灾数据库实例启动计划内switchover时使用。
- gs_hadr_local_rto_and_rpo_stat()
描述:显示流式容灾的本地节点数据库实例和灾备数据库实例日志流控信息(如果在没有参与流式容灾的节点执行,如备DN或部分CN节点,则可能返回空)。
返回值类型:record,具体各个字段的类型和含义如表1所示。
表1 gs_hadr_local_rto_and_rpo_stat参数说明 参数
类型
描述
hadr_sender_node_name
text
节点的名称,包含主数据库实例和备数据库实例首备。
hadr_receiver_node_name
text
备数据库实例首备名称。
source_ip
text
主数据库实例主DN IP地址。
source_port
int
主数据库实例主DN通信端口。
dest_ip
text
备数据库实例首备DN IP地址。
dest_port
int
备数据库实例首备DN通信端口。
current_rto
int
流控的信息,当前主备数据库实例的日志RTO时间(单位:秒)。
target_rto
int
流控的信息,目标主备数据库实例间的RTO时间(单位:秒)。
current_rpo
int
流控的信息,当前主备数据库实例的日志RPO时间(单位:秒)。
target_rpo
int
流控的信息,目标主备数据库实例间的RPO时间(单位:秒)。
rto_sleep_time
int
RTO流控信息,为了达到目标RTO,预期主机walsender所需要的睡眠时间(单位:微秒)。
rpo_sleep_time
int
RPO流控信息,为了达到目标RPO,预期主机xlogInsert所需要的睡眠时间(单位:微秒)。
- gs_hadr_remote_rto_and_rpo_stat()
描述:显示流式容灾的其他所有分片或CN数据库实例和灾备数据库实例日志流控信息(一般在CN节点执行;如果在DN节点执行,可能返回为空)。
返回值类型:record,具体各个字段的类型和含义如表2所示。
表2 gs_hadr_remote_rto_and_rpo_stat 参数
类型
描述
hadr_sender_node_name
text
节点的名称,包含主数据库实例和备数据库实例首备。
hadr_receiver_node_name
text
备数据库实例首备名称。
source_ip
text
主数据库实例主DN IP地址。
source_port
int
主数据库实例主DN通信端口。
dest_ip
text
备数据库实例首备DN IP地址。
dest_port
int
备数据库实例首备DN通信端口。
current_rto
int
流控的信息,当前主备数据库实例的日志RTO时间(单位:秒)。
target_rto
int
流控的信息,目标主备数据库实例间的RTO时间(单位:秒)。
current_rpo
int
流控的信息,当前主备数据库实例的日志RPO时间(单位:秒)。
target_rpo
int
流控的信息,目标主备数据库实例间的RPO时间(单位:秒)。
rto_sleep_time
int
RTO流控信息,为了达到目标RTO,预期主机walsender所需要的睡眠时间(单位:微秒)。
rpo_sleep_time
int
RPO流控信息,为了达到目标RPO,预期主机xlogInsert所需要的睡眠时间(单位:微秒)。
- gs_is_wal_truncate_complete()
描述:用于查询灾备集群升主时,日志在线截断是否完成,已完成返回true。每次查询到已完成后会重置该值。
返回值类型:Boolean
备注:该函数只有在灾备集群升主时使用。
- gs_hadr_local_replay_delay_stat()
描述:灾备集群延迟回放场景下,显示灾备集群barrier接收、barrier回放以及延迟时间等信息。
返回值类型:record
表3 gs_hadr_local_replay_delay_stat返回参数说明 参数名
类型
描述
node_name
text
实例名。
receive_barrier
text
接收携带时间戳的日志信息。
receive_barrier_lsn
text
接收携带时间戳的日志LSN。
receive_time
timestamp with time zone
解析接收时间戳。
replay_barrier
text
回放携带时间戳的日志信息。
replay_barrier_lsn
text
回放携带时间戳的日志LSN。
replay_time
timestamp with time zone
解析回放时间戳。
delay_replay
int8
延迟回放配置值。
current_remain_interval
int8
延迟实际间隔。
示例:
gaussdb=# SELECT * FROM gs_hadr_local_replay_delay_stat(); node_name | receive_barrier | receive_barrier_lsn | receive_time | replay_barrier | replay_barrier_lsn | replay_time | delay_replay | current_remain_interval --------------+-----------------------------------------+---------------------+----------------------------+-----------------------------------------+--------------------+----------------------------+--------------+------------------------- dn_6001_6002 | csn_000000000000000023117_1772440335494 | 00000000/1225B4B0 | 2026-03-02 16:32:15.494+08 | csn_000000000000000023111_1772440331492 | 00000000/1225B320 | 2026-03-02 16:32:11.492+08 | 0 | 4 (1 row)
- disaster_cluster_run_mode()
描述:用于在连接时查询连接的是主集群还是灾备集群。查询该函数主集群返回0,灾备集群返回1。
返回值类型:int
示例:
1 2 3 4
gaussdb=# SELECT pg_catalog.disaster_cluster_run_mode(); ---------------- 0 (1 row)
- pgxc_disaster_read_node()
返回值类型:record,具体各个字段的类型和含义如表4所示。
备注:主集群查询会报错,仅用于容灾集群查询。
表4 pgxc_disaster_read_node 参数
类型
描述
node_name
name
节点的名称。
node_type
char
节点的类型:D代表首备数据节点,S代表级联备数据节点,C代表查询节点。
node_host
name
节点的通讯IP地址。
node_port
int
节点的通讯端口。
node_host1
name
节点的通讯虚拟IP地址。
node_port1
int
节点的通讯虚拟端口。
nodeis_active
boolean
节点是否正常:正常为true,异常为false。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
gaussdb=# SELECT * from pg_catalog.pgxc_disaster_read_node(); node_name | node_type | node_host | node_port | node_host1 | node_port1 | nodeis_active --------------+-----------+------------+-----------+------------+------------+--------------- dn_6001_6002 | D | 8.92.0.126 | 4000 | 8.92.0.126 | 4000 | t dn_6003_6004 | D | 8.92.0.128 | 4020 | 8.92.0.128 | 4020 | t dn_6005_6006 | D | 8.92.0.127 | 4040 | 8.92.0.127 | 4040 | t dn_6007_6008 | D | 8.92.0.68 | 4060 | 8.92.0.68 | 4060 | t dn_6001_6002 | S | 8.92.0.127 | 4000 | 8.92.0.127 | 4000 | t dn_6003_6004 | S | 8.92.0.68 | 4020 | 8.92.0.68 | 4020 | t dn_6005_6006 | S | 8.92.0.126 | 4040 | 8.92.0.126 | 4040 | t dn_6007_6008 | S | 8.92.0.128 | 4060 | 8.92.0.128 | 4060 | t cn_5001 | C | 8.92.0.128 | 9080 | 10.0.0.128 | 9080 | t cn_5002 | C | 8.92.0.127 | 9080 | 10.0.0.127 | 9080 | t (10 rows)