在CentOS 7.6上离线部署OceanBase 3.1.3一份给内网/隔离环境DBA的保姆级避坑手册当企业数据库环境面临严格的网络安全隔离要求时传统在线部署方案往往束手无策。本文将以OceanBase 3.1.3为例详细拆解在CentOS 7.6离线环境中的完整部署流程特别针对内网环境中常见的依赖缺失、配置错误、资源不足等典型问题提供实战解决方案。不同于常规教程我们将重点揭示那些官方文档未明确标注的暗坑帮助DBA一次性完成高可用分布式数据库集群的搭建。1. 离线环境准备与资源规划1.1 硬件资源核查清单在完全离线的环境中部署OceanBase首要任务是确保硬件资源满足最低要求。以下是经过生产验证的资源配置基准组件最低配置要求推荐生产配置关键注意事项内存8GB16GB需包含系统预留内存CPU4核8核建议关闭CPU节能模式磁盘空间50GB200GB需考虑日志文件增长空间网络带宽1Gbps10Gbps多节点部署需专用心跳网络提示实际内存需求与业务数据量强相关当部署单机测试环境时可通过以下命令临时降低内存门槛echo 3 /proc/sys/vm/drop_caches free -h1.2 离线软件包全集下载完整离线部署需要以下核心组件包建议通过可联网设备提前下载基础组件oceanbase-ce-3.1.3-*.el7.x86_64.rpm主数据库引擎oceanbase-ce-libs-3.1.3-*.el7.x86_64.rpm核心依赖库ob-deploy-1.3.3-*.el7.x86_64.rpm部署工具客户端工具obclient-2.0.1-*.el7.x86_64.rpm命令行客户端libobclient-2.0.0-*.el7.x86_64.rpm客户端依赖库可选组件obproxy-ce-3.2.3-*.el7.x86_64.rpm代理中间件ocp-express-*.rpm监控平台2. 关键依赖离线处理方案2.1 离线YUM仓库构建对于缺乏互联网连接的环境推荐使用createrepo工具构建本地仓库# 安装createrepo工具需提前准备rpm包 sudo rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm # 创建本地仓库目录结构 mkdir -p /opt/oceanbase/repo/Packages cp *.rpm /opt/oceanbase/repo/Packages/ # 生成仓库元数据 cd /opt/oceanbase/repo createrepo . # 创建本地repo文件 cat /etc/yum.repos.d/local.repo EOF [local] nameLocal OceanBase Repository baseurlfile:///opt/oceanbase/repo enabled1 gpgcheck0 EOF2.2 依赖库冲突解决离线环境下常见的依赖问题及解决方案libmariadb冲突# 查询已安装版本 rpm -qa | grep mariadb # 若存在冲突版本强制降级示例 rpm -Uvh --oldpackage mariadb-libs-5.5.68-1.el7.x86_64.rpmglibc版本不兼容# 检查当前glibc版本 ldd --version # 离线升级方案需谨慎 rpm -Uvh glibc-2.17-317.el7.x86_64.rpm glibc-common-2.17-317.el7.x86_64.rpm3. OBD部署配置深度优化3.1 配置文件关键参数解析典型local.yaml配置模板带安全加固参数oceanbase-ce: servers: - name: node1 ip: 192.168.1.100 global: memory_limit: 8G system_memory: 3G datafile_size: 50G log_disk_size: 20G cpu_count: 4 production_mode: true devname: eth0 # 必须与实际网卡名一致 cluster_id: 1 time_zone: 8:00 secure_mode: true # 启用安全模式 password_regex: ^(?.*[a-z])(?.*[A-Z])(?.*\\d)[^]{8,32}$ node1: mysql_port: 2881 rpc_port: 2882 zone: zone13.2 常见部署错误速查表错误现象根本原因解决方案OBD-2002: Failed to start observer内存不足调整memory_limit参数或添加swap空间devname配置错误网卡名称不匹配使用ip addr确认实际网卡名端口冲突2881/2882端口被占用修改配置或执行netstat -tunlp | grep 288排查磁盘空间不足数据目录未挂载单独分区扩展存储或修改datafile_dir指向大容量分区时间不同步NTP服务未启用离线环境需手动同步所有节点时间date -s YYYY-MM-DD HH:MM:SS4. 生产级安全加固实践4.1 最小权限控制方案专用部署账户创建groupadd obgroup useradd -g obgroup obadmin passwd obadmin echo obadmin ALL(ALL) NOPASSWD: /usr/bin/obd /etc/sudoers目录权限精细化控制chown -R obadmin:obgroup /home/obadmin/.obd chmod 750 /home/obadmin find /home/obadmin -type d -exec chmod 700 {} \;4.2 网络隔离策略建议在内网环境中实施以下网络规则# 仅允许内网特定IP访问数据库端口 iptables -A INPUT -p tcp --dport 2881 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 2881 -j DROP # 限制SSH访问源 iptables -A INPUT -p tcp --dport 22 -s 10.10.1.100 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j DROP # 保存规则 service iptables save systemctl restart iptables5. 运维监控与故障排查5.1 基础健康检查命令集集群状态检查obd cluster list obd cluster display myob性能瓶颈分析-- 查看系统负载 SELECT * FROM GV$SYSTEM_EVENT WHERE WAIT_CLASS ! Idle; -- 检查锁等待 SELECT * FROM GV$LOCK_WAIT;5.2 日志分析要点关键日志路径及用途日志路径内容类型分析关键词/home/obadmin/.obd/log/obd.logOBD工具日志ERROR, WARN/home/observer/log/observer.log数据库运行日志ERROR, slow query/home/observer/log/rootservice.log集群管理日志election, partition/var/log/messages系统级日志OOM, disk full在资源受限的测试环境中我曾遇到observer进程频繁OOM的情况。通过分析发现是默认的memory_limit参数未考虑系统预留内存调整为物理内存的70%后问题解决。这提醒我们离线环境更需要精细化的资源规划。