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;`
相关推荐
斗-匕3 分钟前
MySQL 三大日志详解
数据库·mysql·oracle
代码中の快捷键9 分钟前
MySQL数据库存储引擎
数据库·mysql
只因在人海中多看了你一眼9 分钟前
数据库体系
数据库
尘浮生31 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
Code_Artist44 分钟前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
六月闻君1 小时前
MySQL 报错:1137 - Can‘t reopen table
数据库·mysql
mengao12341 小时前
centos 服务器 docker 使用代理
服务器·docker·centos
Eternal-Student1 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
SelectDB技术团队1 小时前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris
不是二师兄的八戒1 小时前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php