OceanBase数据库oceanbase-ce的docker镜像中文说明

本文为OceanBase数据库oceanbase-ce的docker镜像的中文说明,原英文链接为:

oceanbase/oceanbase-ce - Docker Image | Docker Hub

如何使用 docker 部署 OceanBase

OceanBase 为 OceanBase 数据库提供了一个名为 oceanbase-ce 的独立测试镜像。默认情况下,该镜像部署的是MINI_MODE OceanBase 实例。

警告

  • oceanbase-ce docker 镜像仅用于研究或测试;
  • 如果您想在 k8s 中部署 oceanbase,请改用 oceanbase-operator;
  • 不应将其与重要数据一起部署,因为它不在生产环境中使用。

原因:

  1. 集群仅包含一个实例,因此没有容灾能力;
  2. 失败后恢复非常困难,因为 docker 容器无法启动,而 oceanbase 实例无法成功启动,这意味着您丢失了容器和数据;
  3. K8s 无法重启新 Pod,因为守护进程退出后容器仍然存在。

先决条件

部署 oceanbase-ce docker 前,请做好以下检查:

  • 确保您的机器有足够的资源可以执行至少 2 个物理核心和 8GB 内存。

  • 您的计算机已安装以下应用程序:

    应用 推荐版本 文档
    Docker 最近的 Docker 文档
  • 您已在计算机上启动 Docker 服务。

启动OceanBase实例

要启动OceanBase实例,请执行以下命令:

复制代码
`# deploy mini instance
docker run -p 2881:2881 --name oceanbase-ce -d oceanbase/oceanbase-ce

# deploy an instance of the slim size according to the current container
docker run -p 2881:2881 --name oceanbase-ce -e MODE=slim -e OB_MEMORY_LIMIT=5G -v {init_sql_folder_path}:/root/boot/init.d -d oceanbase/oceanbase-ce

# deploy an instance of the largest size according to the current container
docker run -p 2881:2881 --name oceanbase-ce -e MODE=normal -d oceanbase/oceanbase-ce

# deploy a quick-start instance in any mode as desired to the current container
docker run -p 2881:2881 --name oceanbase-ce -e FASTBOOT=true -d oceanbase/oceanbase-ce
`

启动过程需要两到五分钟。若要确保引导过程成功,请运行以下命令:

复制代码
`$ docker logs oceanbase-ce | tail -1
boot success!
`

启动后,有一个 oceanbase 实例。无需密码即可通过root用户连接到oceanbase。

连接OceanBase实例

oceanbase-ce 镜像包含 obclient(OceanBase 数据库客户端)和默认连接脚本。ob-mysql

复制代码
`docker exec -it oceanbase-ce ob-mysql sys # Connect to sys tenant
docker exec -it oceanbase-ce ob-mysql root # Connect to the root account of a general tenant
docker exec -it oceanbase-ce ob-mysql test # Connect to the test account of a general tenant
`

您也可以执行此命令,通过本地 obclient 或 MySQL 客户端连接 OceanBase 实例。

复制代码
`mysql -uroot -h127.1 -P2881
`

支持的环境变量

下表显示了当前 oceanbase-ce 镜像版本支持的环境变量:

变量名称 默认值 描述
MODE {mini, slim, normal} 如果是mini,则docker使用mini模式部署OceanBase数据库实例,仅用于研究/学习/评估。请勿将其用于生产或性能测试。如果是slim,那么 docker 可以在较小的实例中运行。它删除了 obagent,并可以在挂载卷 /root/boot/init.d 中自行运行自租户初始 sql。如果不挂载卷路径,则 docker 不会初始化租户 sql。
FASTBOOT false 当 FASTBOOT=true 时,容器可以在快速启动模式下运行。
EXIT_WHILE_ERROR true 是否在启动观察器失败时退出容器。如果启动观察器失败,则无法浏览日志,因为容器将退出。但是,如果设置 EXIT_WHILE_ERROR=false,则当 observer 启动失败时,容器不会退出,您可以使用 docker exec 进行调试。
OB_CLUSTER_NAME obcluster oceanbase 集群名称
OB_TENANT_NAME test oceanbase mysql 租户名称
OB_MEMORY_LIMIT 6G oceanbase 集群memory_limit配置
OB_DATAFILE_SIZE 5G oceanbase 集群datafile_size配置
OB_LOG_DISK_SIZE 5G Oceanbase 集群log_disk_size配置
OB_ROOT_PASSWORD sys租户的oceanbase root用户密码
OB_SYSTEM_MEMORY 1G Oceanbase 集群system_memory配置
OB_TENANT_MINI_CPU oceanbase 租户mini_cpu配置
OB_TENANT_MEMORY_SIZE oceanbase 租户memory_size配置
OB_TENANT_LOG_DISK_SIZE oceanbase 租户log_disk_size配置

运行 Sysbench 脚本

oceanbase-ce 镜像默认安装 Sysbench 工具。并配置了 Sysbench 工具。您可以按顺序运行这些命令,以使用默认配置运行 Sysbench 脚本。

复制代码
`docker exec -it oceanbase-ce obd test sysbench obcluster
`

挂载体积

如果要持久化容器的数据,可以使用 docker 命令中的参数 -v /your/host/path:/container/path 将数据保存在主机操作系统中。

下面是一个示例。

复制代码
`docker run -d -p 2881:2881 -v $PWD/ob:/root/ob -v $PWD/obd:/root/.obd --name oceanbase oceanbase/oceanbase-ce
`

请注意,您应该使用自己的路径。

oceanbase-ce镜像将数据保存到 /root/ob 默认目录。您应该同时绑定 /root/ob 和 /root/.obd。如果只绑定 /root/ob 目录,则无法启动新的 docker 镜像,因为 docker 镜像 oceanbase-ce 使用 obd 来管理数据库集群,并且新建的 docker 容器中没有关于数据库集群的信息。

您可以用docker -v来查看有关 docker 卷的更多信息。

为独立节点快速构建启动映像

docker_build.sh脚本在tools/docker/standalone目录中提供,通过该目录可以构建快速启动映像。在运行脚本之前,请先修改tools/docker/standalone/boot/_env环境配置脚本:

  • 可选:修改其余配置项

修改完成后,执行镜像构建脚本:

  • 使用最新的 Oceanbase 版本构建映像 ./docker_build.sh
  • 使用特定的 oceanbase 版本构建映像。例如 ./docker_build.sh 4.2.1.0-100000102023092807

等待构建完成后,您可以按照上述相同方式启动和测试实例。

故障诊断

提供了一系列诊断方法,用于诊断Docker中的错误。

支持"enable_rich_error_msg"参数

  • 最初,在 Docker 启动过程中默认启用"enable_rich_error_msg"参数。如果在启动过程中发生错误,可以使用 trace 命令获取更多错误信息。启动成功后,Docker 会将该参数设置为 false 状态。
  • 用户可以在运行阶段打开该参数,获取更多有关SQL语句的错误信息。打开它的方法是使用系统租户连接到 Docker 的 oceanbase,然后执行以下命令:
复制代码
`alter system set enable_rich_error_msg = true;`
相关推荐
乌鸦乌鸦你的小虎牙1 小时前
qt 5.12.8 配置报错(交叉编译环境)
开发语言·数据库·qt
一只大袋鼠2 小时前
Redis 安装+基于短信验证码登录功能的完整实现
java·开发语言·数据库·redis·缓存·学习笔记
Anastasiozzzz2 小时前
深入研究Redis的ZSet底层数据结构:从 Ziplist 的级联更新到 Listpack 的完美救场
数据结构·数据库·redis
菠萝蚊鸭2 小时前
x86 平台使用 buildx 基于源码构建 MySQL Wsrep 5.7.44 镜像
数据库·mysql·galera·wsrep
AlfredZhao4 小时前
用Docker安全驯服OpenClaw,并打通社交软件
docker·飞书·openclaw
沙漏无语4 小时前
(二)TIDB搭建正式集群
linux·数据库·tidb
姚不倒4 小时前
三节点 TiDB 集群部署与负载均衡搭建实战
运维·数据库·分布式·负载均衡·tidb
隔壁小邓4 小时前
批量更新方式与对比
数据库
数据知道4 小时前
MongoDB复制集架构原理:Primary、Secondary 与 Arbiter 的角色分工
数据库·mongodb·架构
人道领域4 小时前
苍穹外卖:菜品新增功能全流程解析
数据库·后端·状态模式