1.拉取镜像
docker pull oceanbase/oceanbase-ce:latest
2.启动oceanbase容器
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=0 -d quay.io/oceanbase/oceanbase-ce
3.查看oceanbase初始化的日志信息
docker logs oceanbase-ce
4.进入oceanbase容器
docker exec -it oceanbase-ce bash
5.启动oceanbase容器
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=0 -d oceanbase/oceanbase-ce
6.进入oceanbase容器
docker exec -it oceanbase-ce bash
7.查看集群详情
[root@41103400ca56 ~]# obd cluster list
8.连接oceanbase数据库
docker exec -it oceanbase-ce obclient -h127.0.0.1 -P2881 -uroot@sys -A
9.修改root密码(默认root密码为空)
obclient(root@sys)[(none)]> ALTER USER root IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.062 sec)
10.新密码连接
[root@localhost ~]# docker exec -it oceanbase-ce bash
[root@41103400ca56 ~]# obclient -uroot@sys -h127.1 -P2881 -A -p123456
正式开始
拉取arrch64镜像
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_oceanbase-ce:latest
拉取x86镜像
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/oceanbase-ce:latest
正式运行持久化运行命令
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 # 指定版本
启动集群
# 进入容器
docker exec -it oceanbase-prod bash
# 查看已有集群(确认集群名是否为 obdemo)
obd cluster list
# 重启集群(以 obdemo 为例)
obd cluster restart obdemo
# 检查状态
obd cluster display obdemo
系统租户登录
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:启用自动补全和非交互模式
创建资源单元
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’)