Docker oceanbase-ce:latest 容器容器异常

docker-compose.yml

version: “3.7”
services:
oceanbase:
image: quay.io/oceanbase/oceanbase-ce
hostname: oceanbase
volumes:
- /home/data/oceanbase-data/obdata:/root/ob
- /etc/localtime:/etc/localtime
command:
- “–ob_query_timeout=36000000000”
- “–ob_sys_password=ygxj@123456”
- “–ob_tenant_password=ygxj@123456”
- “–ob_tenant_name=ygxj”
environment:
# 部署 mini 的独立实例
- MINI_MODE=1
- TZ=Asia/Shanghai
- OB_QUERY_TIMEOUT=36000000000
- OB_ROOT_PASSWORD=ygxj@123456
- OB_SYS_PASSWORD=ygxj@123456
- OB_TENANT_PASSWORD=ygxj@123456
- OB_TENANT_NAME=ygxj
ports:
- “2881:2881”
networks:
- cloud

第一安装成功
check tenant connectable,
tenant is connectable,
set tenant password,
boot success!

然后重启容器,异常
[ERROR] OBD-1002: path: /root/ob is not empty.

1 个赞

“重启容器”指的是docker restart吗?还是其他的指令?

看上去是没有挂载.obd目录导致看,参考下 https://github.com/oceanbase/oceanbase/blob/v4.2.1_CE/tools/docker/standalone/README-CN.md#mount-volumn

只挂载 /root/ob 是不够的,需要再挂载 /root/.obd目录。

如果你的OB可以重新部署,我建议你先清理下/home/data/oceanbase-data/obdata目录(rm -fr /home/data/oceanbase-data/obdata),然后补上/root/.obd,重新部署下。

如果你的OB已经导入了数据,不想重新部署。那么你需要准备两个新的目录。此时你会有三个目录:

  • 老容器的数据目录/root/ob 对应的目录 A
  • 新的数据目录/root/ob 对应的目录 B
  • 新的OBD目录/root/.obd 对应目录 C

然后按照以下操作:

  1. 停止老容器
  2. 使用相同的配置,挂载B和C目录启动一个新的容器X
  3. 启动完成后停止新启动的容器X
  4. 使用相同的配置,挂载A和C目录启动一个新的容器Y
  5. 确认Y的数据是否完成
  6. 删除老容器、新容器X、新数据目录B
1 个赞

docker compose的配置可以参考 https://github.com/1Panel-dev/appstore/blob/dev/apps/oceanbase/4.2.1/docker-compose.yml
这个是由OB社区贡献给1Panel的

1 个赞