GaussDB(DWS)高可用之单点故障业务不中断

举报
1024bug小姐 发表于 2021/01/10 22:56:55 2021/01/10
【摘要】 1.GaussDB AZ内单点故障RTO(Recovery Time Objective,RTO)恢复时间目标,指在故障或灾难发生之后业务恢复时间,主要指的是所能容忍的应用停止服务的最长时间,也就是从灾难发生到业务系统恢复服务功能所需要的最短时间周期;GaussDB(DWS) AZ内的单实例和单节点故障情况下,RTO=0,是通过单点故障自恢复和SQL语句出错自动重试实现的。1)单点故障自恢复...

1.GaussDB AZ内单点故障

RTO(Recovery Time Objective,RTO)恢复时间目标,指在故障或灾难发生之后业务恢复时间,主要指的是所能容忍的应用停止服务的最长时间,也就是从灾难发生到业务系统恢复服务功能所需要的最短时间周期;

GaussDB(DWS) AZ内的单实例和单节点故障情况下,RTO=0,是通过单点故障自恢复和SQL语句出错自动重试实现的。

1)单点故障自恢复

GaussDB(DWS)高可用架构采用主备从架构,之前已经有很多博文对该架构进行了详细的介绍,这里简单进行普及:

集群正常情况下,主机和备机之间通过日志复制和数据页复制强同步,主机和从备之间只保持连接,不同步数据,当备机发生故障时,主机自动感知,主机与从备开始进行日志和数据页的强同步;如果是主机发生故障,通过集群管理感知,并仲裁备生主,新主与从备进行日志和数据页的强同步;因此,同环内发生单点故障的情况下,仍然时刻保证了数据的2个副本强同步,不会影响服务的可用性;

2)CN Retry功能

GaussDB(DWS)支持在SQL语句执行出错时的自动重试功能(下文简称CN Retry)。对于来自gsql客户端、JDBC、ODBC驱动的SQL语句,在SQL语句执行失败时,CN端能够自动识别语句执行过程中的报错,并重新下发任务进行自动重试。CN Retry功能是默认开启的,由GUC参数max_query_retry_times进行控制,支持范围是0-20,默认为6,代表可语句出错时会自动重试6次,0代表关闭该功能,GaussDB(DWS)绝大部分错误类型都支持CN Retry功能,比如主机单点故障,业务断连的情况。

GaussDB(DWS) 主要是通过以上2个特性来保证单点故障业务不中断,当某个DN主机故障时,通过集群管理和高可用的单点故障自恢复,自动备机升主,此时客户业务虽然实际产生短暂的断连,通过CN Retry功能对业务在后台进行重新下发执行,客户除了感知到短暂业务缓慢,不会影响业务执行。

2.GaussDB(DWS)单点故障实测

我们通过以下步骤对该功能进行简单测试:

1)准备压测程序模拟用户业务,探测程序方便观察业务情况;压测程序可以任意选定,模拟一定的业务压力即可。

探测程序,大概如下,观测较方便:

dbname=rep_hang
port=28308

for((i=1;i<=10000000;i++))
do
echo "########## current times: $i ##########"
echo `date`
gsql -p $port $dbname -c "insert into test_row select nextval('seq_test_001'),now() returning *;"
done

启动业务后的压力情况:

top - 21:53:56 up 63 days, 19:11,  2 users,  load average: 47.09, 23.51, 9.65
Tasks: 1258 total,   2 running, 754 sleeping,   0 stopped,   0 zombie
%Cpu(s): 37.6 us,  9.3 sy,  0.0 ni, 50.6 id,  1.8 wa,  0.0 hi,  0.8 si,  0.0 st
KiB Mem : 40132032+total, 36850240 free, 19214592 used, 34525548+buff/cache
KiB Swap:  4194240 total,  4194240 free,        0 used. 28847993+avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                              
54439 mpp651    20   0   82.6g   4.3g   1.9g S  1914  1.1 212:44.01 gaussdb                                                                                                                              
54427 mpp651    20   0   78.3g   4.4g   1.9g S  1540  1.1 200:15.33 gaussdb                                                                                                                              
54382 mpp651    20   0   56.5g   1.8g   1.0g S 371.1  0.5 686:57.20 gaussdb                                                                                                                              
54404 mpp651    20   0   54.4g   1.6g   1.2g S 172.4  0.4  89:12.34 gaussdb                                                                                                                              
54421 mpp651    20   0   55.0g   1.6g   1.2g S 167.1  0.4  93:04.60 gaussdb 

2)对单个主机节点注入网络故障

ifconfig enp131s0 down

3) 观察探测程序
########## current times: 150 ##########
Sun Jan 10 22:43:01 CST 2021
  id   |           time1            
-------+----------------------------
 95026 | 2021-01-10 22:43:01.052801
(1 row)

INSERT 0 1
########## current times: 151 ##########
Sun Jan 10 22:43:01 CST 2021
  id   |           time1            
-------+----------------------------
 95028 | 2021-01-10 22:43:01.081416
(1 row)

INSERT 0 1
########## current times: 152 ##########
Sun Jan 10 22:43:01 CST 2021
  id   |           time1            
-------+----------------------------
 95031 | 2021-01-10 22:44:05.251098
(1 row)

INSERT 0 1
########## current times: 153 ##########
Sun Jan 10 22:43:32 CST 2021
  id   |           time1            
-------+----------------------------
 95032 | 2021-01-10 22:44:05.288718
(1 row)

可以观测到,业务未发生断连,短暂的卡住了一分钟后继续快速执行。 卡住的时间主要和当时集群的业务压力,以及作业类型,和正在执行的语句执行到了什么阶段相关,这里业务压力比较大。

结论:GaussDB(DWS) AZ内的单实例和单节点故障情况下,业务不中断。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。