OceanBase 最小资源安装指南
本文介绍如何在资源受限的环境中部署 OceanBase 单机版,适合开发测试环境或轻量级生产场景。
环境要求
| 资源 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 4 核 | 8 核 |
| 内存 | 4GB | 8GB |
| 磁盘 | 100GB SSD | 200GB SSD |
| 系统 | CentOS 7 / Ubuntu 20.04 | CentOS 7.9 |
前置准备
安装客户端
# 下载 obclient
wget https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/\
download-center/opensource/obclient/v2.2.3/\
obclient-2.2.3-1.el7.x86_64.rpm
# 安装
rpm -ivh obclient-2.2.3-1.el7.x86_64.rpm
创建目录结构
# 创建 admin 用户
useradd -m admin
# 切换到 admin 用户
su - admin
# 清理旧数据(如有)
rm -rf /home/admin/oceanbase/data/1/cluster
rm -rf /home/admin/oceanbase/data/log1/cluster
rm -rf /home/admin/oceanbase/store/cluster
rm -rf /home/admin/oceanbase/log/*
rm -rf /home/admin/oceanbase/etc/*config*
# 创建目录
mkdir -p /home/admin/oceanbase/data/1/cluster/{etc3,sstable,slog}
mkdir -p /home/admin/oceanbase/data/log1/cluster/{clog,etc2}
mkdir -p /home/admin/oceanbase/store/cluster
# 创建软链接
for t in {etc3,sstable,slog}; do
ln -s /home/admin/oceanbase/data/1/cluster/$t /home/admin/oceanbase/store/cluster/$t
done
for t in {clog,etc2}; do
ln -s /home/admin/oceanbase/data/log1/cluster/$t /home/admin/oceanbase/store/cluster/$t
done
启动数据库
初始化集群
cd /home/admin/oceanbase
# 启动 observer(根据实际 IP 和网卡修改)
/home/admin/oceanbase/bin/observer \
-i eth0 \
-P 2882 \
-p 2881 \
-z zone1 \
-d /home/admin/oceanbase/store/cluster \
-r '10.10.10.50:2882:2881' \
-c 10001 \
-n cluster \
-o "cpu_count=4,memory_limit=6G,system_memory=1G,\
min_full_resource_pool_memory=1G,datafile_size=60G,\
log_disk_size=30G,config_additional_dir=/home/admin/oceanbase/data/1/cluster/etc3;/home/admin/oceanbase/data/log1/cluster/etc2,\
enable_syslog_recycle=True,max_sysfile_file_count=10"
参数说明:
-i:绑定的网卡-P:RPC 端口-p:SQL 端口-z:Zone 名称-d:数据目录-r:RootServer 地址memory_limit:内存限制datafile_size:数据文件大小
初始化系统
# 连接数据库
obclient -h127.0.0.1 -uroot -P2881 -p
SET SESSION ob_query_timeout=1000000000;
-- 启动集群
ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.10.10.50:2882';
-- 调整内存
ALTER SYSTEM SET memory_limit = '8G';
-- 创建资源单元
CREATE RESOURCE UNIT small_unit
MEMORY_SIZE = '1G',
MAX_CPU = 1, MIN_CPU = 1,
LOG_DISK_SIZE = '10G',
MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;
-- 创建资源池
CREATE RESOURCE POOL small_pool
UNIT='small_unit',
UNIT_NUM=1,
ZONE_LIST=('zone1');
-- 创建租户(MySQL 模式)
CREATE TENANT IF NOT EXISTS test_tenant
PRIMARY_ZONE='zone1',
RESOURCE_POOL_LIST=('small_pool')
SET OB_TCP_INVITED_NODES='%',
ob_compatibility_mode='mysql';
运维管理
用户管理
-- MySQL 模式
ALTER USER 'root'@'%' IDENTIFIED BY 'YourPassword';
CREATE USER 'appuser'@'%' IDENTIFIED BY 'YourPassword';
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%';
-- Oracle 模式
obclient -h127.0.0.1 -usys@test_tenant -P2881 -p
ALTER USER sys IDENTIFIED BY YourPassword;
CREATE USER appuser IDENTIFIED BY YourPassword;
GRANT CREATE SESSION TO appuser;
GRANT CONNECT, RESOURCE TO appuser;
GRANT CREATE ANY TABLE TO appuser;
参数配置
-- 日志配置
ALTER SYSTEM SET enable_syslog_recycle = true;
ALTER SYSTEM SET max_syslog_file_count = 10;
ALTER SYSTEM SET syslog_level = 'WARN';
-- 时区配置
SET GLOBAL time_zone='+08:00';
SET GLOBAL autocommit = 1;
系统服务配置
# 创建启动脚本
cat > /home/admin/start.sh <<'EOF'
#!/bin/bash
echo "[I] OceanBase 启动中..."
cd /home/admin/oceanbase && ./bin/observer
echo "[I] OceanBase 启动完成"
EOF
chmod +x /home/admin/start.sh
# 创建 systemd 服务
cat > /etc/systemd/system/observer.service <<'EOF'
[Unit]
Description=OceanBase Service
After=network.target
[Service]
Type=simple
User=admin
ExecStart=/home/admin/start.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
systemctl daemon-reload
systemctl enable observer
systemctl start observer
systemctl status observer
连接测试
# MySQL 模式
obclient -h127.0.0.1 -uroot@test_tenant -P2881 -p
# Oracle 模式
obclient -h127.0.0.1 -usys@test_tenant -P2881 -p
# 创建测试表
CREATE TABLE test_table (
id INT PRIMARY KEY,
name VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO test_table VALUES (1, 'test');
SELECT * FROM test_table;
小结
OceanBase 单机版部署要点:
- 资源规划:根据硬件调整参数
- 目录结构:合理规划数据目录
- 租户隔离:使用多租户机制
- 参数调优:根据场景优化
适用场景:
- 开发测试环境
- 轻量级业务系统
- 学习研究
参考资料: