首页 > 数据库 > > 集群HA介绍-单点故障自恢复
GaussDB 200可做到短时间内恢复并对外提供服务,即单点故障自恢复。该功能需要具备以下前提条件:
单点故障自恢复,实际是由其他实例承接故障实例的业务。这种情况下,会打破集群本来的负载均衡,使承接了故障实例服务的主机负荷增大。若不及时修复故障实例,并恢复集群的负载均衡,存在未来发生非单点故障导致集群服务不可修复风险。因此,DBA可以每日使用gs_check工具例行对GaussDB 200进行健康检查,及时发现异常进行处理,提前预防故障或对故障及时进行修复。
以上所述时间均为GaussDB 200的出厂默认时间。通过缩短对应时间,可以提升单点故障自恢复的效率。但是,缩短检测时间后,对于大集群情况或者业务压力大的情况下,很容易会因正常的实例通信超时,导致业务失败。因此,如果需要,建议在技术支持工程师的辅助下进行设置。
以将CM Server+DN/GTM单点故障后集群支持50s内切换为例:
cm_server端:
gs_guc set -Z cmserver -N all -I all -c "instance_heartbeat_timeout = 15"
gs_guc set -Z cmserver -N all -I all -c "instance_failover_delay_timeout = 0"
gs_guc set -Z cmserver -N all -I all -c "cmserver_ha_heartbeat_timeout= 8"
gs_guc set -Z cmserver -N all -I all -c "cmserver_self_vote_timeout= 8"
gs_guc set -Z cmserver -N all -I all -c "cmserver_ha_connect_timeout = 3"
gs_guc set -Z cmserver -N all -I all -c "cmserver_ha_status_interval = 1"
gs_guc set -Z cmserver -N all -I all -c "alarm_report_interval = 3"
cm_agent端:
gs_guc set -Z cmagent -N all -I all -c "agent_heartbeat_timeout = 5"
gs_guc set -Z cmagent -N all -I all -c "agent_connect_timeout = 1"
gs_guc set -Z cmagent -N all -I all -c "agent_report_interval = 1"
gs_guc set -Z cmagent -N all -I all -c "agent_connect_retries = 15"
GTM端:
gs_guc set -Z cmagent -N all -I all -c "standby_connection_timeout = 7"DN端:
gs_guc set -Z datanode -N all -I all -c "wal_receiver_timeout = 15"
gs_guc set -Z datanode -N all -I all -c "wal_receiver_connect_timeout = 2"
如果备DN连接主DN时,报"timeout expired",代表连接超时时间设置太小,此时只需要手动增加wal_receiver_connect_timeout的值就可以了。
例如:
gs_guc reload -Z datanode -N all -I all -c "wal_receiver_connect_timeout = 5"参数调节完成后,显示如下信息,则GUC参数值修改成功。
Total instances: X(总实例数).
Failed instances: .
Success to perform gs_guc!
gs_om -t stop && gs_om -t start出现故障时,集群log目录下可定位观察到故障恢复时间。DN/GTM单点故障RTO(Recovery Time Objective)<30s,CM Server+DN/GTM组合故障RTO<50s。
当GTM主机和运行业务的CN实例同时故障时,业务可能在50s内无法恢复到可用状态,因此建议安装部署时GTM主备物理机器上不要部署CN实例。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3136377/ ,如需转载,请注明出处,否则将追究法律责任。