diff --git a/docs/user_manual/operation_and_maintenance/emergency_handbook/04_node_breakdown.md b/docs/user_manual/operation_and_maintenance/emergency_handbook/04_node_breakdown.md index 045f694d5..90c53c50b 100644 --- a/docs/user_manual/operation_and_maintenance/emergency_handbook/04_node_breakdown.md +++ b/docs/user_manual/operation_and_maintenance/emergency_handbook/04_node_breakdown.md @@ -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) \ No newline at end of file +- 官网文档:[《隔离节点》](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 进程: + +``` +[xiaofeng.lby@sqaobnoxdn011161204091.sa128 /home/xiaofeng.lby/oceanbase] +$sudo su admin + +[admin@sqaobnoxdn011161204091.sa128 /home/xiaofeng.lby/oceanbase] +$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xiaofeng.lby/oceanbase/lib + +[admin@sqaobnoxdn011161204091.sa128 /home/xiaofeng.lby/oceanbase] +$./bin/observer +./bin/observer +``` +注意这里需要在 /oceanbase/bin 的上级目录 /oceanbase 去执行 ``./bin/observer`` 这个命令,估计是需要依赖 etc 目录里的一些配置文件。 +``` +[admin@sqaobnoxdn011161204091.sa128 /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 里添加新节点,并替换发生硬件故障的节点。添加节点后会自动完成补副本的动作。 + +- 如果没有新机器资源,在机器维修结束之前,也能够以两副本对外提供服务(但是这种方式对高可用的保障较低,存在风险,需要尽快上线新的机器资源)。 \ No newline at end of file diff --git a/docs/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem.md b/docs/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem.md new file mode 100644 index 000000000..04a9e088a --- /dev/null +++ b/docs/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem.md @@ -0,0 +1,93 @@ +--- +title: 网络抖动 +weight: 5 +--- + +> 上一小节写了一个 OceanBase 节点宕机时的故障应急思路,下面几个小节再增加其他几种硬件 / 环境故障的处理思路。 +> +> 大家如果不爱看和故障相关内容,倒也不必强行未雨绸缪。可以先收藏,遇到问题的时候再拿出来用。可以不看,但不能没有。 + +> **对于明确的网络问题,建议采用 “先隔离,后分析” 的策略。** + + +## 业务及数据库表现 +当网络发生故障或者抖动,可能会导致 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),这里不赘述。 + +## 应急流程 + +先在集群所有节点进行网络检查,确认影响范围。 + +接下来的应急流程和节点宕机的流程比较类似。 + +### 单机网络故障 + +- 检查网络监控指标是否出现了丢包、超时重传等。 + +- **将被影响单机隔离,防止频繁切主(节点隔离)**。 +``` +-- 停止节点,隔离故障节点 +alter system stop server 'xx.xxx.xxx.x:2882'; +``` +- 排查网络问题并解决,然后解除隔离。 +``` +alter system start server 'xx.xxx.xxx.x:2882'; +``` + + +### 机房网络故障 + + +- 确认受影响的副本。 + +- **租户切主,将机房对应的整个 ZONE 进行隔离([副本隔离](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573944))**。 +``` +-- 租户切主 +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)。 \ No newline at end of file diff --git a/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/001.png b/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/001.png new file mode 100644 index 000000000..7bc5c25dd Binary files /dev/null and b/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/001.png differ diff --git a/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/002.png b/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/002.png new file mode 100644 index 000000000..ae1ea10f2 Binary files /dev/null and b/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/002.png differ diff --git a/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/003.png b/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/003.png new file mode 100644 index 000000000..d80249da1 Binary files /dev/null and b/static/img/user_manual/operation_and_maintenance/emergency_handbook/05_network_problem/003.png differ