# 双集群容灾查询函数
- 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
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该函数只有在容灾集群启动计划内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]所示。
   表1gs_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]所示。
   表2gs_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
  表3gs_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
  示例：
  ```
  gaussdb=# SELECT pg_catalog.disaster_cluster_run_mode();  
  ----------------
                0              
  (1 row)
  ```
  

- pgxc_disaster_read_node() 描述：用于在连接时返回容灾集群相关的集群信息。
  返回值类型：record，具体各个字段的类型和含义如[表4]所示。
  备注：主集群查询会报错，仅用于容灾集群查询。
   表4pgxc_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。             |
     
  示例：
  ```
  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)
  ```
  
 
