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