适用版本
OceanBase 数据库 V2.x、V3.x 版本。
问题现象
对一个 5 副本的集群扩容后,集群自动进行 unit migration 操作。发现 zone1~zone4 的 unit migrate 在 2 分钟就完成了,而 zone5 中却用了 2.5 个小时。
问题原因
观察 unit migrate 操作的方法如下所示。
- 从 OCP 的资源管理页面查看。
- 从系统表
__all_rootservice_job中查看。
从系统表 __all_rootservice_event_history 中查看 RS 任务的执行历史信息。
obclient> select * from __all_rootservice_event_history
where module='balancer' and event like '%migrate%'
order by gmt_create desc;
可以看到分区的迁移任务有大量报错,star_migrate_replica 发起后,之后的 finish_migrate_replica 返回报错 -4065 和 -4017。
经分析 -4065 表示 Log not sync,当 clog 延迟落后到一定的阈值后,会触发 replica rebuild。而 replica migrate 任务的优先级是低于 replica rebuild 任务的,因此 migrate 会一直等待并耗费了较长时间。
解决方法
可以参考 如何优化增补副本、副本搬迁速率 进行相应的参数设置,加快 replica rebuild 的速度。