社区4.0版容器升级4.2.1版启动异常

【 使用环境 】生产环境
【 ocp 】
【 4.0 】
【问题描述】清晰明确描述问题


【复现路径】问题出现前后相关操作
使用的 用容器升级 OCP这种方法: https://www.oceanbase.com/docs/common-ocp-1000000000401721
使用“docker stop ocp”命令将ocp服务停了
官网下载的4.2.1的ocp(X86)安装包上传并解压到 86这台机器上
export OCP_CPU_COUNT=4
export OCP_MEMORY_GB=8
export OCP_METADB_HOST=172.xx.xx.86
export OCP_METADB_PORT=5432
export OCP_METADB_USER=root@meta_tenant#xx
export OCP_METADB_PASSWORD=Meta_Paswdxx
export OCP_METADB_DBNAME=metaxx
export OCP_MONITORDB_USER=root@monitor_tenant#xx
export OCP_MONITORDB_PASSWORD=Monitor_paswdxx
export OCP_MONITORDB_DBNAME=monitorxx
export OCP_CONFIG_PROPERTIES=cat << EOF server.port:5433 ocp.site.url:http://172.xx.xx.86:5433 obsdk.ob.connection.mode:direct EOF

start ocp container

docker run -d --name ocp-421
–network host \
–cpu-period 100000 --cpu-quota ${OCP_CPU_COUNT}00000 --memory=${OCP_MEMORY_GB}G
-e OCP_METADB_HOST="${OCP_METADB_HOST}"
-e OCP_METADB_PORT="${OCP_METADB_PORT}"
-e OCP_METADB_DBNAME="${OCP_METADB_DBNAME}"
-e OCP_METADB_USER="${OCP_METADB_USER}"
-e OCP_METADB_PASSWORD="${OCP_METADB_PASSWORD}"
-e OCP_MONITORDB_DBNAME="${OCP_MONITORDB_DBNAME}"
-e OCP_MONITORDB_USER="${OCP_MONITORDB_USER}"
-e OCP_MONITORDB_PASSWORD="${OCP_MONITORDB_PASSWORD}"
-e OCP_CONFIG_PROPERTIES="${OCP_CONFIG_PROPERTIES}"
oceanbase/ocp-ce:4.2.1

执行以上内容其中个别变量内容(xx)表示了一部分
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
将ocp服务停了好像没有日志可以看的

【SOP系列 22 】——故障诊断第一步(系统巡检和诊断信息收集)

看起来是命令有截断啊
export 部分的先执行一下
再执行一下 docker run 的部分
最后再 --cpu 前面截断了,拼成一个命令执行一下

实在不行,把命令都拼在一行,文档里用 \ 分割多行主要是为了看起来比较整齐,把 \ 和换行去掉拼成一行命令执行可以吗

docker run -d --name ocp-421 –network host –cpu-period 100000 --cpu-quota ${OCP_CPU_COUNT}00000 --memory=${OCP_MEMORY_GB}G -e OCP_METADB_HOST="${OCP_METADB_HOST}" -e OCP_METADB_PORT="${OCP_METADB_PORT}" -e OCP_METADB_DBNAME="${OCP_METADB_DBNAME}" -e OCP_METADB_USER="${OCP_METADB_USER}" -e OCP_METADB_PASSWORD="${OCP_METADB_PASSWORD}" -e OCP_MONITORDB_DBNAME="${OCP_MONITORDB_DBNAME}" -e OCP_MONITORDB_USER="${OCP_MONITORDB_USER}" -e OCP_MONITORDB_PASSWORD="${OCP_MONITORDB_PASSWORD}" -e OCP_CONFIG_PROPERTIES="${OCP_CONFIG_PROPERTIES}" oceanbase/ocp-ce:4.2.1

这种形式拼成一行吗


上面的先执行了 后面的启动异常
4.2.1解压后就不用管了吗 它能识别到新版本的内容不 总感觉文档少步骤了

文档里给的镜像就是dockerhub上的,oceanbase/ocp-ce:4.2.1
docker 用的什么版本,那些环境变量里有特殊字符吗

还有个问题是,你用的 shell 是 bash 还是其他的
我搜到了一个类似的问题
https://stackoverflow.com/questions/45682010/docker-invalid-reference-format
如果实在不行,直接在 docker run 命令里把环境变量的值都替换进去
docker run -d --name ocp-421 --network host --cpu-period 100000 --cpu-quota 400000 --memory=8G …


按照这种吗? 后面
export OCP_CONFIG_PROPERTIES=cat << EOF server.port:5433 ocp.site.url:http://172.xx.xx.86:5433 obsdk.ob.connection.mode:direct EOF
这部分代入进去
-e OCP_CONFIG_PROPERTIES=“cat << EOF
server.port:5433
ocp.site.url:http://172.20.xx.xx:5433
obsdk.ob.connection.mode:direct
EOF”
oceanbase/ocp-ce:4.2.1


版本



docker pull oceanbase/ocp-ce:4.2.1 可以吗
看报错信息是拉镜像的问题,访问不到 dockerhub
如果不行可以先在一个可以拉镜像的机器把镜像拉下来然后 docker save -o ocp-ce.tar oceanbase/ocp-ce:4.2.1 这样保存一下,传到目标机器,再执行 docker load < ocp-ce.tar 把镜像加载进去,docker images 能看到 oceanbase/ocp-ce:4.2.1 之后 再执行一下 docker run 的命令
另外,OCP_CONFIG_PROPERTIES 这个像目前这样传直接变成了这条命令的字符串,可以改成
-e OCP_CONFIG_PROPERTIES=“obsdk.ob.connection.mode:direct”, 只传这一个就行,升级场景端口和地址在数据库里都有了


这ocp镜像 不知道咋整了

这个命令能成功拉取到镜像吗
我的意思是如果这台机器拉不下来,找一台能够联网的机器,用这条命令拉下来,再 save 成 tar 包,再在这台机器 load 进去


是不是没拉到

尝试几次之后镜像下载下来了 弄不成tar包 是我下载镜像的时候文件就不完整了吗

下面是我拉取镜像(有网)的docker版本

将拉取的镜像删除重新下载试试

tar生成语句是不是有问题啊 我改一下“docker save -o ocp-ce.tar docker.io/oceanbase/ocp-ce”再试下 还是一样的错

稍等,我先本地试一下镜像,你的这个机器是 X86 的吧

我用的CentOS-7.0-1406-x86_64-DVD


我的环境是可以的

docker 环境是19.03.14
也是 x86 的镜像
是不是你联网那台机器的 docker 版本太低了, 或者真的下镜像有失败