docker 部署oceanbase卡在Initialize oceanbase-ce如何解决

【 使用环境 】测试环境
【 OB or 其他组件 】docker image oceanbase-ce:4.2.1
【 使用版本 】4.2.1
【问题描述】使用命令:docker run --name obstandalone -p 2881:2881 -itd oceanbase-ce:4.2.1启动oceanbase后一直卡在Initialize oceanbase-ce,设置了内存也不行
【复现路径】无
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

docker run --name obstandalone -p 2881:2881 -m 10g -e MINI_MODE=1 -e OB_MEMORY_LIMIT=6G -itd oceanbase-ce:4.2.1
5f50e35740ec78053bb50680a0935b3f3c48ffaace8cc162498dcc02a3ad83f2

F:\迅雷下载>docker logs -f 5f5
/////////////////////// STEP 1: Config Generation ///////////////////////
oceanbase-ce docker in mini mode
/////////////////////// phase end: 0.015 s ///////////////////////
/////////////////////// STEP 2: Ob-deploy mirror clone ///////////////////////
name: jq
version: 1.6
release:15.an8
arch: x86_64
md5: 89ff72f125e93deaff15103214135697dc152bec
size: 450301
add /root/pkg/jq-1.6-15.an8.x86_64.rpm to local mirror
name: ob-configserver
version: 1.0.0
release:2.el7
arch: x86_64
md5: feca6b9c76e26ac49464f34bfa0780b5a8d3f4a0
size: 24259515
add /root/pkg/ob-configserver-1.0.0-2.el7.x86_64.rpm to local mirror
name: obagent
version: 4.2.2
release:100000042024011120.el7
arch: x86_64
md5: 19739a07a12eab736aff86ecf357b1ae660b554e
size: 72919140
add /root/pkg/obagent-4.2.2-100000042024011120.el7.x86_64.rpm to local mirror
name: oceanbase-ce
version: 4.2.1.7
release:107000162024060611.el7
arch: x86_64
md5: f69097e5f6056a0f6949867a799eea3724a905aa
size: 452109379
add /root/pkg/oceanbase-ce-4.2.1.7-107000162024060611.el7.x86_64.rpm to local mirror
name: oceanbase-ce-libs
version: 4.2.1.7
release:107000162024060611.el7
arch: x86_64
md5: a172d6c44ded2b9999fd09ca67cd6b60b68b1abe
size: 468528
add /root/pkg/oceanbase-ce-libs-4.2.1.7-107000162024060611.el7.x86_64.rpm to local mirror
name: oniguruma
version: 6.8.2
release:3.0.1.an8
arch: x86_64
md5: 777ef3bb1a900f4019b44be1f588f6f8d28f4add
size: 553335
add /root/pkg/oniguruma-6.8.2-3.0.1.an8.x86_64.rpm to local mirror
Trace ID: b252d0d8-4c68-11f0-82da-e6c50c28bfbb
If you want to view detailed obd logs, please run: obd display-trace b252d0d8-4c68-11f0-82da-e6c50c28bfbb
±---------------------------------------------------------------------------------------------------------+
| local Package List |
±------------------±--------±-----------------------±-------±-----------------------------------------+
| name | version | release | arch | md5 |
±------------------±--------±-----------------------±-------±-----------------------------------------+
| jq | 1.6 | 15.an8 | x86_64 | 89ff72f125e93deaff15103214135697dc152bec |
| ob-configserver | 1.0.0 | 2.el7 | x86_64 | feca6b9c76e26ac49464f34bfa0780b5a8d3f4a0 |
| obagent | 4.2.2 | 100000042024011120.el7 | x86_64 | 19739a07a12eab736aff86ecf357b1ae660b554e |
| oceanbase-ce | 4.2.1.7 | 107000162024060611.el7 | x86_64 | f69097e5f6056a0f6949867a799eea3724a905aa |
| oceanbase-ce-libs | 4.2.1.7 | 107000162024060611.el7 | x86_64 | a172d6c44ded2b9999fd09ca67cd6b60b68b1abe |
| oniguruma | 6.8.2 | 3.0.1.an8 | x86_64 | 777ef3bb1a900f4019b44be1f588f6f8d28f4add |
±------------------±--------±-----------------------±-------±-----------------------------------------+
Trace ID: b299eaf4-4c68-11f0-80f7-e6c50c28bfbb
If you want to view detailed obd logs, please run: obd display-trace b299eaf4-4c68-11f0-80f7-e6c50c28bfbb
/////////////////////// phase end: 0.926 s ///////////////////////
/////////////////////// STEP 3: Ob-deploy deploy ///////////////////////
Local deploy is empty
Trace ID: b2d70146-4c68-11f0-9b67-e6c50c28bfbb
If you want to view detailed obd logs, please run: obd display-trace b2d70146-4c68-11f0-9b67-e6c50c28bfbb
/////////////////////// STEP 4: Ob-deploy autodeploy ///////////////////////
Dev Mode: ON
Trace ID: b314597e-4c68-11f0-a291-e6c50c28bfbb
If you want to view detailed obd logs, please run: obd display-trace b314597e-4c68-11f0-a291-e6c50c28bfbb
Package oceanbase-ce-4.2.1.7-107000162024060611.el7 is available.
Package obagent-4.2.2-100000042024011120.el7 is available.
install oceanbase-ce-4.2.1.7 for local ok
install obagent-4.2.2 for local ok
Cluster param config check ok
Open ssh connection ok
Generate obagent configuration ok
Generate observer configuration ok
±-------------------------------------------------------------------------------------------+
| Packages |
±-------------±--------±-----------------------±-----------------------------------------+
| Repository | Version | Release | Md5 |
±-------------±--------±-----------------------±-----------------------------------------+
| oceanbase-ce | 4.2.1.7 | 107000162024060611.el7 | f69097e5f6056a0f6949867a799eea3724a905aa |
| obagent | 4.2.2 | 100000042024011120.el7 | 19739a07a12eab736aff86ecf357b1ae660b554e |
±-------------±--------±-----------------------±-----------------------------------------+
Repository integrity check ok
Load param plugin ok
Open ssh connection ok
Parameter check ok
Cluster status check ok
Initializes observer work home ok
Initializes obagent work home ok
Remote oceanbase-ce-4.2.1.7-107000162024060611.el7-f69097e5f6056a0f6949867a799eea3724a905aa repository install ok
Remote oceanbase-ce-4.2.1.7-107000162024060611.el7-f69097e5f6056a0f6949867a799eea3724a905aa repository lib check !!
Remote obagent-4.2.2-100000042024011120.el7-19739a07a12eab736aff86ecf357b1ae660b554e repository install ok
Remote obagent-4.2.2-100000042024011120.el7-19739a07a12eab736aff86ecf357b1ae660b554e repository lib check ok
Try to get lib-repository
Package oceanbase-ce-libs-4.2.1.7-107000162024060611.el7 is available.
install oceanbase-ce-libs-4.2.1.7 for local ok
Remote oceanbase-ce-libs-4.2.1.7-107000162024060611.el7-a172d6c44ded2b9999fd09ca67cd6b60b68b1abe repository install ok
Remote oceanbase-ce-4.2.1.7-107000162024060611.el7-f69097e5f6056a0f6949867a799eea3724a905aa repository lib check ok
obcluster deployed
Get local repositories ok
Search plugins ok
Load cluster param plugin ok
Open ssh connection ok
Check before start observer ok
[WARN] OBD-1011: (127.0.0.1) The recommended value of fs.aio-max-nr is 1048576 (Current value: 65536)
[WARN] OBD-1007: (127.0.0.1) The recommended number of core file size is unlimited (Current value: 0)
[WARN] OBD-1007: (127.0.0.1) The recommended number of stack size is unlimited (Current value: 8192)
[WARN] OBD-1017: (127.0.0.1) The value of the “vm.max_map_count” must be within [327600, 1310720] (Current value: 262144, Recommended value: 655360)
[WARN] OBD-1017: (127.0.0.1) The value of the “vm.overcommit_memory” must be 0 (Current value: 1, Recommended value: 0)
[WARN] OBD-1012: (127.0.0.1) clog and data use the same disk (/)

Check before start obagent ok
Start observer ok
observer program health check ok
Connect to observer 127.0.0.1:2881 ok
Initialize oceanbase-ce

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

根据您提供的日志信息,OceanBase 社区版在 Docker 容器中启动时卡在了 Initialize oceanbase-ce 这一步。以下是可能的原因及解决方法:

1. 资源限制问题

  • 您已经设置了内存限制为 -m 10gOB_MEMORY_LIMIT=6G,但仍然可能存在资源不足的问题。
  • OceanBase 需要足够的内存和 CPU 资源才能正常初始化。建议检查以下几点:
    • 确保 Docker 容器的内存分配足够(至少 8GB 推荐)。
    • 确保主机有足够的可用内存和 CPU 核心数。

解决方法:

docker run --name obstandalone -p 2881:2881 -m 12g -e MINI_MODE=1 -e OB_MEMORY_LIMIT=8G -itd oceanbase/oceanbase-ce:4.2.1

2. 系统参数配置问题

日志中显示了一些警告信息,例如:

  • fs.aio-max-nr 的推荐值为 1048576,当前值为 65536
  • vm.max_map_count 的推荐范围为 [327600, 1310720],当前值为 262144
  • vm.overcommit_memory 的推荐值为 0,当前值为 1

这些参数可能会影响 OceanBase 的初始化过程。

解决方法:

在主机上执行以下命令以调整系统参数:

# 修改 fs.aio-max-nr
echo 1048576 > /proc/sys/fs/aio-max-nr

# 修改 vm.max_map_count
sysctl -w vm.max_map_count=655360

# 修改 vm.overcommit_memory
sysctl -w vm.overcommit_memory=0

如果需要永久生效,可以将这些参数添加到 /etc/sysctl.conf 文件中:

fs.aio-max-nr = 1048576
vm.max_map_count = 655360
vm.overcommit_memory = 0

然后运行以下命令使配置生效:

sysctl -p

3. 磁盘路径冲突

日志中提到:

[WARN] OBD-1012: (127.0.0.1) clog and data use the same disk (/)

这表示控制日志(clog)和数据文件存储在同一磁盘上,可能会导致性能问题或初始化失败。

解决方法:

可以通过挂载不同的磁盘路径来分离数据和日志存储。例如:

docker run --name obstandalone -p 2881:2881 -v /data/ob_data:/data -v /data/ob_clog:/clog -m 12g -e MINI_MODE=1 -e OB_MEMORY_LIMIT=8G -itd oceanbase/oceanbase-ce:4.2.1

4. Docker 版本兼容性

确保您的 Docker 版本与 OceanBase 社区版兼容。较低版本的 Docker 可能会导致容器启动异常。

解决方法:

检查 Docker 版本:

docker --version

建议使用 Docker 20.10 或更高版本。

5. 日志进一步排查

如果以上方法仍无法解决问题,可以查看更详细的日志以定位具体原因。进入容器后,检查 Observer 的日志文件:

docker exec -it obstandalone bash
cd /home/admin/oceanbase/log/
tail -f observer.log

总结

根据文档库中的信息,您可以尝试以下步骤解决启动卡住的问题:

  1. 增加 Docker 容器的内存和 CPU 分配。
  2. 调整系统参数以满足 OceanBase 的要求。
  3. 分离数据和日志存储路径。
  4. 确保 Docker 版本兼容。
  5. 查看详细日志以进一步排查问题。

如果问题仍未解决,请联系 OceanBase 的技术支持团队以获取更多帮助。

具体信息可参考以下文档:

  1. 快速体验 OceanBase 数据库
  2. 部署个人实验环境
  3. Go-SQL-Driver/MySQL 连接 OceanBase 数据库示例程序
  4. 系统包概述
  5. SYS 租户/RS 服务问题
  6. OceanBase Sysbench 高性能部署和问题分析
  7. 4000 ~ 4499
  8. ob_error
1 个赞

学习总结经验 :+1: :+1: :+1:

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013494
可以参考一下这篇文档,我看启动命令里的一些环境变量设置的可能有一些差异。

如果没有特殊版本需求的话,建议使用新的版本