Skip to content

OceanBase 部署规范

硬件配置规范

1. 服务器选型

根据业务规模和性能要求,选择合适的服务器配置:

配置类型CPU内存存储网络适用场景
入门级8核32GB1TB SSD千兆网卡开发测试、小规模应用
标准级16核64GB2TB SSD万兆网卡中等规模应用、生产环境
高性能级32核128GB+4TB SSD万兆网卡×2大规模应用、核心业务
超高性能级64核256GB+8TB SSD+25G/100G网卡超大规模应用、金融级业务

2. CPU 配置要求

  • CPU 架构:推荐使用 x86_64 架构,支持 AES-NI 指令集
  • CPU 主频:推荐 2.5GHz 以上
  • CPU 核心数:根据业务负载选择,推荐 16 核以上
  • CPU 缓存:推荐 L3 缓存 16MB 以上

3. 内存配置要求

  • 内存容量:推荐内存容量为 CPU 核心数的 4-8 倍
  • 内存类型:推荐使用 DDR4 内存,频率 2666MHz 以上
  • 内存通道:推荐使用 8 通道内存配置,提高内存带宽
  • 内存可靠性:推荐启用 ECC 内存,提高数据可靠性

4. 存储配置要求

  • 存储介质:推荐使用 SSD 存储,提高 I/O 性能
  • 存储容量
    • 数据盘:根据数据量和副本数计算,推荐每节点 2TB 以上
    • 日志盘:推荐每节点 1TB 以上,使用高性能 SSD
    • 系统盘:推荐 200GB 以上
  • 存储阵列:生产环境推荐使用 RAID 卡,配置 RAID 10
  • I/O 性能
    • 随机读写 IOPS:推荐 10 万以上
    • 顺序读写带宽:推荐 1GB/s 以上
    • 延迟:推荐 1ms 以下

5. 网络配置要求

  • 网络带宽:推荐使用万兆网卡,核心节点推荐使用 25G/100G 网卡
  • 网络接口:推荐每节点配置 2 个以上网络接口,分离业务流量和管理流量
  • 网络拓扑:推荐使用 spine-leaf 架构,减少网络延迟
  • 网络设备:推荐使用高性能交换机,支持低延迟转发

软件配置规范

1. 操作系统要求

操作系统版本要求推荐版本
CentOS7.6 及以上7.9
Red Hat7.6 及以上7.9
Ubuntu18.04 及以上20.04
SUSE12 SP5 及以上15 SP3

2. 操作系统配置

2.1 系统参数配置

编辑 /etc/sysctl.conf,添加以下内容:

txt
# 文件描述符限制
fs.aio-max-nr = 1048576
fs.file-max = 6815744

# 共享内存配置
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096

# 信号量配置
kernel.sem = 250 32000 100 128

# 网络参数配置
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_orphans = 32768

# 内存管理配置
vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5

应用系统参数:

bash
sysctl -p

2.2 资源限制配置

编辑 /etc/security/limits.conf,添加以下内容:

txt
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft stack 65536
* hard stack 65536

2.3 文件系统配置

  • 文件系统类型:推荐使用 ext4 或 xfs 文件系统
  • 挂载选项:添加 noatime,nodiratime 选项,提高 I/O 性能
  • 磁盘调度策略:推荐使用 deadline 调度策略
bash
# 查看当前磁盘调度策略
cat /sys/block/sda/queue/scheduler

# 设置磁盘调度策略为 deadline
echo deadline > /sys/block/sda/queue/scheduler

3. 依赖软件安装

3.1 必要依赖

bash
# CentOS/RHEL
yum install -y yum-utils device-mapper-persistent-data lvm2 gcc gcc-c++ make openssl-devel zlib-devel libaio-devel libevent-devel libxml2-devel libtool

# Ubuntu
dpkg --add-architecture i386
apt-get update
apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 build-essential libssl-dev zlib1g-dev libaio-dev libevent-dev libxml2-dev libtool

3.2 OceanBase 相关软件

  • OBD:OceanBase 部署工具,用于集群部署和管理
  • OCP:OceanBase 云平台,用于集群监控和管理(可选)
  • OBProxy:OceanBase 代理,用于客户端连接管理

网络规划规范

1. 网络架构设计

  • 网络分区:将网络分为业务网络、管理网络和复制网络
  • 业务网络:用于客户端访问,推荐使用万兆网卡
  • 管理网络:用于集群管理和监控,推荐使用千兆网卡
  • 复制网络:用于节点间数据复制,推荐使用万兆网卡

2. IP 地址规划

  • 节点 IP:为每个节点分配固定 IP 地址
  • VIP 地址:为集群分配 VIP 地址,用于故障转移
  • 端口规划
    • MySQL 端口:2881
    • RPC 端口:2882
    • OBProxy 端口:2883
    • OCP 端口:8080(HTTP)、443(HTTPS)
    • Prometheus 端口:9090
    • Grafana 端口:3000

3. 网络安全配置

  • 防火墙配置:开放必要端口,关闭不必要的服务
  • 网络隔离:使用 VLAN 或子网隔离不同类型的网络流量
  • 网络监控:部署网络监控工具,监控网络流量和延迟
  • 网络冗余:配置链路聚合,提高网络可靠性

存储规划规范

1. 存储架构设计

  • 存储分离:将数据存储和日志存储分离,提高 I/O 性能
  • 多路径配置:配置多路径软件,提高存储可靠性
  • 存储冗余:使用 RAID 10 或多副本存储,提高数据可靠性

2. 存储目录规划

目录类型推荐路径用途存储要求
系统目录/操作系统安装200GB SSD
数据目录/data/oceanbase数据文件存储2TB+ SSD
日志目录/log/oceanbase日志文件存储1TB+ 高性能 SSD
安装目录/home/oceanbase软件安装100GB SSD
临时目录/tmp临时文件存储100GB SSD

3. 存储性能优化

  • SSD 优化:启用 TRIM 功能,提高 SSD 性能和寿命
  • I/O 调度:使用 deadline 调度策略
  • 文件系统优化:添加 noatime,nodiratime 挂载选项
  • 禁用磁盘缓存:生产环境推荐禁用磁盘缓存,使用电池备份的 RAID 卡缓存

安全配置规范

1. 系统安全加固

  • 关闭不必要的服务:关闭 telnet、ftp 等不必要的服务
  • 启用防火墙:配置 iptables 或 firewalld,开放必要端口
  • 禁用 root 远程登录:创建普通用户,使用 sudo 授权管理
  • 启用 SELinux:生产环境推荐启用 SELinux,配置为 enforcing 模式
  • 定期更新系统补丁:定期更新操作系统和软件补丁

2. 数据库安全配置

  • 设置强密码:为数据库用户设置强密码,定期更换
  • 最小权限原则:为用户分配最小必要权限
  • 启用审计日志:记录数据库操作日志,便于审计和故障排查
  • 加密通信:启用 TLS/SSL 加密,保护数据传输安全
  • 定期备份:定期备份数据库,确保数据安全

3. 访问控制配置

  • 网络访问控制:使用防火墙限制数据库访问 IP
  • 用户访问控制:配置用户访问策略,限制用户权限
  • 应用访问控制:使用应用账户访问数据库,避免直接使用管理员账户
  • 审计和监控:监控数据库访问行为,及时发现异常访问

部署架构规范

1. 集群架构设计

  • 节点数量:推荐 3 个以上节点,确保高可用性
  • 副本数:推荐 3 副本配置,提高数据可靠性
  • Zone 配置:根据数据中心或可用区配置 Zone,推荐每个 Zone 部署相同数量的节点
  • RootService 配置:推荐每个 Zone 部署一个 RootService,提高集群可靠性

2. 部署模式选择

根据业务需求和技术能力,选择合适的部署模式:

部署模式部署工具适用场景优势劣势
OBD 部署OBD开发测试、生产环境部署简单、配置灵活管理功能有限
OCP 部署OCP生产环境、大规模集群管理功能全面、可视化操作部署复杂、资源消耗大
手动部署手动特殊场景、定制化部署高度定制化部署复杂、容易出错
容器部署Docker/K8s云原生环境、微服务架构部署灵活、资源隔离性能开销、管理复杂

3. 高可用性设计

  • 多副本部署:部署 3 副本或以上,确保数据可靠性
  • 跨可用区部署:在不同可用区部署节点,提高集群可用性
  • 故障自动转移:启用故障自动转移功能,减少故障恢复时间
  • 负载均衡:部署多个 OBProxy 实例,实现负载均衡和故障转移

4. 扩展性设计

  • 水平扩展:支持在线添加节点,扩展集群容量
  • 资源池扩展:支持在线扩展资源池,调整资源分配
  • 租户扩展:支持在线创建租户,隔离不同业务
  • 存储扩展:支持在线扩展存储容量,满足业务增长需求

部署流程规范

1. 部署前准备

  • 环境检查:检查硬件、软件、网络和存储配置
  • 规划设计:设计集群架构、网络规划和存储规划
  • 文档准备:准备部署文档、配置模板和应急预案
  • 工具准备:准备部署工具和监控工具

2. 部署实施

  • 基础环境配置:配置操作系统、网络和存储
  • 软件安装:安装 OceanBase 相关软件
  • 集群部署:使用 OBD 或 OCP 部署集群
  • 集群配置:配置集群参数和租户资源
  • 功能验证:验证集群功能和性能

3. 部署后验证

  • 集群状态检查:检查集群状态和节点状态
  • 性能测试:进行性能测试,验证集群性能
  • 故障测试:进行故障测试,验证集群高可用性
  • 监控配置:配置监控和告警
  • 文档更新:更新部署文档和运维手册

最佳实践

1. 硬件配置最佳实践

  • 优先选择高性能 SSD 存储,提高 I/O 性能
  • 使用万兆网卡,满足节点间数据复制需求
  • 配置足够的内存,提高查询性能和并发能力
  • 启用 ECC 内存,提高数据可靠性

2. 网络配置最佳实践

  • 分离业务网络、管理网络和复制网络
  • 使用固定 IP 地址,避免 IP 地址冲突
  • 配置合理的 MTU 值,提高网络传输效率
  • 启用网络监控,及时发现网络问题

3. 存储配置最佳实践

  • 分离数据存储和日志存储,提高 I/O 性能
  • 使用 RAID 10 配置,提高存储可靠性和性能
  • 配置合理的文件系统挂载选项,提高 I/O 性能
  • 定期监控存储使用情况,避免存储容量不足

4. 安全配置最佳实践

  • 启用 TLS/SSL 加密,保护数据传输安全
  • 配置强密码策略,定期更换密码
  • 启用审计日志,便于审计和故障排查
  • 定期进行安全扫描,发现安全漏洞

5. 部署架构最佳实践

  • 部署 3 个以上节点,确保高可用性
  • 配置 3 副本,提高数据可靠性
  • 跨可用区部署,提高集群可用性
  • 部署多个 OBProxy 实例,实现负载均衡和故障转移

常见问题(FAQ)

Q1: 如何选择合适的服务器配置?

A1: 选择服务器配置需要考虑以下因素:

  • 业务规模:根据数据量和并发用户数选择
  • 性能要求:根据 QPS/TPS 要求选择
  • 可靠性要求:根据业务重要性选择
  • 预算限制:在满足性能和可靠性要求的前提下,考虑预算限制

Q2: 生产环境推荐使用哪种部署模式?

A2: 生产环境推荐使用 OCP 部署模式,OCP 提供了全面的集群管理功能,包括监控、告警、备份恢复和性能优化等。对于小规模集群或资源有限的环境,可以使用 OBD 部署模式。

Q3: 如何配置跨可用区部署?

A3: 配置跨可用区部署需要以下步骤:

  1. 在每个可用区部署相同数量的节点
  2. 为每个可用区创建一个 Zone
  3. 配置副本分布策略,确保每个 Zone 都有副本
  4. 配置 RootService 分布,确保每个 Zone 都有 RootService

Q4: 如何优化 OceanBase 存储性能?

A4: 优化 OceanBase 存储性能可以从以下几个方面入手:

  • 使用高性能 SSD 存储
  • 分离数据存储和日志存储
  • 配置合理的文件系统挂载选项
  • 使用 deadline 磁盘调度策略
  • 调整 OceanBase 存储相关参数

Q5: 如何确保 OceanBase 集群的安全性?

A5: 确保 OceanBase 集群的安全性可以从以下几个方面入手:

  • 启用 TLS/SSL 加密,保护数据传输安全
  • 配置强密码策略,定期更换密码
  • 启用审计日志,便于审计和故障排查
  • 配置网络访问控制,限制数据库访问 IP
  • 定期进行安全扫描,发现安全漏洞

Q6: 如何规划 OceanBase 集群的扩展性?

A6: 规划 OceanBase 集群的扩展性需要考虑以下因素:

  • 业务增长趋势:根据业务增长趋势规划集群容量
  • 节点扩展能力:确保集群支持在线添加节点
  • 资源扩展能力:确保集群支持在线扩展资源
  • 存储扩展能力:确保集群支持在线扩展存储容量

Q7: 如何验证 OceanBase 集群的性能?

A7: 验证 OceanBase 集群的性能可以使用以下方法:

  • 使用压测工具(如 SysBench、TPCC)进行性能测试
  • 监控集群关键性能指标(如 QPS、TPS、响应时间)
  • 进行并发测试,验证集群并发处理能力
  • 进行大数据量测试,验证集群处理大规模数据的能力

Q8: 如何制定 OceanBase 集群的备份策略?

A8: 制定 OceanBase 集群的备份策略需要考虑以下因素:

  • 数据重要性:根据数据重要性选择备份频率
  • 恢复时间目标(RTO):根据 RTO 要求选择备份类型
  • 恢复点目标(RPO):根据 RPO 要求选择备份频率
  • 存储成本:在满足 RTO 和 RPO 要求的前提下,考虑存储成本