Skip to content

Commit 161aa1c

Browse files
authored
Merge pull request #205 from oceanbase/xiaofeng_branch
进阶教程增加网络抖动小节
2 parents 7e78829 + 7a5101b commit 161aa1c

File tree

5 files changed

+139
-2
lines changed

5 files changed

+139
-2
lines changed

docs/user_manual/operation_and_maintenance/emergency_handbook/04_node_breakdown.md

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,52 @@ $ps -ef | grep observer
113113
- 联系社区论坛值班同学分析故障根因。
114114
115115
116-
# 参考资料
116+
## 参考资料
117117
118118
- 洪波大佬的社区博客:[《OceanBase 应急三板斧》](https://open.oceanbase.com/blog/13250502949)
119119
- 官网文档:[《集群常见故障处理》](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573937)
120-
- 官网文档:[《隔离节点》](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573941)
120+
- 官网文档:[《隔离节点》](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573941)
121+
122+
123+
124+
## 2024.12.04 补充内容
125+
126+
这里最后多补充一句,就是:
127+
- 如果机器可以恢复,首先可以尝试在 OCP 中重启。
128+
129+
![image](/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/001.png)
130+
131+
132+
如果在 OCP 中无法立刻重启,可以手动进入安装目录去启动 observer 进程:
133+
134+
```
135+
[[email protected]128 /home/xiaofeng.lby/oceanbase]
136+
$sudo su admin
137+
138+
[[email protected]128 /home/xiaofeng.lby/oceanbase]
139+
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xiaofeng.lby/oceanbase/lib
140+
141+
[[email protected]128 /home/xiaofeng.lby/oceanbase]
142+
$./bin/observer
143+
./bin/observer
144+
```
145+
注意这里需要在 /oceanbase/bin 的上级目录 /oceanbase 去执行 ``./bin/observer`` 这个命令,估计是需要依赖 etc 目录里的一些配置文件。
146+
```
147+
[[email protected]128 /home/xiaofeng.lby/oceanbase]
148+
$find . -name observer.config.bin
149+
./etc/observer.config.bin
150+
```
151+
152+
- 重启之后,在业务低峰期,可以再切回原来的主。防止 session 长期跨机房访问主副本。
153+
```
154+
ALTER TENANT tenant_name primary_zone='zone1';
155+
156+
-- 通过查询 GV$OB_LOG_STAT 中的 ROLE 字段判断切主是否成功。
157+
SELECT SVR_IP, ROLE, SCN_TO_TIMESTAMP(END_SCN)
158+
FROM oceanbase.GV$OB_LOG_STAT
159+
WHERE TENANT_ID = 1 order by LS_ID, ROLE;
160+
```
161+
162+
- 如果机器无法恢复,直接在 OCP 里添加新节点,并替换发生硬件故障的节点。添加节点后会自动完成补副本的动作。
163+
164+
- 如果没有新机器资源,在机器维修结束之前,也能够以两副本对外提供服务(但是这种方式对高可用的保障较低,存在风险,需要尽快上线新的机器资源)。
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
---
2+
title: 网络抖动
3+
weight: 5
4+
---
5+
6+
> 上一小节写了一个 OceanBase 节点宕机时的故障应急思路,下面几个小节再增加其他几种硬件 / 环境故障的处理思路。
7+
>
8+
> 大家如果不爱看和故障相关内容,倒也不必强行未雨绸缪。可以先收藏,遇到问题的时候再拿出来用。可以不看,但不能没有。
9+
10+
> **<font color="red">对于明确的网络问题,建议采用 “先隔离,后分析” 的策略。</font>**
11+
12+
13+
## 业务及数据库表现
14+
当网络发生故障或者抖动,可能会导致 OceanBase 集群内的日志流会反复发起无主选举。具体表现在应用层就是应用请求时好时坏。
15+
16+
- 网络轻微抖动时,可能会影响业务 SQL 访问性能。
17+
18+
- 网络严重抖动时,可能导致 OceanBase 通信时好时坏,进而造成频繁切主。业务甚至有可能收到数据库返回的 [ret=-4038](https://open.oceanbase.com/quicksearch?q=OB_NOT_MASTER&scope=knowledge) 这个 OB_NOT_MASTER 的报错(99.9% 都是底层发生切主导致的找不到 leader 副本)。
19+
20+
- 网络完全中断时,如出现网络隔离的节点是主副本节点,集群会切主,切主完成后,业务恢复。这台 OBServer 上的所有 session 如果因为网络原因全部断开,可能也会致使部分业务受到影响。
21+
22+
## 排查方向
23+
- 网络丢包时,OCP 会有告警。
24+
25+
![image](/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/002.png)
26+
27+
- 如果有网络故障或者长时间丢包,OCP 可能直接会有[主机不可用](https://www.oceanbase.com/docs/common-ocp-1000000001740695)告警。
28+
29+
![image](/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/003.png)
30+
31+
- 网络故障排查方法,详见:[OceanBase 官网文档](https://www.oceanbase.com/docs/common-ocp-1000000001740641),这里不赘述。
32+
33+
## 应急流程
34+
35+
先在集群所有节点进行网络检查,确认影响范围。
36+
37+
接下来的应急流程和节点宕机的流程比较类似。
38+
39+
### 单机网络故障
40+
41+
- 检查网络监控指标是否出现了丢包、超时重传等。
42+
43+
- **<font color="red">将被影响单机隔离,防止频繁切主(节点隔离)</font>**
44+
```
45+
-- 停止节点,隔离故障节点
46+
alter system stop server 'xx.xxx.xxx.x:2882';
47+
```
48+
- 排查网络问题并解决,然后解除隔离。
49+
```
50+
alter system start server 'xx.xxx.xxx.x:2882';
51+
```
52+
53+
54+
### 机房网络故障
55+
56+
57+
- 确认受影响的副本。
58+
59+
- **<font color="red">租户切主,将机房对应的整个 ZONE 进行隔离([副本隔离](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573944))</font>**
60+
```
61+
-- 租户切主
62+
ALTER TENANT tenant_name primary_zone='zone1';
63+
64+
-- 隔离 zone
65+
ALTER SYSTEM STOP ZONE 'zone1';
66+
67+
SELECT zone, status FROM oceanbase.DBA_OB_ZONES;
68+
+-------+----------+
69+
| zone | status |
70+
+-------+----------+
71+
| zone1 | INACTIVE |
72+
| zone2 | ACTIVE |
73+
| zone3 | ACTIVE |
74+
+-------+----------+
75+
```
76+
77+
- 排查网络问题并解决,然后解除隔离。
78+
```
79+
ALTER SYSTEM START ZONE zone_name;
80+
81+
SELECT zone, status FROM oceanbase.DBA_OB_ZONES;
82+
+-------+--------+
83+
| zone | status |
84+
+-------+--------+
85+
| zone1 | ACTIVE |
86+
| zone2 | ACTIVE |
87+
| zone3 | ACTIVE |
88+
+-------+--------+
89+
```
90+
91+
### 集群所有机房网络故障
92+
93+
如果多机房均有网络故障,且网络无法短时恢复,需要切换至备集群(祭出备库)。详见:[官网文档](https://www.oceanbase.com/docs/common-ocp-1000000001740130)
181 KB
Loading
39.9 KB
Loading
145 KB
Loading

0 commit comments

Comments
 (0)