OceanBase 最小资源安装指南

OceanBase 最小资源安装指南 本文介绍如何在资源受限的环境中部署 OceanBase 单机版,适合开发测试环境或轻量级生产场景。 环境要求 资源 最低配置 推荐配置 CPU 4 核 8 核 内存 4GB 8GB 磁盘 100GB SSD 200GB SSD 系统 CentOS 7 / Ubu

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 单机版部署要点:

  1. 资源规划:根据硬件调整参数
  2. 目录结构:合理规划数据目录
  3. 租户隔离:使用多租户机制
  4. 参数调优:根据场景优化

适用场景:

  • 开发测试环境
  • 轻量级业务系统
  • 学习研究

参考资料

LICENSED UNDER CC BY-NC-SA 4.0
Comment