OceanBase 数据库安装与配置指南

OceanBase(简称 OB)是一款企业级原生分布式数据库,具备高可用、高扩展、强一致和高度兼容 MySQL 协议等特性。其安装与配置流程涉及集群规划、软件部署、集群初始化、租户创建等关键步骤。本文将提供一个从零开始的详细指南。

一、 环境规划与准备

在开始安装前,必须进行详细的规划,以确保集群的稳定性和性能。

规划项 详细说明与要求
硬件与操作系统 推荐配置
CPU:x86_64架构,建议8核及以上。
内存:至少 16 GB。OceanBase 对内存要求较高,需预留足够内存给系统内部缓存(如 MemTable)。
磁盘:SSD 推荐。数据盘和日志盘建议分开,数据盘容量根据业务量预估,日志盘建议是数据盘的3-4倍。
OS:CentOS 7.x / RHEL 7.x / Ubuntu 16.04+ 等主流 Linux 发行版。确保内核版本在 2.6.32 以上。
网络 • 集群内所有节点时钟必须同步(建议使用 NTP 服务)。
• 节点间网络延迟要求低且稳定(建议内网互通,延迟小于 1ms)。
• 开放必要的防火墙端口,通常包括:
- RPC 端口:默认 2882,用于节点间通信。
- SQL 访问端口:默认 2881,用于应用程序连接。
- 监听端口:默认 2883。
部署模式 单机部署:仅用于学习或测试。
分布式集群部署(生产推荐):至少 3 个 Zone,每个 Zone 可包含 1 台或多台 OBServer。这是实现高可用和容灾的基础。例如,一个典型的“三副本三Zone”架构能容忍单个Zone的故障。
依赖软件 • 需提前安装 libaionumactlnet-tools 等系统库。

安装依赖包示例(以 CentOS 为例):

sudo yum install -y libaio-devel numactl net-tools

二、 使用 OBD 自动化部署(推荐)

OceanBase Deployer (OBD) 是官方推荐的自动化部署和管理工具,能极大简化安装流程。

  1. 安装 OBD

    # 通过 OceanBase 官方软件源安装
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
    sudo yum install -y ob-deploy
    # 验证安装
    obd --version
    
  2. 准备集群配置文件
    创建一个 YAML 配置文件(如 obcluster.yaml),定义集群拓扑和参数。

    ## obcluster.yaml 示例:部署一个包含3个节点的测试集群
    oceanbase-ce:
      servers:
        - name: server1
          ip: 192.168.1.101
        - name: server2
          ip: 192.168.1.102
        - name: server3
          ip: 192.168.1.103
      global:
        # 集群基础配置
        cluster_id: 1
        # 指定数据、日志、安装等目录(需提前创建并有足够权限)
        home_path: /home/admin/observer
        data_dir: /data/obdata
        redo_dir: /data/oblog
        # 资源规划
        memory_limit: 8G           # 单个observer进程内存上限
        system_memory: 4G          # 系统预留内存
        cpu_count: 8
        datafile_size: 50G         # 数据文件初始大小
        log_disk_size: 100G        # 日志磁盘大小
        # 网络配置
        devname: eth0
        mysql_port: 2881
        rpc_port: 2882
        # 高可用配置:定义3个Zone,每个Zone一个副本
        replication_num: 3
        zone_list: [zone1, zone2, zone3]
      server1:
        zone: zone1
      server2:
        zone: zone2
      server3:
        zone: zone3
    
  3. 部署集群

    # 1. 检查并自动安装 OceanBase 软件包
    obd cluster deploy obtest -c obcluster.yaml
    # 2. 启动集群
    obd cluster start obtest
    # 3. 查看集群状态
    obd cluster display obtest
    

    执行 display 命令后,如果所有服务的状态(status)均为 active,则表明集群启动成功。

三、 集群初始化与基础配置

集群启动后,需要通过命令行客户端连接并进行初始化设置。

  1. 连接系统租户(sys)

    # 使用 OBD 自带的客户端连接,-h 指定任意一个节点IP
    obclient -h192.168.1.101 -P2881 -uroot@sys -p
    # 或者使用 MySQL 客户端
    mysql -h192.168.1.101 -P2881 -uroot@sys -p
    
  2. 修改 root@sys 密码(首次必须)

    ALTER USER root IDENTIFIED BY 'YourStrongPassword123';
    
  3. 创建业务租户
    OceanBase 采用多租户架构。系统租户(sys)主要用于管理,业务数据应存放在独立的业务租户中。

    -- 1. 创建资源单元配置(Resource Unit),定义租户的CPU、内存等资源上限
    CREATE RESOURCE UNIT my_unit_config
    MAX_CPU = 2,
    MIN_CPU = 1,
    MEMORY_SIZE = '4G',
    LOG_DISK_SIZE = '20G',
    MAX_IOPS = 10000,
    MIN_IOPS = 1000;
    
    -- 2. 创建资源池,将资源单元与 Zone 关联
    CREATE RESOURCE POOL my_resource_pool
    UNIT = 'my_unit_config',
    UNIT_NUM = 1, -- 每个Zone上的单元数量
    ZONE_LIST = ('zone1', 'zone2', 'zone3');
    
    -- 3. 创建业务租户,并指定字符集、副本数等
    CREATE TENANT IF NOT EXISTS my_tenant
    RESOURCE_POOL_LIST = ('my_resource_pool'),
    PRIMARY_ZONE = 'RANDOM', -- 主副本优先分布策略
    COMMENT = '我的业务租户',
    CHARSET = 'utf8mb4',
    REPLICA_NUM = 3, -- 副本数,通常与Zone数一致
    ZONE_LIST = ('zone1', 'zone2', 'zone3'),
    OB_COMPATIBILITY_MODE = 'mysql'; -- 兼容MySQL模式
    
    -- 4. 为业务租户创建管理用户
    CREATE USER my_user IDENTIFIED BY 'UserPassword123';
    GRANT ALL PRIVILEGES ON *.* TO my_user;
    

四、 连接与验证业务租户

  1. 连接业务租户

    mysql -h192.168.1.101 -P2881 -umy_user@my_tenant -p
    # 或
    obclient -h192.168.1.101 -P2881 -umy_user@my_tenant -p
    
  2. 执行基本操作验证

    -- 在业务租户连接下执行
    -- 1. 创建测试数据库和表
    CREATE DATABASE test_db;
    USE test_db;
    CREATE TABLE test_table (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(50),
        create_time DATETIME DEFAULT CURRENT_TIMESTAMP
    );
    
    -- 2. 插入和查询数据
    INSERT INTO test_table (name) VALUES ('OceanBase Test');
    SELECT * FROM test_table;
    
    -- 3. 查看表分布(验证分布式特性)
    SELECT /*+ READ_CONSISTENCY(WEAK)*/ table_name, partition_id, svr_ip FROM oceanbase.__all_virtual_proxy_schema WHERE table_name='TEST_TABLE'\G
    

五、 关键参数调优与管理

安装后,根据业务负载调整关键参数至关重要。

参数类别 关键参数 说明与建议调整场景
内存与缓存 memory_limit
system_memory
ob_sql_work_area_percentage
控制OBServer总内存和系统内存。ob_sql_work_area_percentage 用于排序、哈希连接等操作的工作区内存占比,OLAP场景可适当调高。
日志与恢复 clog_sync_time_warn_threshold
undo_retention
控制Redo日志同步告警阈值和MVCC多版本数据保留时间。根据对数据恢复和磁盘空间的需求调整。
超时与重试 ob_query_timeout
ob_trx_timeout
设置查询和事务的超时时间,防止慢查询长期占用资源。
备份与归档 data_backup_dest
log_archive_dest
生产环境必须配置。设置数据备份和日志归档的路径(通常为NFS或OSS),这是实现数据恢复的基础。

参数修改示例:

-- 在 sys 租户下,修改集群级参数
ALTER SYSTEM SET memory_limit='16G' SERVER='192.168.1.101:2882';
-- 或修改租户级参数
ALTER TENANT my_tenant SET ob_sql_work_area_percentage=30;

六、 生产环境高可用考量

对于生产环境,仅完成基础安装是不够的,还需规划高可用和监控。

  1. 部署 OBProxy
    OBProxy 是 OceanBase 的智能路由代理,对应用透明,提供读写分离、故障自动切换、连接池等功能。

    # 使用 OBD 部署 OBProxy
    # 在单独的配置文件中定义 OBProxy 节点,然后执行部署和启动
    obd cluster deploy obproxy-test -c obproxy.yaml
    obd cluster start obproxy-test
    

    应用应连接 OBProxy 的地址(默认端口 2883),而非直连 OBServer。

  2. 配置监控与告警

    • OCP (OceanBase Cloud Platform):官方的集中式管理平台,提供监控、告警、备份恢复、性能诊断等全套运维能力,是生产运维的首选。
    • Prometheus + Grafana:社区方案,通过 exporter 采集 OceanBase 指标,在 Grafana 中展示监控大盘。
  3. 制定备份策略

    -- 1. 设置备份路径
    ALTER SYSTEM SET data_backup_dest='file:///obbackup/data';
    ALTER SYSTEM SET log_archive_dest='file:///obbackup/archive';
    
    -- 2. 开启日志归档
    ALTER SYSTEM ARCHIVELOG;
    
    -- 3. 发起一次全量备份(可配置定时任务)
    ALTER SYSTEM BACKUP DATABASE;
    

通过以上步骤,您就完成了 OceanBase 数据库从环境准备、自动化部署、初始化配置到基础验证的全过程。对于生产环境,务必在部署后详细测试高可用切换、备份恢复等关键场景,并建立完善的监控体系。


参考来源

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐