Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,52 @@ $ps -ef | grep observer
- 联系社区论坛值班同学分析故障根因。


# 参考资料
## 参考资料

- 洪波大佬的社区博客:[《OceanBase 应急三板斧》](https://open.oceanbase.com/blog/13250502949)
- 官网文档:[《集群常见故障处理》](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573937)
- 官网文档:[《隔离节点》](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573941)
- 官网文档:[《隔离节点》](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573941)



## 2024.12.04 补充内容

这里最后多补充一句,就是:
- 如果机器可以恢复,首先可以尝试在 OCP 中重启。

![image](/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/001.png)


如果在 OCP 中无法立刻重启,可以手动进入安装目录去启动 observer 进程:

```
[[email protected] /home/xiaofeng.lby/oceanbase]
$sudo su admin

[[email protected] /home/xiaofeng.lby/oceanbase]
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xiaofeng.lby/oceanbase/lib

[[email protected] /home/xiaofeng.lby/oceanbase]
$./bin/observer
./bin/observer
```
注意这里需要在 /oceanbase/bin 的上级目录 /oceanbase 去执行 ``./bin/observer`` 这个命令,估计是需要依赖 etc 目录里的一些配置文件。
```
[[email protected] /home/xiaofeng.lby/oceanbase]
$find . -name observer.config.bin
./etc/observer.config.bin
```

- 重启之后,在业务低峰期,可以再切回原来的主。防止 session 长期跨机房访问主副本。
```
ALTER TENANT tenant_name primary_zone='zone1';

-- 通过查询 GV$OB_LOG_STAT 中的 ROLE 字段判断切主是否成功。
SELECT SVR_IP, ROLE, SCN_TO_TIMESTAMP(END_SCN)
FROM oceanbase.GV$OB_LOG_STAT
WHERE TENANT_ID = 1 order by LS_ID, ROLE;
```

- 如果机器无法恢复,直接在 OCP 里添加新节点,并替换发生硬件故障的节点。添加节点后会自动完成补副本的动作。

- 如果没有新机器资源,在机器维修结束之前,也能够以两副本对外提供服务(但是这种方式对高可用的保障较低,存在风险,需要尽快上线新的机器资源)。
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
title: 网络抖动
weight: 5
---

> 上一小节写了一个 OceanBase 节点宕机时的故障应急思路,下面几个小节再增加其他几种硬件 / 环境故障的处理思路。
>
> 大家如果不爱看和故障相关内容,倒也不必强行未雨绸缪。可以先收藏,遇到问题的时候再拿出来用。可以不看,但不能没有。

> **<font color="red">对于明确的网络问题,建议采用 “先隔离,后分析” 的策略。</font>**


## 业务及数据库表现
当网络发生故障或者抖动,可能会导致 OceanBase 集群内的日志流会反复发起无主选举。具体表现在应用层就是应用请求时好时坏。

- 网络轻微抖动时,可能会影响业务 SQL 访问性能。

- 网络严重抖动时,可能导致 OceanBase 通信时好时坏,进而造成频繁切主。业务甚至有可能收到数据库返回的 [ret=-4038](https://open.oceanbase.com/quicksearch?q=OB_NOT_MASTER&scope=knowledge) 这个 OB_NOT_MASTER 的报错(99.9% 都是底层发生切主导致的找不到 leader 副本)。

- 网络完全中断时,如出现网络隔离的节点是主副本节点,集群会切主,切主完成后,业务恢复。这台 OBServer 上的所有 session 如果因为网络原因全部断开,可能也会致使部分业务受到影响。

## 排查方向
- 网络丢包时,OCP 会有告警。

![image](/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/002.png)

- 如果有网络故障或者长时间丢包,OCP 可能直接会有[主机不可用](https://www.oceanbase.com/docs/common-ocp-1000000001740695)告警。

![image](/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/003.png)

- 网络故障排查方法,详见:[OceanBase 官网文档](https://www.oceanbase.com/docs/common-ocp-1000000001740641),这里不赘述。

## 应急流程

先在集群所有节点进行网络检查,确认影响范围。

接下来的应急流程和节点宕机的流程比较类似。

### 单机网络故障

- 检查网络监控指标是否出现了丢包、超时重传等。

- **<font color="red">将被影响单机隔离,防止频繁切主(节点隔离)</font>**。
```
-- 停止节点,隔离故障节点
alter system stop server 'xx.xxx.xxx.x:2882';
```
- 排查网络问题并解决,然后解除隔离。
```
alter system start server 'xx.xxx.xxx.x:2882';
```


### 机房网络故障


- 确认受影响的副本。

- **<font color="red">租户切主,将机房对应的整个 ZONE 进行隔离([副本隔离](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573944))</font>**。
```
-- 租户切主
ALTER TENANT tenant_name primary_zone='zone1';

-- 隔离 zone
ALTER SYSTEM STOP ZONE 'zone1';

SELECT zone, status FROM oceanbase.DBA_OB_ZONES;
+-------+----------+
| zone | status |
+-------+----------+
| zone1 | INACTIVE |
| zone2 | ACTIVE |
| zone3 | ACTIVE |
+-------+----------+
```

- 排查网络问题并解决,然后解除隔离。
```
ALTER SYSTEM START ZONE zone_name;

SELECT zone, status FROM oceanbase.DBA_OB_ZONES;
+-------+--------+
| zone | status |
+-------+--------+
| zone1 | ACTIVE |
| zone2 | ACTIVE |
| zone3 | ACTIVE |
+-------+--------+
```

### 集群所有机房网络故障

如果多机房均有网络故障,且网络无法短时恢复,需要切换至备集群(祭出备库)。详见:[官网文档](https://www.oceanbase.com/docs/common-ocp-1000000001740130)。
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading