---
title: 一体机环境 meta ob 节点数据目录清理重建方案-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 一体机环境 meta ob 节点数据目录清理重建方案相关的常见问题和使用技巧，帮助您快速解决 一体机环境 meta ob 节点数据目录清理重建方案的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 一体机环境 meta ob 节点数据目录清理重建方案

更新时间：2026-05-07 08:31

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

一体机环境下，meta db 数据目录所在磁盘故障，数据目录被清理，需要换盘操作。

## 适用版本

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

## 操作方法

### 备份数据

1. 备份数据，避免误操作无法恢复（OCP、OMS、ODC 等存放在 meta db 租户的数据）。
 2. 备份 antman，重建接管时需要，避免换盘误操作，将其他盘数据清理。
 3. 备份admin目录，重建接管时需要，避免换盘误操作，将其他盘数据清理。

### 检查集群状态

1. 检查集群状态：确认集群不在合并状态，预计为空。

   ```shell
   obclient> select gmt_modified,zone,name,info from __all_zone where name='merge_status' and info !='IDLE';

   ```
 2. 检查 server 是否均在线，预期状态为 active、start_service_time 大于 last_offline_time 时间。

   ```shell
   obclient> select svr_ip,gmt_modified,zone,usec_to_time(start_service_time),usec_to_time(last_offline_time),status from __all_server

   ```
 3. 检查三节点是否缺副本，预期为空。

   ```shell
   obclient> select table_id, partition_id, count(*)c from gv$partition group by table_id, partition_id having c != 3;

   ```
 4. 检查 clog 状态，预期为空。

   ```shell
   obclient> SELECT svr_ip, svr_port, table_id, partition_idx FROM __all_virtual_clog_stat WHERE (is_in_sync = 0 AND is_offline = 0 AND replica_type != 16);

   ```
 5. 检查 primary_zone，记录结果并保存。

   ```shell
   obclient> select primary_zone,tenant_name,zone_list from __all_tenant;

   ```

### 检查切换主副本

1. 查看下线节点是不是 RS 节点。

   ```shell
   obclient> select svr_ip,zone from __all_root_table where tenant_id=1 and role=1 group by svr_ip;

   ```
 2. 若下线节点为 RS 节点，需要切换到其他节点再进行后续操作。

   ```shell
   obclient> alter tenant sys set primary_zone='META_OB_ZONE_2';

   ```
 3. 检查下线节点有没有主副本。

   ```shell
   obclient> select t.tenant_id,t.svr_ip,t.role,p.tenant_name from __all_virtual_meta_table t,__all_tenant p where t.tenant_id=p.tenant_id and t.svr_ip='100.xx.xxx.xx' group by t.svr_ip,t.tenant_id asc;

   ```
 4. 三节点预计会有 ocp_meta 和 ocp_monitor 在，有其他的也一并切了，切 ocp_monitor 和 ocp_meta 副本，到其他节点，切换完成后检查切换结果。

   ```shell
   obclient> alter tenant ocp_monitor primary_zone='META_OB_ZONE_2;META_OB_ZONE_1,META_OB_ZONE_3';
   obclient> alter tenant ocp_meta primary_zone='META_OB_ZONE_2;META_OB_ZONE_1,META_OB_ZONE_3';

   ```

### 永久下线副本

1. 通过修改下线永久下线时间，把问题机器上的副本永久下线。

   ```shell
   obclient> show parameters like 'server_permanent_offline_time';
   obclient> alter system set server_permanent_offline_time = '60s';

   ```
 2. 停止节点 OCP 相关容器，此处停掉后，另外两个节点还是可以正常访问的。

   ```
   docker stop META_OB_ZONE_1 obproxy ocp

   ```

​ 3. 使用 admin 用户挪走配置文件。

```
```
mv /home/admin/oceanbase/etc/observer.config.bin /tmp
```

```

### 执行换盘操作

1. 检查节点状态 确认非 `/data` 目录未发生变化，IP 网卡信息未发生变化。
 2. 重做 LVM，按之前分盘规划新盘的 LVM。

   注意和 `/etc/fstab` 配置的信息一致。
 3. 完成为 `/data/1`、`/data/log1` 的挂载。

   注意目录权限和属组和其他节点一致。
 4. 检查网络延迟和时钟同步，确保与其他节点偏差在 20ms 以内。

### 换盘后的恢复

1. 启动容器。

   ```
   docker start META_OB_ZONE_1 obproxy ocp

   ```
 2. 检查 server 状态。

   ```shell
   obclient> select svr_ip,gmt_modified,zone,usec_to_time(start_service_time),usec_to_time(last_offline_time),status from __all_server;

   ```

​ 如果启动的节点是 inactice 状态，则执行以下检查：

1. 检查 `/data/log1/obcluster/clog` 下，是不是只有名为 1 的 1 个 clog 文件。
 2. 检查配置文件是否存在。

   ```
   ls -l /home/admin/oceanbase/etc/observer.config.bin

   ```
 3. 查看日志，是否有 -8002 的报错。

   ```
   [2022-11-11 17:54:35.504357] WARN [SHARE.PT] get (ob_partition_location_cache.cpp:2503) [8713][2176][Y0-0000000000000000] [lt=5] [dc=0] get partition location failed(ret=-8002, partition={tid:1099511628002, partition_id:0, part_cnt:0}, expire_renew_time=0)
   [2022-11-11 17:54:35.504362] WARN [SHARE.PT] get_strong_leader (ob_partition_location_cache.cpp:2616) [8713][2176][Y0-0000000000000000] [lt=5] [dc=0] get failed(partition={tid:1099511628002, partition_id:0, part_cnt:0}, force_renew=false, expire_renew_time=0, ret=-8002)
   [2022-11-11 17:54:35.504367] WARN [STORAGE.TRANS] get_cluster_service_master_ (ob_tenant_weak_read_service.cpp:248) [8713][2176][Y0-0000000000000000] [lt=4] [dc=0] get tenant weak read cluster service partition leader from location cache fail(ret=-8002, pkey={tid:1099511628002, partition_id:0, part_cnt:0}, force_renew=false)
   [2022-11-11 17:54:35.504372] WARN [STORAGE.TRANS] post_cluster_heartbeat_rpc_ (ob_tenant_weak_read_service.cpp:622) [8713][2176][Y0-0000000000000000] [lt=4] [dc=0] get cluster service master fail(ret=-8002, tenant_id_=1, cluster_service_pkey={tid:1099511628002, partition_id:0, part_cnt:0})
   [2022-11-11 17:54:35.504377] WARN [STORAGE.TRANS] process_cluster_heartbeat_rpc_cb (ob_tenant_weak_read_service.cpp:391) [8713][2176][Y0-0000000000000000] [lt=4] [dc=0] tenant weak read service cluster heartbeat RPC fail(rcode={code:-8002, msg:"post cluster heartbeat rpc failed, tenant_id=1", warnings:[]}, tenant_id_=1, dst="100.xx.xxx.xx:2882", cluster_service_pkey={tid:1099511628002, partition_id:0, part_cnt:0})
   [2022-11-11 17:54:35.504384] WARN [STORAGE.TRANS] do_cluster_heartbeat_ (ob_tenant_weak_read_service.cpp:581) [8713][2176][Y0-0000000000000000] [lt=6] [dc=0] post cluster heartbeat rpc fail(ret=-8002, tenant_id_=1, local_server_version=1668160470987016, valid_part_count=0, total_part_count=0, generate_timestamp=1668160475504262)
   [2022-11-11 17:54:35.504389] WARN [STORAGE.TRANS] do_cluster_heartbeat_ (ob_tenant_weak_read_service.cpp:591) [8713][2176][Y0-0000000000000000] [lt=4] [dc=0] tenant weak read service do cluster heartbeat fail(ret=-8002, tenant_id_=1, last_post_cluster_heartbeat_tstamp_=1668160475454159, cluster_heartbeat_interval_=1000000, cluster_service_pkey={tid:1099511628002, partition_id:0, part_cnt:0}, cluster_service_master="0.0.0.0")

   ```

如果启动的节点是 inactice 状态，且有以上报错，则按下面的步骤进行恢复。

1. 停止停机节点 meta 容器。
 2. 删除日志文件。

   删除 `/home/admin/oceanbase/store/cluster_name/clog` 下仅有的名为 1 的文件，软连接不动。

   删除 `/home/admin/oceanbase/store/cluster_name/clog_shm`。

   删除 `/home/admin/oceanbase/store/cluster_name/ilog_shm`。
 3. 重新启动 meta 容器。

   ```
   docker start META_OB_ZONE_1

   ```
 4. 重新检查 server 状态。

   ```
 5. 检查系统中是否有副本迁移的任务执行。因为该 server 上的副本不存在且永久下线，OBServer 应该会主动进行副本迁移的任务，在 RS 事件表中应该能看到重启 meta 后的 event = tenant_balance_finished 的记录。

   ```shell
   obclient> select * from __all_rootservice_event_history where event like '%balance%'order by gmt_create desc limit 10;

   ```
 6. 等待副本迁移任务完成，并等待 clog 同步完成。通过以下语句检查 clog 同步状态。

   ```
 7. 调整永久下线时间为原来值。

   ```shell
   obclient> alter system set server_permanent_offline_time = '3600s'; --s是秒单位

   ```
 8. 调整租户的 primary zone 为原来的值。

   ```shell
   obclient> alter tenant ocp_monitor primary_zone='META_OB_ZONE_1;META_OB_ZONE_2,META_OB_ZONE_3';
   obclient> alter tenant ocp_meta primary_zone='META_OB_ZONE_1;META_OB_ZONE_2,META_OB_ZONE_3';
   obclient> alter tenant sys set primary_zone='META_OB_ZONE_1';

   ```
 9. 检查各个功能是否正常，web 页面是否正常，三个节点 OCP 各个租户是否都可以连接。

Previous

[ODP 部署失败](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000210140)

Next

[LSE 常见问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003810554) ![有帮助](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) 咨询热线
