docke部署OceanBase社区版应该怎样挂载才能持久化

【 使用环境 】测试环境
【 使用版本 】4.2.2
【问题描述】挂载路径后无法二次启动 如果要持久化应该怎样挂载


【复现路径】二次启动无法启动

这个图贴的看起来是 systemd 服务描述文件 ,根据这个文件看,当服务启动的时候,初始化一个 OB 容器;但是服务停止的时候又把这个 OB 容器删除了。

OB docker部署可以看官方文档: OceanBase分布式数据库- 方案三:部署 OceanBase 容器环境

根据文档中步骤,将 docker 命令加上 -v 目录映射 ,就可以持久化了。

加上持久化了 二次启动报错

报错信息是什么呢? 麻烦提供下相关信息呢

持久化应该挂载那些路径呢 我已经加上持久化了 是不是有些路径没有加载上

建议你完整发一下操作步骤以及截图来说明你的问题,这样大家就不用猜了。比如说 “如何二次启动”?报什么错?


启动错误

service文件配置

restart 就是 stop 和 start。 stop的时候删除了容器,但是并没有删除外部映射的目录里的文件。当你再次 start 的时候,映射进去的目录里面都有之前的文件内容在。而 start 脚本对应的是新建 OB 容器,会初始化新的 OB 集群,此前的文件存在会导致集群初始化失败。这个就是为什么你看到【二次重启失败】。

你可以先独立将OB docker 容器创建好(带映射目录)。然后修改上面服务文件中的 ExecStart 和 ExecStop 脚本。其实必要性不大,因为 二次启动就是 docker restart obstandalone ,并不比 systemctl restart 来的慢。

没理解 能详细解释下吗

建议先参考这个 用 docker 将 OB 容器跑起来,练习 OB 容器的启停。 你需要熟悉一下 docker 命令用法。
不用去搞那个 systemctl 服务文件了。

这个命令也没有持久化挂载啊 有完整的挂载命令吗 而且service文件启动和docker启动理论上没有区别啊

这个帖子的方式是否可以呢? 如何恢复故障实例的数据库

我都重启不了 使用docker挂载路径

如果持久化了,容器应该不用删除,直接重启就可以。如果删除了,再重建容器,持久化的目录里有了以前容器的数据,容器创建当然会失败。

如果不重建容器 后续升级版本怎么办 而且我挂载了容器路径 推断重启失败应该是有其他文件发生了变化而我没有挂载 现在不知道需要挂载那些路径

OB 容器的升级不是重建容器的方式升级。
OB 容器的升级有两种方式:

  1. 到容器里按 OB 软件的升级方法做。步骤比较多。社区版用 obd 软件帮助升级,容器里的只能自己开发脚本了。
  2. 删除OB容器之前把OB里业务租户的数据用 obdumper 逻辑备份出来。然后删除容器,建新版本的OB容器,建空租户,然后将数据用 obloader 逻辑恢复进去。这个过程你也要写脚本去做。

第1个方法,企业版客户可以观察 OCP 升级 OB 任务的子任务日志。社区版可以观察OBD 升级OB 的任务日志。
第 2个方法 企业版客户可以看看 OAT 升级 OCP 元数据库容器 的子任务日志。

重建容器会重建库,这样持久化就没什么用了。