网页设计模板素材网站大全,哪里可以注册公司,揭阳网站制作价格,宁波住房和城乡建设局网站首页1. 背景
卡合并在OceanBase中是一个复杂的问题#xff0c;其产生可能源于多种因素。目前#xff0c;对于卡合并的明确界定尚不存在统一标准#xff0c;一方面#xff0c;我们界定超过36小时未完成合并为合并超时#xff0c;此时RS会记录ERROR日志#xff1b;另一方面其产生可能源于多种因素。目前对于卡合并的明确界定尚不存在统一标准一方面我们界定超过36小时未完成合并为合并超时此时RS会记录ERROR日志另一方面用户也可能依据自身经验来判断合并是否超时。当用户怀疑合并可能已超时可利用巡检工具进行检查以确认是否存在问题并且得到一系列基础数据方便研发做一个初步的判断省去一些反复沟通的时间。本文描述了 OceanBase 4.x 版本基于obdiag如何进行卡合并的分析和诊断。 2. 卡合并诊断流程说明
2.1. 发现卡合并问题
巡检认为合并/转储存在潜在问题可以有三点
CDB_OB_MAJOR_COMPACTION里IS_ERRORYES 其中当CDB_OB_MAJOR_COMPACTION里IS_SUSPENTYES可以提示用户用户可能是有意设置也有可能是无意设置__all_virtual_compaction_diagnose_info里存在statusFAILED的记录GV$OB_COMPACTION_PROGRESS表中根据上一次合并记录中的data_size/(estimated_finish_time-start_time)与当前合并版本记录中(data_size-unfinished_data_size)/(当前时间-start_time)相比如果差距过大当前合并比上一次合并慢很多以5倍为指标那可能可以认为合并存在异常
2.2. 卡合并诊断
2.2.1. 确定合并记录
查询CDB_OB_MAJOR_COMPACTION找到statusCOMPACTING的记录需要收集回来 可以先检查一下IS_ERROR和IS_SUSPENDED是否非NOIS_ERROR通常发生在出现数据不一致的时候INFO里会显示具体问题IS_SUSPENDED表示暂停了合并有时候会忘了执行过暂停合并操作需要手动恢复合并ALTER SYSTEM RESUME MERGE; 查询__all_virtual_compaction_diagnose_info最好根据上面得到的结果每个租户查一次方便看需要收集回来。如果有记录根据DIAGNOSE_INFO字段的内容来具体分析。这里只介绍了一部分常见的信息其他的目前还是考虑先把诊断表结果拿回来我分析后再手动进行下一步 schedule medium failed 查找这台机器上CREATE_TIME附近时间的observer.loggrep decide_medium_snapshot捞到信息后把线程号摘出来更换过滤关键字grep \[线程号]收集decide_medium_snapshot关键字前后20行的日志。通常里面会有报错上下文%error_no%error_trace% 这种情况通常有dag任务失败了首先查__all_virtual_tablet_meta_table看下这个分区的compaction_scn是否小于合并版本global_broadcast_scn如果小于再进行步骤2在对应机器的对应时间附近grep error_trace收集这部分日志回来整个trace的日志通常不会很多尽可能捞到报错前后的日志。
不影响正常流程的错误码
constexpr int OB_NO_NEED_MERGE -4677; // 调度的时候发现可以做Compaction实际执行时发现不满足Compaction要求
constexpr int OB_CANCELED -4072; // dag任务被cancel掉上层逻辑停止了compaction任务
如果是scheduler报错4072怀疑是执行了suspend merge需要resume merge--4.0版本--
constexpr int OB_TABLE_IS_DELETED -4279; // 表被删除
constexpr int OB_TENANT_HAS_BEEN_DROPPED -5685; //租户被删
constexpr int OB_LS_NOT_EXIST -4719; // 日志流不存在
constexpr int OB_TABLET_NOT_EXIST -4725; //表被删比较危险的错误
constexpr int OB_CHECKSUM_ERROR -4103; // 数据checksum报错
constexpr int OB_ROWKEY_ORDER_ERROR -4105; // rowkey乱序
constexpr int OB_PHYSIC_CHECKSUM_ERROR -4108; // 物理checksum问题多发现于物理盘有问题
constexpr int OB_CS_OUTOF_DISK_SPACE -4184; // datafile中没有空闲宏块时报错表示集群写的数据达到上限。需要扩展存储空间 3. weak read ts is not ready 查询对应租户和ls_id的__all_virtual_ls_info结果收集过滤出weak_read_scn比合并版本global_broadcast_scn小的记录到相应机器上在最新几个observer日志里grep weak_read_scn1的值、generate_weak_read_timestamp_以及log disk space is almost full收集如何进一步判断可以咨询日志或事务组同学 4. memtable can not create dag successfully 首先查__all_virtual_tablet_meta_table看下这个分区的compaction_scn是否小于合并版本global_broadcast_scn如果小于再进行ii查询这台机器这个租户的__all_virtual_dag_scheduler收集回来 5. medium wait for freeze或者major wait for freeze 查询这台机器这个租户的__all_virtual_dag_scheduler收集回来 6. major not schedule for long time 查询该分区的__all_virtual_tablet_compaction_info收集回来到该机器observer.log 查找grep MediumLoo | grep T租户id然后摘出线程号更换关键词grep \[线程号]在最新日志里收集1000行日志
3. 查询GV$OB_COMPACTION_PROGRESS指定租户和compaction_scn分别查compaction_scn当前合并版本global_broadcast_scn以及compaction_scn上一个合并版本last_scn的记录收集回来 如果当前版本的所有记录status都是FINISH那么查询CDB_OB_LS_LOCATIONS查到租户ls_id1的leader机器到该机器上查找最新的几个rootservice.loggrep major_merge_progress_checker | grep Txxxx将日志收集回来根据上一次合并记录中的data_size/(estimated_finish_time-start_time)与当前合并版本记录中unfinished_data_size/当前时间-start_time相比如果差距过大当前合并比上一次合并慢很多那可能可以认为合并存在异常
4. 查询GV$OB_COMPACTION_SUGGESTIONS把结果收集回来
5. 查询oceanbase.__all_virtual_dag_warning_history收集statusRETRYEDtype like %MERGE%的结果。并收集gmt_create附近时间点的observer日志过滤task_id。
4. 如何借助obdiag来快速处理卡合并问题
目前阶段卡合并场景主要用于初步的分析定位及有效信息收集需要在完成后将收集的有效信息进行打包并上传社区 问答区或 OceanBase 运维进行进一步分析。
obdiag rca run --scenemajor_hold
案例参考OB社区版4.2.1 1T数据量10G以下数据增量 每日合并时间20小时左右 如何优化
4. 后续场景升级
目前实现仅作为排查的信息收集对于底层的分析未实现后续将逐步进行深入的根因分析
有兴趣的DBA和开发者可以加入obdiag SIG进行共建开发。
5. 技术支持
排查思路及流程感谢 镜水胡皓胜 提供。
附录
•obdiag 下载地址 https://www.oceanbase.com/softwarecenter
•obdiag 官方文档 https://www.oceanbase.com/docs/obdiag-cn
•obdiag github地址 GitHub - oceanbase/obdiag: obdiag (OceanBase Diagnostic Tool) is designed to help OceanBase users quickly gather necessary information and analyze the root cause of the problem.
•obdiag SIG 营地 [obdiag SIG] 诊断工具组 · OceanBase 技术交流