麒麟 V10 部署 OceanBase:故障速查与验收清单

摘要:按"现象---检查---处理"定位问题。适用于本系列的 ARM64、x86_64 单节点示例;只在对应步骤失败时查阅,不需要实施前通读。

先记录,不反复重跑

记下失败阶段、首条有效错误、报错进程、时间、数据库完整构建号和 obd --version。日志和截图外发前隐藏口令、地址、主机名及业务 SQL。

不默认删目录、销毁集群、清缓存、关闭安全控制或修改 OBD 检查源码。

1. 安装包、指令集、运行库

现象 先检查 处理原则
ARM 非法指令 uname -m、lscpu 的 atomics、实际 RPM 确认无 LSE 才用匹配 nonlse;已有 LSE 仍报错时查具体构建
x86 非法指令/AVX 检查失败 avx、数据库补丁、OBD 版本 CE 4.2.5.6 支持无 AVX;其他补丁看 release notes,不删检查代码
GLIBC_x.xx not found rpm -qpR 主包.rpm、ldd --version 换匹配制品或补对应系统依赖,不覆盖 glibc、不用 --nodeps
libaio.so.1 缺失 报错进程、RPM 依赖和系统库 从匹配的麒麟离线介质补齐,不跨发行版硬装
Unsupported system page size getconf PAGESIZE、进程及构建 按具体组件查兼容性,nonlse 和 THP 不是通用修复

不要因 OBClient 报错就认定 observer 也坏了;不同进程分别核对。

2. 找不到 obd 或已部署集群

执行用户:原部署用户 obadmin。

bash 复制代码
whoami
printf '%s\n' "$HOME"
source "$HOME/.oceanbase-all-in-one/bin/env.sh"
command -v obd
obd --version
obd cluster list

预期 HOME 为 /data/obadmin。默认 ~/.obd 保存镜像、仓库与集群状态,~/.oceanbase-all-in-one 保存工具。root 的 ~ 是另一个目录,不要切到 root 重新 deploy 来"找回集群"。

3. SSH/权限失败

bash 复制代码
OB_IP='192.0.2.10'
ssh -o BatchMode=yes -i /data/obadmin/.ssh/id_ed25519 \
  "obadmin@$OB_IP" 'id; ulimit -n; ulimit -u'
namei -l /data/oceanbase/observer
findmnt -T /data/oceanbase/observer

先替换实际 IP。核对账户状态、端口、私钥路径及权限、主机指纹、上层目录权限、noexec 和安全审计。SSH 返回的限制值也必须达标,不能只看本地 su。

密钥未下发时找管理员完成前置配置,不用 777、免密全权 sudo 或关闭校验兜底。

4. 目录非空

bash 复制代码
obd cluster list
ls -la /data/oceanbase/observer
pgrep -a -x observer

先确认旧部署、运行进程及数据归属。失败残留与业务数据不能凭文件名区分;不加 -f、不直接删除 block_file 或 redo。重建前需要单独确认备份、目标与影响范围。

5. 严格检查失败、同盘或空间不足

bash 复制代码
df -hT / /data /data/obadmin /data/oceanbase/observer
findmnt -T /data/oceanbase/data
findmnt -T /data/oceanbase/redo
obd cluster start --help
  • **同设备:**两个目录不代表两块盘。部分 OBD 插件把共盘告警在 -S 下升级为失败。
  • **容量不足:**累计计算数据上限、redo、slog、运行日志和工具缓存,不只看初始数据文件。
  • **处理:**优先改存储布局。纯实验环境仅剩已接受的共盘告警、其他检查全通过时,才考虑普通检查模式;不用于绕过硬错误。

"4%"不要误读

官方某资源准备页描述的是部署前文件系统已使用率 低于 4%,不是 datafile_size 至少占盘 4%。不能为了通过检查,把大盘上的小数据库扩大到 TB 级,也不能用占位文件改变使用率。最终以实际 OBD 版本和原始报错定位。

6. 内存不足/长时间等待初始化

bash 复制代码
free -h
vmstat 1 5
ps -eo pid,user,comm,rss --sort=-rss | head -n 20
ls -lh /data/oceanbase/observer/log

available 不是永久配额;system_memory 已包含在 memory_limit 内,剩余内存还需分给 sys、业务和 Meta 租户。Swap 的历史占用不等于当前抖动,应结合 si/so。

查看失败时间附近的 observer.log、rootservice.log,区分内存、I/O、端口和权限。不要从一条 WARN 推定根因,也不要反复重启初始化中的实例。

7. 租户创建失败或新密码连接失败

sys 会话检查:

sql 复制代码
SELECT VALUE FROM oceanbase.GV$OB_PARAMETERS
WHERE NAME='__min_full_resource_pool_memory';
SELECT * FROM oceanbase.GV$OB_SERVERS;
SELECT NAME FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE NAME='app_unit';
SELECT NAME FROM oceanbase.DBA_OB_RESOURCE_POOLS WHERE NAME='app_pool';
SELECT TENANT_NAME, STATUS FROM oceanbase.DBA_OB_TENANTS
  WHERE TENANT_NAME='app_tenant';
情况 下一步
Unit 低于内存门槛 改用满足门槛且资源充足的规格,不降低隐藏门槛求通过
资源池分配失败 看节点剩余 CPU、内存、日志盘,不能只看主机总资源
同名对象已经存在 确认是否本次部分成功,不能整段重跑或自动删除
租户未到 NORMAL 查创建失败原因,不继续密码初始化
远程连不上 app_tenant 本系列默认白名单仅限 127.0.0.1,先在本机验收;业务接入另行按来源放行
密码不对 sys 密码和租户密码不是同一个设置;确认登录名为 root@app_tenant

若服务只绑定实际 IP 而不接受回环连接,不要临时放开 %。由管理员将初始化白名单限定为确认过的本机源 IP,再用该地址连接,并记录变更。

业务租户密码初始化后重新用 -p 交互登录。MYSQL_HISTFILE=/dev/null 仅关闭客户端历史,不处理终端录屏或服务端审计。

8. 修改 YAML 没生效

bash 复制代码
obd cluster edit-config ob-single
obd cluster reload --help
obd cluster restart --help

部署后修改 OBD 注册配置,不只改最初的输入 YAML。按命令输出选择 reload 或带参 restart,参数随 OBD 版本变化;重启会中断服务,先安排维护窗口。遇到 redeploy 提示停下评估,不当作普通刷新。

9. 最终验收清单

  • 集群 running,SQL 查询版本和节点状态正确。
  • 业务租户 NORMAL,新密码登录及读写验证通过;业务不使用 sys。
  • 根盘、家目录、运行日志、data 和 redo 都有容量余量。
  • 账户、文件权限和访问来源已收敛,日志与截图已脱敏。
  • 自启、重启恢复、备份恢复是否配置已明确记录。
  • 单节点无高可用的限制已交接;功能验证不等于生产上线。
相关推荐
水饺编程1 小时前
第2章:Linux 基础,在 root 中创建用户账号
linux·c语言·汇编·1024程序员节
LMT流氓兔1 小时前
第五单元——第9课:防止同一次操作重复执行
java·服务器·数据库·算法·ai·langchain
code2cat1 小时前
Java高级篇之JDBC:连接数据库,完成查询、更新与事务
java·开发语言·数据库
叼烟扛炮1 小时前
Linux 学习笔记(四):文件检索与管道重定向
linux·笔记·学习
*长铗归来*1 小时前
MySQL新学知识(三)MySQL 事件(EVENT)
数据库·mysql
Warolitbos2 小时前
【数据库】SQL进阶15题,窗口函数/索引/事务一页速查
数据库·sql·学习·mysql·面试
BioRunYiXue2 小时前
使用docker分析高通量测序数据
java·数据库·人工智能·spring cloud·docker·tomcat·html
卓豪终端管理2 小时前
300 台终端补丁推送完成 ≠ 漏洞关闭:补丁稽核闭环的状态机与工程落点
网络·数据库·php
l1t2 小时前
DeepSeek总结的PostgreSQL 中的二进制只读副本,第三部分
数据库·postgresql