news 2026/6/3 23:38:44

OceanBase社区版玩转多租户:手把手教你用Docker快速搭建测试环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OceanBase社区版玩转多租户:手把手教你用Docker快速搭建测试环境

OceanBase社区版多租户实战:Docker环境快速搭建与租户管理指南

引言

对于想要探索分布式数据库技术的开发者来说,OceanBase社区版无疑是一个值得尝试的选择。作为一款原生支持多租户架构的分布式数据库,OceanBase在资源隔离和弹性扩展方面表现出色。本文将带你从零开始,使用Docker快速搭建OceanBase社区版测试环境,并深入实践多租户的核心功能。

与传统的理论讲解不同,我们完全聚焦于实战操作。你只需要一台配置尚可的笔记本电脑(建议至少8GB内存),就能在半小时内完成环境搭建、集群初始化、租户创建和基础测试的全流程。我们会特别关注那些官方文档中没有明确说明的"坑点",比如资源配额设置技巧、性能调优参数等实用细节。

1. 环境准备与Docker部署

1.1 系统需求检查

在开始之前,请确保你的开发环境满足以下基本要求:

  • 操作系统:Linux/macOS/Windows(WSL2)
  • Docker版本:20.10.0或更高
  • 可用内存:至少4GB(8GB以上更佳)
  • 磁盘空间:建议预留20GB可用空间

运行以下命令检查Docker环境:

docker --version docker-compose --version

1.2 获取OceanBase社区版镜像

OceanBase官方提供了社区版的Docker镜像,我们可以直接拉取最新版本:

docker pull oceanbase/oceanbase-ce:latest

注意:社区版(CE)与企业版(EE)功能有所差异,本文所有操作基于社区版4.0.0

1.3 单机集群快速部署

对于测试环境,我们可以使用以下命令快速启动一个单节点的OceanBase集群:

docker run -itd -p 2881:2881 -p 2883:2883 --name ob-standalone \ -e MINI_MODE=1 \ -e OB_DATAFILE_SIZE=5G \ -e OB_LOG_DISK_SIZE=10G \ oceanbase/oceanbase-ce

参数说明:

参数说明推荐值
MINI_MODE迷你模式,适合开发测试1
OB_DATAFILE_SIZE数据文件初始大小5-10G
OB_LOG_DISK_SIZE日志磁盘大小2倍数据文件大小

等待约2-3分钟后,可以通过以下命令检查集群状态:

docker exec -it ob-standalone bash -c "obclient -h127.1 -uroot -P2881 -p -e 'show parameters like \"enable_syslog_recycle\"'"

2. 多租户基础操作

2.1 连接系统租户

系统租户(tenant=sys)是OceanBase集群的超级管理员,我们需要先连接到系统租户:

docker exec -it ob-standalone obclient -h127.1 -uroot@sys -P2881 -p

成功连接后,你应该能看到类似如下的提示符:

MySQL [oceanbase]>

2.2 创建资源单元(Resource Unit)

在OceanBase中,资源分配分为三个层次:资源单元(Unit)→资源池(Pool)→租户(Tenant)。首先创建资源单元:

CREATE RESOURCE UNIT test_unit MAX_CPU 2, MIN_CPU 1, MEMORY_SIZE '2G', MAX_IOPS 1000, MIN_IOPS 500, LOG_DISK_SIZE '4G';

关键参数说明:

  • MAX_CPU/MIN_CPU:CPU资源的上下限
  • MEMORY_SIZE:内存分配大小
  • LOG_DISK_SIZE:日志磁盘空间

2.3 创建资源池并绑定租户

接下来创建资源池并绑定到新租户:

CREATE RESOURCE POOL test_pool UNIT = 'test_unit', UNIT_NUM = 1, ZONE_LIST = ('zone1'); CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4', REPLICA_NUM=1, ZONE_LIST=('zone1'), PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('test_pool') SET ob_compatibility_mode='mysql';

创建成功后,可以通过以下命令查看租户状态:

SELECT * FROM oceanbase.__all_tenant;

3. 租户管理与资源配置

3.1 连接用户租户

使用以下命令连接到新创建的用户租户:

docker exec -it ob-standalone obclient -h127.1 -uroot@test_tenant -P2881 -p

3.2 租户资源监控

在系统租户下,可以监控各租户的资源使用情况:

-- 查看租户资源使用概况 SELECT t.tenant_id, t.tenant_name, u.unit_id, u.max_cpu, u.max_memory/1024/1024/1024 as max_mem_gb, u.max_iops FROM oceanbase.__all_tenant t JOIN oceanbase.__all_unit u ON t.tenant_id = u.tenant_id;

3.3 动态调整资源配额

OceanBase支持在线调整租户资源配额,无需重启服务:

-- 调整资源单元配置 ALTER RESOURCE UNIT test_unit MAX_CPU 4, MEMORY_SIZE '4G'; -- 刷新资源池配置 ALTER RESOURCE POOL test_pool UNIT='test_unit';

注意:资源调增可以立即生效,但调减需要等待当前资源使用量低于新设置的最小值

4. 多租户实践:MySQL模式下的数据库操作

4.1 基础数据库操作

在用户租户下,操作方式与MySQL几乎完全一致:

-- 创建数据库 CREATE DATABASE test_db; -- 创建用户并授权 CREATE USER 'test_user' IDENTIFIED BY 'Test@123'; GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'; -- 创建表 USE test_db; CREATE TABLE user_info ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) PARTITION BY HASH(id) PARTITIONS 4;

4.2 多租户隔离验证

我们可以通过以下实验验证资源隔离效果:

  1. 在test_tenant租户下运行压力测试:
-- 在test_tenant租户下执行 SELECT BENCHMARK(10000000, ENCODE('hello', 'world'));
  1. 同时在另一个会话中连接到sys租户,观察资源使用情况:
-- 在sys租户下执行 SELECT * FROM oceanbase.GV$OB_UNITS;

4.3 性能优化建议

针对测试环境的性能调优参数:

-- 调整租户级参数 ALTER SYSTEM SET _ob_enable_prepared_statement = true TENANT = 'test_tenant'; ALTER SYSTEM SET parallel_servers_target = 16 TENANT = 'test_tenant'; -- 调整会话级参数 SET GLOBAL ob_query_timeout = 10000000; SET GLOBAL ob_trx_timeout = 10000000;

5. 常见问题排查

5.1 资源不足错误处理

当遇到"OB-4031: No memory or reach tenant memory limit"错误时,可以:

  1. 检查当前内存使用:
SELECT * FROM oceanbase.GV$OB_MEMORY;
  1. 临时解决方案:
ALTER SYSTEM SET _ob_enable_tenant_memory_limit = false TENANT = 'test_tenant';

5.2 连接数限制调整

默认情况下,租户的连接数限制较低,可以通过以下命令调整:

ALTER TENANT test_tenant SET VARIABLES max_connections = 1000;

5.3 日志磁盘空间监控

定期检查日志磁盘使用情况:

SELECT tenant_id, svr_ip, svr_port, total_size/1024/1024/1024 as total_gb, free_size/1024/1024/1024 as free_gb FROM oceanbase.GV$OB_LOG_DISK_STAT;

6. 环境清理与重置

测试完成后,可以通过以下步骤清理环境:

# 停止并删除容器 docker stop ob-standalone docker rm ob-standalone # 删除数据卷(如果需要完全清理) docker volume prune

如果需要保留数据供下次使用,可以提交容器为镜像:

docker commit ob-standalone my-ob-image
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 23:38:37

Cocos学习笔记:骨骼动画时序、坐标转换与输入处理

一、骨骼动画的基准方向校准骨骼动画中的旋转角度并非总是以世界坐标的上方向为零度。实际开发中,需要先将目标骨骼的 rotation 手动设为 0,观察其在世界空间中的真实指向。很多情况下,美术在制作动画时会让骨骼有一个默认的偏移角度&#xf…

作者头像 李华
网站建设 2026/6/3 23:38:15

CKA认证考前必看:避开PSI考试平台的5个坑,我凌晨考试的经验

CKA认证实战避坑指南:PSI考试平台深度解析与凌晨作战手册凌晨三点的显示器蓝光映在脸上,我盯着PSI Secure Browser的安装进度条,心跳比平时快了30%。这不是电影场景,而是我的CKA认证考试现场。作为过来人,我深知每个细…

作者头像 李华
网站建设 2026/6/3 23:35:11

ACTS:代理链式思考 Steering 用于高效且可控的 LLM 推理

ACTS:代理链式思考 Steering 用于高效且可控的 LLM 推理 来源: arXiv:2606.03965 链接: https://arxiv.org/abs/2606.03965 优化日期: 2026-06-01 领域: 大模型推理(LLM Reasoning)、链式思考&a…

作者头像 李华
网站建设 2026/6/3 23:30:09

从模块化节点到企业级AI工作流:ComfyUI插件架构深度解析

从模块化节点到企业级AI工作流:ComfyUI插件架构深度解析 【免费下载链接】ComfyUI The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI 关键词&…

作者头像 李华
网站建设 2026/6/3 23:29:20

AMD Ryzen终极掌控指南:免费开源工具解锁处理器隐藏性能

AMD Ryzen终极掌控指南:免费开源工具解锁处理器隐藏性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…

作者头像 李华