本文为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;
- 不应将其与重要数据一起部署,因为它不在生产环境中使用。
原因:
- 集群仅包含一个实例,因此没有容灾能力;
- 失败后恢复非常困难,因为 docker 容器无法启动,而 oceanbase 实例无法成功启动,这意味着您丢失了容器和数据;
- 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;`