【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.2
【问题描述】docker部署如何将数据存储在容器外
【复现路径】五
【附件及日志】nitializes observer work home x\n",“stream”:“stdout”,“time”:“2024-03-15T02:50:27.030029298Z”}
{“log”:"[ERROR] OBD-1002: Fail to init 127.0.0.1 home path: /root/ob is not empty.\n",“stream”:“stdout”,“time”:“2024-03-15T02:50:27.030062622Z”}:
你这个是什么命令呢?启动还是安装
之前容器是删除?而不是停止对吗?
docker部署的ob嘛? 我看使用环境是生产环境呢。。
只要了解一下 OB的相关目录及其作用,部署时数据和日志使用独立的目录 /data/1
和 /data/log1
,然后用 docker 映射技术就可以将宿主机的盘的目录映射进容器这个目录上。跟OB启动有关的还有参数文件 etc
目录。也要映射。
不过,如果想换一个OB容器就把之前的 OB 节点拉起来还要数据一样这个是做不到的。有多个原因:
- OB 升级不只是软件替换,可能还涉及到内部数据更新。
- OB 如果换了 IP 是拉不起来的。替换 OB IP 必须采取先加新IP节点后删除老IP节点。
OB 本身就有虚拟化能力,不需要利用 docker 容器去做这种。如果一定要这么用,那就要按照 OB 扩容和缩容的方法来替换 OB 容器节点。
OB 4.2 默认还对租户开启 cgroup 资源隔离功能。放到容器里这个功能可能也发挥不了作用。
好像可以挂载吧,容器里和外面挂载
没有删就是docker stop 后,在docker start 就启动不了,用得命令是这个 docker run -p 2881:2881 --name obstandalone -v $HOME/docker_volume/oceanbase:/root/ob -e MINI_MODE=0 -d oceanbase/oceanbase-ce
我是用的这个启动的容器,在虚拟机中启动的,docker run -p 2881:2881 --name obstandalone -v $HOME/docker_volume/oceanbase:/root/ob -e MINI_MODE=0 -d oceanbase/oceanbase-ce
虚拟机关掉后在用docker start 启动 就启动不起来了
就是挂在外面,然后重启就启动不了
这么做的意义何在?
不然数据丢失啊,容器重启数据就没了