Docker 安装部署 OceanBase

1.拉取镜像

bash 复制代码
docker pull oceanbase/oceanbase-ce:latest

2.启动oceanbase容器

bash 复制代码
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=0 -d quay.io/oceanbase/oceanbase-ce

3.查看oceanbase初始化的日志信息

bash 复制代码
docker logs oceanbase-ce

4.进入oceanbase容器

bash 复制代码
docker exec -it oceanbase-ce bash

5.启动oceanbase容器

bash 复制代码
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=0 -d oceanbase/oceanbase-ce

6.进入oceanbase容器

bash 复制代码
docker exec -it oceanbase-ce bash

7.查看集群详情

bash 复制代码
[root@41103400ca56 ~]# obd cluster list

8.连接oceanbase数据库

bash 复制代码
docker exec -it oceanbase-ce obclient -h127.0.0.1 -P2881 -uroot@sys -A

9.修改root密码(默认root密码为空)

bash 复制代码
obclient(root@sys)[(none)]> ALTER USER root IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.062 sec)

10.新密码连接

bash 复制代码
[root@localhost ~]# docker exec -it oceanbase-ce bash
[root@41103400ca56 ~]# obclient -uroot@sys -h127.1 -P2881 -A -p123456

正式开始

拉取arrch64镜像

bash 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_oceanbase-ce:latest

拉取x86镜像

bash 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/oceanbase-ce:latest

正式运行持久化运行命令

bash 复制代码
docker run -tid \
  --name oceanbase\
  --hostname oceanbase-node \
  --memory 16G \                        # 最小建议16G
  --cpus 8 \                            # 根据主机CPU核心调整
  --ulimit nofile=655350:655350 \       # 关键参数
  --ulimit core=unlimited \
  --cap-add SYS_RESOURCE \              # 允许调整系统资源
  --restart unless-stopped \            # 自动重启策略
  -e OB_MEMORY_LIMIT=12G \              # OceanBase内存限制
  -e OB_SYSTEM_MEMORY=3G \              # 系统保留内存
  -e OB_CLUSTER_NAME=OB_PROD_CLUSTER \
  -e OB_ROOT_PASSWORD='#Pass123!' \  	# 必须修改!
  -v /data/obdata:/root/ob/data \       # 数据持久化
  -v /data/obclog:/root/ob/clog \       # 提交日志
  -v /data/obetc:/etc/oceanbase \       # 配置文件
  -v /etc/localtime:/etc/localtime:ro \ # 时间同步
  -p 2881:2881 \                        # SQL服务端口
  -p 2882:2882 \                        # 性能监控端口
  -p 3881:3881 \                        # RPC通信端口
  registry.cn-hangzhou.aliyuncs.com/oceanbase-ce:latest  # 指定版本

启动集群

bash 复制代码
# 进入容器
docker exec -it oceanbase-prod bash
# 查看已有集群(确认集群名是否为 obdemo)
obd cluster list
# 重启集群(以 obdemo 为例)
obd cluster restart obdemo
# 检查状态
obd cluster display obdemo

系统租户登录

bash 复制代码
obclient -h127.1 -uroot@sys#obce-single -P2883 -prootPWD123 -c -A oceanbase

参数说明:

-h127.1:连接本地 OceanBase 实例(若跨容器需用宿主机IP或容器IP)

-uroot@sys#obce-single:以 root 用户登录系统租户(sys),集群名为 obce-single

-P2883:SQL 端口(确保与 docker run 的 -p 2883:2881 映射一致)

-prootPWD123:密码(生产环境建议使用更复杂的密码)

-c -A:启用自动补全和非交互模式
创建资源单元

bash 复制代码
CREATE RESOURCE UNIT S1C1G 
MAX_CPU=1, 
MAX_MEMORY='1G', 
MIN_MEMORY='1G', 
MAX_IOPS=10000, 
MIN_IOPS=1000, 
MAX_SESSION_NUM=10000, 
MAX_DISK_SIZE='1024G';

关键参数:

MAX_MEMORY 和 MIN_MEMORY 必须相同(OceanBase 要求)

MAX_IOPS:根据磁盘性能调整(SSD建议 5000-20000)

MAX_DISK_SIZE:仅逻辑限制,不实际占用空间

生产建议:

根据实际负载调整 CPU 和内存(例如 MAX_CPU=4, MAX_MEMORY='16G')
创建资源池

CREATE RESOURCE POOL my_pool

UNIT='S1C1G',

UNIT_NUM=1;
参数说明:

UNIT_NUM=1:单副本部署(生产环境建议 ≥3)

多节点集群需指定 ZONE_LIST(如 ZONE_LIST=('zone1','zone2'))

扩展性:

后期可通过 ALTER RESOURCE POOL 动态调整单元数量
创建 MySQL 兼容租户

CREATE TENANT obmysql3

RESOURCE_POOL_LIST=('my_pool3'),

PRIMARY_ZONE='RANDOM',

COMMENT 'mysql tenant/instance',

CHARSET='utf8',

OB_TCP_INVITED_NODES='%',

OB_COMPATIBILITY_MODE='mysql',

LOWER_CASE_TABLE_NAMES=2;

关键配置:

LOWER_CASE_TABLE_NAMES=2:存储区分大小写但比较时不区分(兼容 MySQL 行为)

0:大小写敏感(如 Table 和 table 是两个对象)

1:完全不区分大小写(存储转为小写)

OB_TCP_INVITED_NODES='%':允许所有IP连接(生产环境应限制为应用服务器IP)

PRIMARY_ZONE='RANDOM':自动分配主Zone(多副本时可指定优先级,如 zone1,zone2)

租户管理:

查看租户:SELECT * FROM oceanbase.__all_tenant;

登录租户:obclient -h127.1 -uroot@obmysql3 -P2883 -p密码

完整流程示例

1. 登录系统租户

obclient -h127.1 -uroot@sys#obce-single -P2883 -prootPWD123 -c -A oceanbase

2. 创建资源单元(调整参数后执行)

CREATE RESOURCE UNIT S2C4G

MAX_CPU=2,

MAX_MEMORY='4G',

MIN_MEMORY='4G',

MAX_IOPS=20000;

3. 创建资源池

CREATE RESOURCE POOL my_pool3

UNIT='S2C4G',

UNIT_NUM=1;

4. 创建租户(重要:先确认资源池名称匹配)

CREATE TENANT obmysql3

RESOURCE_POOL_LIST=('my_pool3'),

PRIMARY_ZONE='RANDOM',

CHARSET='utf8mb4',

OB_TCP_INVITED_NODES='192.168.1.%',

OB_COMPATIBILITY_MODE='mysql',

LOWER_CASE_TABLE_NAMES=1;
生产环境注意事项

资源规划:

确保剩余资源足够(通过 SELECT * FROM oceanbase.__all_virtual_server_stat; 查看)

系统租户至少保留 30% 的 CPU 和内存

网络安全:

限制 OB_TCP_INVITED_NODES(如 '192.168.1.100,192.168.1.101')

相关推荐
gs8014044 分钟前
GitLab Docker Compose 迁移后 Redis 权限问题排查与解决
redis·docker·gitlab
隔壁老登2 小时前
解决dbeaver连接不上oceanbase数据库的问题
数据库·oceanbase
ifanatic2 小时前
[每周一更]-(第154期):Docker 底层深度剖析:掌控 CPU 与内存资源的艺术
docker
David爱编程5 小时前
Cilium 与 Calico 网络安全能力横向评测
云原生·容器·kubernetes
David爱编程6 小时前
Kubernetes中使用Calico实现零信任网络访问控制
云原生·容器·kubernetes
草堂春睡足6 小时前
【数据迁移】Windows11 下将 Ubuntu 从 C 盘迁移到 D 盘
linux·windows·ubuntu·docker
程序猿小郑6 小时前
Docker环境离线安装指南
docker
热心市民梁先生8 小时前
oect刷入arm系统安装docker
运维·docker·容器
睡觉z8 小时前
k8s日志收集
容器·kubernetes·jenkins