背景

随着客如云越来越多的应用 OceanBase,分区升级及大版本更新成为了日常且必要的操作。然而,这些更新往往伴随着一定风险:分区升级可能让SQL的执行性能下降,而版本升级则可能带来SQL性能的波动甚至结果的不一致。

OceanBase 升级校验工具(以下简称“该工具”)通过模拟实际业务场景,回放业务执行的真实SQL语句,从而协助我们发现潜在问题,确保升级过程的安全性和高效性。

依赖

  • 表分区升级,已创建好分区表且已保持数据实时同步
  • OB实例版本升级,已创建好新版本实例及租户,并且已同步全量数据、增量数据保持实时同步

适用范围

  • 表分区升级,可针对单表或全库,验证单表到分区表的性能变化。
  • OB实例版本升级,验证实例级别的性能差异和SQL结果。

特性

  • 可针对单表或全库进行数据采集,单表模式适用于表分区升级,SQL校验效率高
  • 可过滤重复的SQL模版,可明显降低SQL数据集,进一步提升SQL校验效率
  • SQL支持多次重复回放,可减少SQL解析及缓存命中率等对SQL执行效率的影响
  • 工具前后端分离,可通过前端界面快速发现潜在SQL问题

核心能力

环境检查

如果是OB大版本升级,一般都需要切换到新的实例,因此需要对新老实例的参数,表的字段、索引、分区等进行检查,防止出现不一致的情况,通过工具可快速实现这一需求。

SQL回放

SQL回放记录存放在元数据库中,通过前端界面可快速发现潜在问题,比如SQL兼容性问题、SQL性能问题等,同时对于升级到新版本的性能提升一目了然。

目标监控

业务升级到分区表或者新版本实例后,需要及时获取目标库中的SQL状态,防止出现预期外的慢SQL;通过目标监控功能可快速发现升级后的SQL问题,为回切辅助决策。

开关设计,即开即用

工具前端界面增加了四个开关设计,分别是:SQL采集开关、SQL回放开关、目标监控开关、环境检查开关,即开即用应对各种突发需求。

原理简介

表分区升级

  • 不用新增实例,老单表和新分区表在一个DB中,通过后端脚本实时获取业务执行的SQL审计日志,存放到元数据库中。
  • 通过后端脚本获取元数据库中的SQL分别去老单表和新分区表执行,分别记录SQL执行时间及SQL执行结果,存到元数据库中,供前端展示。

实例版本升级

  • 新增新版本实例,通过后端脚本实时获取老版本实例业务执行的SQL审计日志,存放到元数据库中。
  • 通过后端脚本获取元数据库中的SQL分别去老版本实例和新版本实例执行,分别记录SQL执行时间及SQL执行结果,存到元数据库中,供前端展示。

操作流程

  1. 如果是分区升级,在原DB中创建新的分区表(命名:表名_new);如果是大版本升级,则需要购买新版本实例。
  2. 新的分区表或新版本实例准备好后,创建OMS链路同步全量+增量数据。
  3. 登陆到工具前端界面-数据库配置添加SQL采集,如果是分区升级则需要配置好表过滤,如果是新版本升级一般则需要配置表过滤。配置好后后端SQL采集器开始采集业务执行的SQL(拉取源端库的SQL审计日志),存放到元数据库 中。可通过工具前端界面-SQL采集查看SQL模版采集结果(默认每天同一SQL模版只采集一次)。
  4. 后端SQL执行器将实时获取元数据库中存放的业务SQL,分别去源和目标回放(在“数据库配置”里可指定SQL回放时间端,防止影响线上业务),记录SQL执行结果记录到元数据库中,可通过工具前端界面-SQL回放查看。
  5. DBA和研发人员可根据SQL回放结果进行判断,识别是否存在潜在SQL问题,可点击查询明细快速定位到具体SQL。
  6. 确定没有问题后,业务可以执行切换,如果是分区升级则执行rename将业务切换到分区表中。业务切换完成后需要创建OMS反向链路(可更改位点),支持异常时业务回切。
  7. 业务切换完成后,工具可以实现对新表或新实例的SQL执行情况进行监控,同步到工具前端界面,为回切辅助决策。
Logo

了解最新的技术洞察和前沿趋势,参与 OceanBase 定期举办的线下活动,与行业开发者互动交流

更多推荐