首批通过分布式安全可靠测评,为关键业务系统打造
如何手动取消正在进行的 transfer 任务
更新时间:2026-06-12 08:51
正在进行的 transfer partition 任务可能无法直接被取消,需要通过修改临时日志流的 unit_group_id 改回源端来取消。
详细说明
手动迁移(transfer)大量 表分区(partition)后,源端日志流会分裂出临时日志流,并需要将临时日志流迁移到目标端机器后与目标端日志流合并。此时若通过 alter system cancel replica task 命令手动取消迁移任务,有些情况下 transfer 不会实际终止,这是因为有些情况下临时日志流的 unit_group_id 已经被修改,容灾模块仍会持续调度日志流迁移。

解决办法
需要手动将临时日志流的 unit group 修改为源端 unit 所在的 unit group,终止临时日志流因所需对齐 unit group id 而发起的迁移。最后等待一次日志流均衡(各个版本时间不同)即可。
详细步骤:
确认正在迁移的日志流 ls_id。
select * from __all_virtual_balance_task_history where tenant_id = xxx;确认正在迁移的日志流所属的 unit group。
select * from __all_virtual_ls_status where tenant_id = xxx and ls_id = xxx;确认正在迁移的日志流源端 unit 和目的端 unit 所属的 unit group。
select * from dba_ob_units where tenant_id = xxx;如果正在迁移的临时日志流 unit group 与目的端 unit 所属的 unit group 相同,将其修改为源端 unit。
alter system modify ls xxx unit_group xxx tenant = 'xxx';
适用版本
OceanBase 数据库 V4.x 版本。