
# 双集群容灾查询函数
- gs_get_local_barrier_status() 描述：两地三中心跨Region容灾特性开启后，主集群和灾备集群进行日志同步，通过barrier日志在主集群的落盘，在灾备集群的回放来确定主集群归档日志进度与灾备集群日志回放进度。gs_get_local_barrier_status用于查询灾备集群每个节点当前的日志回放情况。
  返回值类型：text
  barrier_id：灾备集群某节点当前回放到的最新barrier ID。
  barrier_lsn：灾备集群某节点当前回放到的最新barrier ID的Log Sequence Number ( LSN )。
  archive_lsn：灾备集群某节点当前已获得归档日志的位置，该参数当前未生效。
  flush_lsn：灾备集群某节点当前已完成刷盘日志位置。
  ```
  gaussdb=# SELECT * FROM gs_get_local_barrier_status();
                 barrier_id                |    barrier_lsn    |    archive_lsn    |     flush_lsn     
  -----------------------------------------+-------------------+-------------------+-------------------
   csn_000000000000000028741_1719458320165 | 00000000/2BB4B538 | 00000000/00000000 | 00000000/00000000
  (1 row)
  ```
  
- gs_hadr_in_recovery() 描述：两地三中心跨Region容灾特性开启后，查询当前节点是否处于基于目标barrier的日志恢复中，还在恢复中返回true。只有完成日志恢复，才会启动switchover流程中的灾备集群升为生产集群的步骤，需要系统管理员角色执行。
  返回值类型：Boolean
  ```
  gaussdb=# SELECT * FROM gs_hadr_in_recovery();
   is_in_recovery 
  ----------------
   t
  (1 row)
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该函数只有在容灾集群启动计划内switchover时使用。
  
- gs_streaming_dr_get_switchover_barrier() 描述：两地三中心跨Region容灾-基于流式复制的解决方案中，查询灾备集群参与容灾的CN与首备DN实例是否已接收到switchover barrier日志并完成回放，已完成返回true。灾备集群只有在所有DN实例都完成switchover barrier日志回放，才会启动switchover流程中的灾备数据库实例升为生产数据库实例的步骤（需要系统管理员角色）。
  返回值类型：Boolean
  备注：该函数只有在流式容灾解决方案中容灾数据库实例启动计划内switchover时使用。
  ```
  gaussdb=# SELECT * FROM gs_streaming_dr_get_switchover_barrier();
   get_switchover_barrier 
  ------------------------
   f
  (1 row)
  ```
  
- gs_streaming_dr_service_truncation_check() 描述：两地三中心跨Region容灾-基于流式复制的解决方案中，查询主集群参与容灾的CN与主DN实例是否已完成switchover barrier日志发送，已完成返回true。只有完成日志发送，才会启动switchover流程中的生产数据库实例降为灾备数据库实例的步骤（需要系统管理员角色）。
  返回值类型：Boolean
  备注：该函数只有在容灾数据库实例启动计划内switchover时使用。
  ```
  gaussdb=# SELECT * FROM gs_streaming_dr_service_truncation_check();
   complete_truncation 
  ---------------------
   f
  (1 row)
  ```
  
- 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所需要的睡眠时间（单位：微秒）。 |
     
  ```
  gaussdb=# SELECT * FROM gs_hadr_local_rto_and_rpo_stat();
   hadr_sender_node_name  | hadr_receiver_node_name  |  source_ip   | source_port |   dest_ip   | dest_port | current_rto | target_rto | current_rpo | target_rpo | rto_sleep_time | rpo_sleep_time 
  ------------------------+--------------------------+--------------+-------------+-------------+-----------+-------------+------------+-------------+------------+----------------+----------------
   dn_6001_6002_6003_6004 | cbg_order_b_hadr_dn_6001 | <IP> |       <PORT> | <IP> |     <PORT> |           0 |          0 |           2 |          0 |              0 |              0
  (1 row)
  ```
  
- 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所需要的睡眠时间（单位：微秒）。 |
     
  ```
  gaussdb=# SELECT * FROM gs_hadr_remote_rto_and_rpo_stat();
   hadr_sender_node_name  | hadr_receiver_node_name  |  source_ip   | source_port |   dest_ip    | dest_port | current_rto | target_rto | current_rpo | target_rpo | rto_sleep_time | rpo_sleep_time 
  ------------------------+--------------------------+--------------+-------------+--------------+-----------+-------------+------------+-------------+------------+----------------+----------------
   dn_6001_6002_6003_6004 | cbg_order_b_hadr_dn_6001 | <IP> |       <PORT> | <IP>  |     <PORT> |           0 |          0 |           4 |          0 |              0 |              0
   dn_6013_6014_6015_6016 | cbg_order_b_hadr_dn_6007 | <IP> |       <PORT> | <IP> |     <PORT> |           0 |          0 |           2 |          0 |              0 |              0
   dn_6009_6010_6011_6012 | cbg_order_b_hadr_dn_6005 | <IP> |       <PORT> | <IP> |     <PORT> |           0 |          0 |           2 |          0 |              0 |              0
   dn_6005_6006_6007_6008 | cbg_order_b_hadr_dn_6003 | <IP>  |       <PORT> | <IP>  |     <PORT> |           0 |          0 |           4 |          0 |              0 |              0
   cn_5002                | cbg_order_b_hadr_cn_5002 | <IP>  |       <PORT> | <IP> |     <PORT> |           0 |          0 |           1 |          0 |              0 |              0
  (5 rows)
  ```
  
 
