---
title: OceanBase 数据库 V4.x 版本日志流副本运维命令使用的相关问题-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 OceanBase 数据库 V4.x 版本日志流副本运维命令使用的相关问题相关的常见问题和使用技巧，帮助您快速解决 OceanBase 数据库 V4.x 版本日志流副本运维命令使用的相关问题的难题。
---
切换语言

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

划线反馈

# OceanBase 数据库 V4.x 版本日志流副本运维命令使用的相关问题

更新时间：2024-07-03 09:51

适用版本： V4.2.x 内容类型：TechNote  

通过 SQL 运维命令发起的容灾任务是异步执行的，任务执行过程大致分为两个步骤，第一步是一些前置的检查：语法检查、各个参数的格式检查、命令是否合法合理（例如补副本命令对应 server 上是否有资源，是否已经有副本），如果通过了该步骤的各种检查，则构造任务发送给底层进行执行，底层异步的执行任务，此时运维命令就已经返回结果了，因此运维命令返回成功与否不代表最终的执行结果，只代表该任务是否已经成功的下发给底层。第二个主要步骤即为底层异步执行具体的任务的过程。

## 任务是否成功触发

运维命令的返回结果即可反应任务是否成功触发（是否下发到了底层去执行），如果运维命令返回成功，则该任务已经成功下发到了底层，如果运维命令执行失败，可以参考查询相关错误原因。 另外，可以查看视图 `DBA_OB_ROOTSERVICE_EVENT_HISTORY`，该视图记录了所有手动执行的副本运维命令的执行结果（是否成功触发任务，而不是任务本身是否成功）。

```shell
obclient> select *  from oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY where MODULE = "admin_alter_ls_replica"\G

```

返回结果如下：

```shell
*************************** 1. row ***************************
  TIMESTAMP: 2024-02-27 10:39:59.684333
     MODULE: admin_alter_ls_replica
      EVENT: ADD_LS_REPLICA
      NAME1: ret_code
     VALUE1: 0
      NAME2: tenant_id
     VALUE2: 1002
      NAME3: ls_id
     VALUE3: 1002
      NAME4: target_replica
     VALUE4: "xxx.xxx.xxx.xxx:5078"
      NAME5: replica_type
     VALUE5: REPLICA_TYPE_FULL
      NAME6:
     VALUE6: 0
 EXTRA_INFO: data_source: 0.0.0.0:0, paxos_replica_num: 5
  RS_SVR_IP: xxx.xxx.xxx.xxx
RS_SVR_PORT: 5070

```

## 任务是否正在执行或者已经完成

### 通过容灾相关视图

查看视图 `DBA_OB_LS_REPLICA_TASKS`，该视图记录了正在执行中的容灾任务，任务执行开始会在该表中插入一列，任务结束即将任务从该表中删除。如果该视图为空，任务可能已经执行完了或者没有开始执行。 可以根据日志流 ID 和租户的 ID 和运维命令相关信息从该表中找到对应的任务。如果该表中没有对应任务，说明任务可能已经执行完成，此时可以查看 `DBA_OB_LS_REPLICA_TASK_HISTORY` 视图。

`DBA_OB_LS_REPLICA_TASK_HISTORY` 记录了容灾任务执行的历史，在任务执行完之后将会在该表中插入一列信息。如果任务也不存在于该表中，说明该任务还没有执行完（正在执行）或者没有开始执行。

```shell
obclient> select * from oceanbase.DBA_OB_LS_REPLICA_TASK_HISTORY\G

```

返回结果如下：

```shell
*************************** 1. row ***************************
                      LS_ID: 1
                  TASK_TYPE: REMOVE PAXOS REPLICA
                    TASK_ID: Y13CE64586BD4-00061253D8BCD678-0-0
                TASK_STATUS: COMPLETED
                   PRIORITY: HIGH
      TARGET_REPLICA_SVR_IP: xxx.xxx.xxx.xxx
    TARGET_REPLICA_SVR_PORT: 5072
TARGET_PAXOS_REPLICA_NUMBER: 5
        TARGET_REPLICA_TYPE: FULL
      SOURCE_REPLICA_SVR_IP: NULL
    SOURCE_REPLICA_SVR_PORT: 0
SOURCE_PAXOS_REPLICA_NUMBER: 5
        SOURCE_REPLICA_TYPE: NULL
         DATA_SOURCE_SVR_IP: NULL
       DATA_SOURCE_SVR_PORT: NULL
                  IS_MANUAL: FALSE
           TASK_EXEC_SVR_IP: xxx.xxx.xxx.xxx
         TASK_EXEC_SVR_PORT: 5070
                CREATE_TIME: 2024-02-27 10:42:05
                 START_TIME: 2024-02-27 10:42:05
                MODIFY_TIME: 2024-02-27 10:42:05
                FINISH_TIME: 2024-02-27 10:42:04
             EXECUTE_RESULT: ret:0, OB_SUCCESS; elapsed:82964;
                    COMMENT: remove permanent offline replica

```

### 通过 DBA_OB_ROOTSERVICE_EVENT_HISTORY 视图

可以通过 `DBA_OB_ROOTSERVICE_EVENT_HISTORY` 视图查看任务执行的阶段，在容灾任务下发到底层之前（同时是在持久化到视图 `DBA_OB_LS_REPLICA_TASKS` 之前），会在 `DBA_OB_ROOTSERVICE_EVENT_HISTORY` 视图中插入一列，该列的 EVENT 以 start 开头，表示任务即将开始。在任务执行完成之后，会在该视图中再插入一列，该列的EVENT列以finish开头，表示任务已经执行完成。

```shell
obclient> select * from oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY where module like "%disaster%" limit 2 \G

```

```shell
*************************** 1. row ***************************
  TIMESTAMP: 2024-02-27 10:39:59.613698
     MODULE: disaster_recovery
      EVENT: start_add_ls_replica
      NAME1: tenant_id
     VALUE1: 1002
      NAME2: ls_id
     VALUE2: 1002
      NAME3: task_id
     VALUE3: Y13CE64586BD4-00061253E51CD4B9-0-0
      NAME4: destination
     VALUE4: "xxx.xxx.xxx.xxx:5078"
      NAME5: data_source
     VALUE5: "0.0.0.0:0"
      NAME6: comment
     VALUE6: add replica by manual
 EXTRA_INFO:
  RS_SVR_IP: xxx.xxx.xxx.xxx
RS_SVR_PORT: 5070
*************************** 2. row ***************************
  TIMESTAMP: 2024-02-27 10:40:03.150092
     MODULE: disaster_recovery
      EVENT: finish_add_ls_replica
      NAME1: tenant_id
     VALUE1: 1002
      NAME2: ls_id
     VALUE2: 1002
      NAME3: task_id
     VALUE3: Y13CE64586BD4-00061253E51CD4B9-0-0
      NAME4: destination
     VALUE4: "xxx.xxx.xxx.xxx:5078"
      NAME5: data_source
     VALUE5: "0.0.0.0:0"
      NAME6: execute_result
     VALUE6: ret:0, OB_SUCCESS; elapsed:3536442;
 EXTRA_INFO: add replica by manual
  RS_SVR_IP: xxx.xxx.xxx.xxx
RS_SVR_PORT: 5070
2 rows in set (0.00 sec)

```

如果查出该任务只有 EVENT 列是 start 开头的这一行，说明任务还在执行中，或者可能任务卡住了，可以通过继续排查。如果还有 EVENT 列是 finish 开头的记录，说明任务执行完了，可以看 VALUE6 来确认执行结果，如果是错误码的话，也可以通过迁移复制的排查思路继续排查。

## 通过日志排查

### RS 日志

- 查看一个副本运维命令的语法解析是否成功。

  ```shell
  grep -rni 'resolve add replica parse tree over' observer.log*

  ```
 - 查看一个副本运维命令的请求是否成功抵达到 RS 端。

  ```shell
  grep -rni 'receive alter ls replica request' rootservice.log*

  ```
 - 查看一个副本运维命令执行结果（是否成功下发到底层）。

  ```shell
  grep -rni 'ObDRWorker do add ls replica task' rootservice.log*
  grep -rni 'ObDRWorker do remove ls replica task' rootservice.log*
  grep -rni 'ObDRWorker do migrate ls replica task' rootservice.log*
  grep -rni 'ObDRWorker do modify ls replica task' rootservice.log*
  grep -rni 'ObDRWorker do modify ls paxos_replica_num task' rootservice.log*
  grep -rni 'ObDRWorker do cancel ls replica task over' rootservice.log*

  ```

### OBSERVER 日志

通过视图 `DBA_OB_ROOTSERVICE_EVENT_HISTORY`、`DBA_OB_LS_REPLICA_TASKS` 或者 `DBA_OB_LS_REPLICA_TASK_HISTORY` 可以拿到容灾任务的 `ID：task_id`。在对应的 observer 上，使用了 task_id 作为日志的 trace_id，因此可以使用该 ID 当作 trace_id 去对应的 observer 上查询日志。

不同类型的容灾任务对应的 observer 节点不同，如下：

- add replica -> 目标 server（想要补副本的 observer）
 - remove replica -> 日志流 leader 所在 observer
 - migrate replica -> 目标 server（想要迁移到的目标observer）
 - modify replica -> 目标 server （副本所在的observer）
 - modify paxos_replica_num -> 日志流 leader 所在 observer

上一篇

[迁移复制问题排查](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001100037)

下一篇

[公有云数据库迁移 Unit 进程停滞问题分析与解决](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005485409) ![有帮助](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) 咨询热线
