Docker 安装部署 OceanBase

发布于:2025-08-02 ⋅ 阅读:(19) ⋅ 点赞:(0)

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’)