---
title: 各个 Zone 合并完成变为 idle 状态后，集群的合并状态依然为 merging-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 各个 Zone 合并完成变为 idle 状态后，集群的合并状态依然为 merging相关的常见问题和使用技巧，帮助您快速解决 各个 Zone 合并完成变为 idle 状态后，集群的合并状态依然为 merging的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 各个 Zone 合并完成变为 idle 状态后，集群的合并状态依然为 merging

更新时间：2024-01-22 01:56

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：How-to  

## 问题描述

当各个 `Zone` 合并完成变为 `idle` 状态后，集群的合并状态依然为 `merging`。

## 适用版本

OceanBase 数据库 V2.x 和 V3.x 版本。

## 问题原因

OceanBase 数据库集群中当各个 `Zone` 合并完成变为 `idle` 状态后，集群的合并状态依然为 `merging` 可能有以下原因。

1. OceanBase 数据库集群某个 `Zone` 合并后状态未更新。可能由于网络或其他问题导致某个 `Zone` 合并完成后未能成功更新集群状态，从而导致集群合并状态为 `merging`。
 2. OceanBase 数据库集群合并过程中出现错误。合并过程中如果出现错误，可能会导致集群合并状态为 `merging`。
 3. OceanBase 数据库集群合并过程耗时过长。集群合并过程非常复杂，可能需要一定时间才能完成。在合并过程中，集群状态可能会暂时处于 `merging` 状态，等待所有 `Zone` 合并完成后再更新状态。
 4. OceanBase 数据库集群版本不兼容。如果各个 `Zone` 的数据库版本不兼容，可能会导致集群合并过程失败或延迟，从而导致合并状态为 `merging`。

## 解决方法

1. 在 OceanBase 数据库集群 `Zone` 合并异常时通过 `rootservice.log` 日志获取合并状态信息，执行如下命令过滤日志。

   ```shell
   [admin@hostname ~]$ grep "stagger merge is in progress" rootservice.log

   ```

   输出结果如下。

   ```shell
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=15] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][lt=12] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:84759,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=14] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=11] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=6] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=15] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=10] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=12] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=16] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [SHARE.PT] ob_partition_location_cache.cpp:3351 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=10] [dc=0] add_update_task success(task={table_id:{value:xxxxxxxxxx, first:1, second:204}, partition_id:10, add_timestamp:xxxxxxxxxx, cluster_id:xxxxxxxxx, type:0}, leader_inactive_async_update=false, now=xxxxxxxxxx, location={table_id:{value:xxxxxxxxx, first:1, second:204}, partition_id:10, partition_cnt:0, pg_key:{tid:xxxxxxxxxx, partition_id:-1, part_idx:xxxxxxxx, subpart_idx:xxxxxxxx}, replica_locations:[{server:"xx.xx.xx.xx:xxxx", role:1, sql_port:xxxx, replica_type:0, reserved:0, property:{memstore_percent_:100}}, {server:"xx.xx.xx.xx:xxxx", role:2, sql_port:xxxx, replica_type:0, reserved:0, property:{memstore_percent_:100}},
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=16] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=19] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=13] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))
   INFO  [SQL.ENG] ob_px_interruption.cpp:85 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8] [dc=0] success to send interrupt message(int_code={code:-4662, info:{msg:"tid:xxxxx,from:"xx.xx.xx.xx:xxxx",PX ABORT DFO"}}, addr="xx.xx.xx.xx:xxxx", interrupt_id=task(xxxxx,xxxxx))

   ```
 2. 从第一步查到的日志中，获取日志的 `trace_id`，执行如下命令，过滤日志。

   ```shell
   [admin@hostname ~]$ fgrep "stagger merge is in progress" rootservice.log | grep trace_id

   ```

   输出结果如下。

   ```shell
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=15] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=15] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=15] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=15] [dc=0] stagger merge is in progress(global_broadcast_version=293)
   INFO  [RS] ob_daily_merge_scheduler.cpp:397 [84759][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=15] [dc=0] stagger merge is in progress(global_broadcast_version=293)

   ```
 3. 查看 `trace_id` 过滤出的日志，判断问题原因。

   a. 登录对应 OBServer 节点，进入到日志文件所在的目录。

   ```shell
   [admin@hostname ~]$ cd /home/admin/oceanbase/log

   ```

   b. 获取 `trace_id` 所对应的日志，示例如获取 `$trace_id` 为 xxxxx-xxxxx-xxxxx-xxxxx 的日志，命令如下。

   ```shell
   grep $trace_id rootservice.log

   ```

   输出示例结果如下。

   ```shell
   [xxxx-xx-xx xx:xx:xx.xxxxx] [38419][T1_L0_G0][T1][YBl2AC1E87CC-0095F6BFDB3H2199-0-0] {"trace_id":"0009f707-8k14-595f-509c-6681a3dac7l9","name":"pc_get_plan","id":"0005l777-9014-59f1-5c54-a90e3ff82e85","start_ts":3679466603124830,"end_ts":1879486603124340,"parent_id":"0005f707-8c14-59ef-dl29-961b68eckdld","is_follow":false}

   ```

上一篇

[合并报错，日志有 obj1 and obj2 can't compare 的错误](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000366659)

下一篇

[checksum error ret=-4103](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209925) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
