暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

新炬运维避坑指南连载(二)

IT那活儿 2023-04-17
703
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!



运维故障一



Oceanbase数据库突然hang死
1. 现象

某核心业务系统数据库突然无法登陆,Observer core退出,业务SQL导致系统CPU耗尽,临时绑定outputline,最终通过补丁升级解决。

2. 处置方法

原因定位某SQL(select * from dual)异常,修改proxy固定路由参数proxy_primary_zone_name指向新主zone,默认主zone为zone3,并重启proxy,修改后业务立即恢复。
3. 技术原理
oceanbase数据库相关机制不太完美,在OBProxy1.8.7版本中,主zone故障h后无法在第一时间内自动切换到正常zone。
但从OBProxy3.2.6版本开始,引入了新的参数enable_primary_zone,默认为true,需要将proxy_primary_zone_name以及proxy_idc_name设置为空,在上线前的高可用测试过程中经过多轮验证符合预期要求。
4. 新炬建议

对于紧急故障短时间无法快速恢复的,可以通过快速重启OBPROXY进程解决。




运维故障二



Oceanbase数据库表不大,但查询突然变慢

1. 现象

业务数据查询,更新突然缓慢,导致业务大量积压。

2. 处置方法

经分析该表上存在频繁的DML操作时,可能会遇到一种现象:虽然表中的数据行数并不大,但是查询和更新的性能出现明显下降。
这种现象在 OceanBase 中称为Queuing 表(业务上有时又称 buffer 表)效应。
解决办法:绑定执行计划。对于存在可用索引,但 OB 优化器计划生成为全表扫描的场景。需要手动进行outline绑定执行计划,指定sql_id从plan_cache中刷出。
3. 新炬建议

为避免此类情况再次发生,将DML操作频繁的表设置为buffer表,这样表的转储与系统的大版本转储时间就不再保持一致,而是根据自身的变化,自行判断转储的时间点。




运维故障三



mysql频繁崩溃重启,导致业务中断
1. 现象
mysql频繁崩溃重启,导致业务中断。

2. 处置过程

1)排查mysql日志,出现了got 11 error的错误,这是由于bug or 机器硬件导致的。
2)检查操作系统日志,并未发现硬件的错误。
3)检查mysql日志,发现mysql使用了8.0.29的版本,此版本由于出现重大bug,开源社区已回收此版本,需升级到8.0.30.在升级过程中,由于mysql频繁重启,导致实例崩溃恢复无法完成,故升级无法进行。需将原备份导入到新实例中,问题解决。

3. 新炬建议

及时关注官网信息,定期对数据库进行升级。检查所有生产环境是否存在8.0.29版本数据库,如果存在,需要及时升级到最新版本。




运维故障四



MySQL数据库被业务误删除

1. 现象

MySQL数据库被业务误删除导致部分业务停止。
2. 处置过程
1)从库io异常导致复制停止。
2)从库导出误删数据库,进行恢复至主库。
3)解析binlog恢复增量数据。

3. 新炬建议

1)对业务账号权限进行规划管控,按照权限最小化原则进行赋权,防止赋权过大。

2)对业务操作变更操作进行管理,防范未经评审变更。

3)所有数据库都要进行备份,备份是运维最后一道防线,或者最后一根稻草,一定要守住。

4)时常进行备份恢复演练,检查备份的有效性。



运维故障五



ORACLE数据库执行计划变更致CPU资源耗尽
1. 现象
业务运行缓慢,同时数据库主机资源紧张,数据库存在大量等待CPU的等待事件。
2. 处置过程
1)查找引发CPU上升的原因,排查等待事件。
2)查找高耗CPU的SQL,分析执行计划。
3)对比历史执行计划和当前执行计划,由于自适应游标共享(Adaptive Cursor Sharing)特性引发执行计划发生变动,进而CPU资源上涨。
4)通过SPM固定SQL语句执行计划。

3. 新炬建议

部署SQL执行计划变化告警(如果担心告警过多,可以增加过滤条件):
例如只对核心SQL进行监控,或者只对资源消耗排在TOP的SQL进行监控。



运维故障六



ORACLE数据库突然宕机,并无法启动
1. 现象
某场地oracle 12c 数据库集群1节点突然宕机,无法启动。
2. 处置过程
1)尝试启动数据库报文件不存在。
2)检查报错文件状态,发现文件权限不对,再次检查上级目录权限,发现Oracle软件安装目录权限均错误。
3)通过相关脚本获取2节点目录权限,重新授予1节点目录权限。
该问题是oracle和grid数据库属组发生的变更,按照正常节点修改属组后,数据库访问正常。
3. 新炬建议
1)权限责任到人,严格限制root权限的使用。
2)回收业务人员过大的操作权限。

3)对数据库维护人员警示作用,生产操作再三确认,先思后行。




运维故障七



ORACLE 19C ASM扩容无法添加磁盘
1. 现象
在添加asm磁盘组添加磁盘提示无法添加,并提示ORA-15137: The ASM cluster is in rolling报错。
经分析数据库补丁更新后,数据库补丁模式在rolling下,导致无法添加asm磁盘。
2. 处置过程
1)上线通过命令asmcmd showclusterstate查看数据库补丁状态信息,返回值为In Rolling Patch。
2)通过命令kfod op=patches查看补丁集信息状态。
3)在实际情况中kfod op=patches碰到过两种情况:
  • (1)两边补丁信息确实不一样 
  • (2)两边补丁信息一致,但是数据库仍然提示为in rolling patch模式
4)针对补丁信息不一致情况使用命令:
  • (1)rootcrs.sh -prepatch
  • (2)patchgen commit -rb +补丁号,进行回滚操作
  • (3)rootcrs.sh -postpatch
5)针对补丁信息一致但是仍然提示rolling patch情况,两边节点按照步骤执行:
  • (1)rootcrs.sh -prepatch 

  • (2)rootcrs.sh -postpatch
3. 新炬建议

在宝贵的补丁停机时间中,我们在补丁更新后要主动检查补丁状态信息,不能在补丁更新中无报错就直接忽略,从而避免不必要的后续故障问题。




运维故障八



Elasticsearch未分配分片异常
1. 现象
Elasticsearch未分配分片异常。
2. 处置方案
查看哪些索引导致集群进入黄色状态,增加每个黄色索引的最大重试次数。
3. 新炬建议
1)以混沌工程为切入点,完善相关监控项和自愈方案开发。

2)完善ES告警体系,对ES未分片进行告警。




运维故障九



IP V6双栈后网络不通
1. 现象
ipv6 前缀地址(类似ipv4的子网掩码)是128,ipv6双栈改造报错,不同网段的主机不通。
2. 处置过程
1)观察到ipv6 的前缀地址之后,反馈给主机和网络检查,ping IPV6 测试主机网络是通的。
2)ORACLE集群添加ipv6 的子网直接报错如下:
./srvctl modify network -subnet 2049:8020:5cc0:bbf2:c701::/112

PRCN-2070 : Failed to validate network. No interface matches required network
 (subnet: 2049:8020:5cc0:bbf2:c701::, netmask: 112 adapters: ).

3)再次联系网络的同事检查,经确认是由于/usr/sbin/dhclient-script 脚本导致的,因为ipv6 从dhcp 不能获取到子网信息,前缀地址是固定在脚本中的,需要修改脚本中new_ipv6_prefixlen=128 为new_ipv6_prefixlen=划分的子网长度。

3. 新炬建议

对于IPV6改造,要提前进行子网规划,提前进行相关测试。避免因为双栈改造导致业务故障。




运维故障十



ZABBIX延迟增大导致业务缓慢
1. 现象
zabbix_server采集延迟越来越大,查看zabbix_server服务进程时发现预处理进程(preprocessing)积压数据越来越大,最终缓存数据会撑爆主机内存导致内存溢出,操作系统自动kill调zabbix_server进程。
2. 处置过程
1)观察zabbix_server预处理进程(preprocessing)数据积压是否越来越大,历史数据同步进程(history syncer)是否存在耗时较大的情况;
2)zabbix_server运行日志error报错处理,重点关注写入/更新报错日志并跟进处理,其次可能会存在因为脚本下发不成功或者脚本未能正常更新导致的采集指标报错的日志,需要重新下发/更新采集脚本/禁用监控项方式解决掉报错问题;
3)proxy状态排查和参数优化,重点关注proxy有无磁盘空间满、proxy进程耗时较长情况,proxy参数重点关注ConfigFrequency参数(该参数为proxy向zabbix_server端检索配置数据的频率,如果较为频繁,会增加zabbix_server压力);
4)zabbix_server性能调优(重点关注StartPollers和StartPreprocessors参数)。
3. 新炬建议

1)增加对ZABBIX积压告警,大多数情况下ZABBIX主要用于各类运维系统,需要增加自监控,防止监控系统在自身出现问题时灯下黑,进而让运维人变成睁眼瞎。

2)对zabbix进行性能调优。


推荐阅读:


END


本文作者:秘而不宣(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论