本文通过示例说明删除 OceanBase 数据库的数据目录和日志目录,再次启动 OBServer 会不会重新拉副本。
适用版本
OceanBase 数据库 V3.x 版本。
实验 1:只删除数据和日志文件,不删除目录
- OceanBase 架构:1-1-1。
- 实验:删除
/data/1/ob_test/sstable下的数据文件和/data/log1/ob_test/clog、slog下的文件。 - 结论:OBServer 重启后会自动重建副本。
实验过程如下:
集群信息确认,每台 OBServer 有 1441 个副本。

然后设置永久下线时间为 20 秒。

停掉 25 节点的 observer 进程,然后删除
/data/1/ob_test/sstable下的数据文件和/data/log1/ob_test/clog、slog下的文件。

等到过了永久下线时间,查询 25 节点已经 inactive 了,并且 25 节点已经没有副本了。

然后启动 25 节点的 observer,发现 25 节点重拉了 sstable 和 clog 以及slog。

25 节点也在补副本。

实验 2:删除数据和日志目录
- 实验:删除
/data/1/ob_test/和/data/log1/ob_test/下的所有目录和文件。 - 结论:OBServer 重启后不会自动重建副本。
实验过程如下:
停掉 OBServer,删除 ob_test 的 data 和 log1 目录。

25 上已经没有副本且状态为 inactive。

然后再重启 25。

这时 observer 进程虽然起来,但是异常,副本也不会同步。

查看日志发现下面异常。

然后把
/data/1和/data/log1下的相关目录创建起来,再次启动 OBServer 正常。