麒麟 V10 ARM64 离线部署 OceanBase:8 步实施手册

摘要:按 8 个步骤完成离线单节点部署与租户读写验收。

适用:普通麒麟 V10 ARM64,全新安装 OceanBase CE 4.2.5.6,MySQL 模式,单节点实验验证,无高可用。本文未完成真实麒麟服务器的端到端实装测试。

实施前填写

项目 本文约定
实际 IP 替换全文的 192.0.2.10
安装包 aarch64 all-in-one;记录版本、构建号、SHA-256
SSH obadmin,22 端口,私钥 /data/obadmin/.ssh/id_ed25519
本例资源 可分配 8 CPU;建议总内存 ≥32 GiB、available ≥24 GiB;数据盘可用 ≥400 GiB
密码 准备 sys 管理密码和业务租户密码,不写入公开表格

先备齐依赖和 SSH,分步执行,报错即停。

步骤 1:检查环境与安装包类型

执行身份:root。

bash 复制代码
cat /etc/os-release
uname -m
uname -r
ldd --version | head -n 1
LC_ALL=C lscpu | grep -w atomics
getconf PAGESIZE
free -h
nproc
ip -br addr
findmnt --mountpoint /data
df -hT / /data
ss -lntp | grep -E ':(2881|2882|2886)\b'

通过条件: aarch64;数据盘已挂载且允许执行;资源达标、IP 正确、三个数据库端口空闲。

  • 有 atomics 用普通包;没有时查 grep '^Features' /proc/cpuinfo,确认无 LSE 后另备匹配的 nonlse 包及依赖,all-in-one 不含它。

**未通过:**补齐缺项;选包不明时查参数速查篇。

步骤 2:准备用户、目录和系统参数

执行身份:root;修改前须确认影响范围。

先查用户与目录;已存在则停,不接管旧数据:

bash 复制代码
getent passwd obadmin
ls -ld /data/obadmin /data/ob-install /data/oceanbase

确认不存在后:

bash 复制代码
useradd -m -U -d /data/obadmin -s /bin/bash obadmin
install -d -m 0750 -o obadmin -g obadmin /data/ob-install /data/oceanbase
install -d -m 0750 -o obadmin -g obadmin \
  /data/oceanbase/{observer,data,redo,config}

安装包放到 /data/ob-install;管理员下发同机 SSH 密钥。

已有文件先读、备份。 编辑 /etc/security/limits.d/99-oceanbase.conf:

text 复制代码
obadmin soft nofile 655350
obadmin hard nofile 655350
obadmin soft nproc 655360
obadmin hard nproc 655360
obadmin soft stack unlimited
obadmin hard stack unlimited

查现值后编辑 /etc/sysctl.d/99-oceanbase.conf,保留更高合规限额:

text 复制代码
fs.aio-max-nr = 1048576
fs.file-max = 6573688
vm.max_map_count = 655360
vm.overcommit_memory = 0
vm.swappiness = 0
kernel.numa_balancing = 0
vm.zone_reclaim_mode = 0

加载配置;THP 路径存在且获批时执行关闭:

bash 复制代码
sysctl -p /etc/sysctl.d/99-oceanbase.conf
sysctl fs.aio-max-nr fs.file-max vm.max_map_count
printf 'never\n' > /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled

**通过条件:**属主正确,配置生效,THP 为 [never],所需通信已放行。

**未通过:**查权限和策略,不用 777 或关闭安全控制。THP 重启复查,core 沿用受控策略。

步骤 3:验证部署用户和同机 SSH

执行身份:root 切换到 obadmin;后续 shell 均用 obadmin。

私钥权限 600;首次 SSH 核对指纹后登记,再做 BatchMode 检查。替换实际 IP:

bash 复制代码
su - obadmin
export OB_IP='192.0.2.10'
id
printf '%s\n' "$HOME"
ssh -i /data/obadmin/.ssh/id_ed25519 "obadmin@$OB_IP" true
ssh -o BatchMode=yes -i /data/obadmin/.ssh/id_ed25519 \
  "obadmin@$OB_IP" 'id; ulimit -n; ulimit -u; ulimit -s'

**通过条件:**两端为 obadmin、HOME 正确、无需交互认证;nofile ≥655350、nproc ≥655360、stack unlimited。

**未通过:**查账户、密钥、PAM。非 22 端口同步改 SSH/YAML;新终端重设 OB_IP。

步骤 4:安装工具并导入离线镜像

执行身份:obadmin。

bash 复制代码
PKG='/data/ob-install/替换为实际aarch64安装包.tar.gz'
sha256sum "$PKG"
tar -tzf "$PKG" | head -n 20

SHA-256 须与可信记录一致,顶层为 oceanbase-all-in-one 且无同名旧目录,再解压:

bash 复制代码
tar -xzf "$PKG" -C /data/ob-install
cd /data/ob-install/oceanbase-all-in-one/rpms
rpm -qp --qf '%{NAME} %{VERSION}-%{RELEASE} %{ARCH}\n' *.rpm
OB_RPM='/data/ob-install/oceanbase-all-in-one/rpms/替换为实际主包.rpm'
rpm -qpR "$OB_RPM"

版本、架构与依赖匹配后安装:

bash 复制代码
cd /data/ob-install/oceanbase-all-in-one/bin
./install.sh
source "$HOME/.oceanbase-all-in-one/bin/env.sh"
command -v obd
obd --version
obd mirror disable remote
cd /data/ob-install/oceanbase-all-in-one/rpms
obd mirror clone -y *.rpm
obd mirror list local

**仅无 LSE 时:**专用目录放匹配的 nonlse 包和依赖,核对后导入:

bash 复制代码
obd mirror clone -y /data/ob-install/nonlse/*.rpm
obd mirror list local

**通过条件:**OBD 可用、镜像及依赖匹配、LSE 类型正确。已有镜像不清库。

**未通过:**补匹配依赖,不换 glibc 或用 --nodeps;env.sh 位置看安装输出。

步骤 5:填写 YAML

执行身份:obadmin。

obd cluster list 无同名部署,observer/data/redo 目录为空,才继续:

bash 复制代码
umask 077
vi /data/oceanbase/config/ob-single.yaml
chmod 600 /data/oceanbase/config/ob-single.yaml
yaml 复制代码
user:
  username: obadmin
  key_file: /data/obadmin/.ssh/id_ed25519
  port: 22

oceanbase-ce:
  version: 4.2.5.6
  servers:
    - name: ob1
      ip: 192.0.2.10
  global:
    home_path: /data/oceanbase/observer
    data_dir: /data/oceanbase/data
    redo_dir: /data/oceanbase/redo
    mysql_port: 2881
    rpc_port: 2882
    obshell_port: 2886
    zone: zone1
    cluster_id: 1
    memory_limit: 16G
    system_memory: 4G
    cpu_count: 8
    datafile_size: 64G
    datafile_next: 16G
    datafile_maxsize: 256G
    log_disk_size: 64G
    production_mode: false
    syslog_level: WARN
    enable_syslog_wf: false
    enable_syslog_recycle: true
    max_syslog_file_count: 20
    root_password: 'REPLACE_WITH_NEW_DB_PASSWORD'

**通过条件:**填实际 IP、版本和新 sys 密码;权限 600、目录可写。YAML 不展开变量。

**未通过:**修正配置和引号转义,不公开已填密码的文件。

步骤 6:部署、启动和检查集群

执行身份:obadmin;SQL 使用 root@sys。

bash 复制代码
obd cluster deploy ob-single -c /data/oceanbase/config/ob-single.yaml

deploy 成功且实际选包正确,再执行:

bash 复制代码
obd cluster start ob-single -S
obd cluster list

仅有已接受的实验共盘警告 且其他检查全通过时,才用 obd cluster start ob-single;不能用于绕过其他错误。

集群 running 后连接,交互输入 sys 密码:

bash 复制代码
MYSQL_HISTFILE=/dev/null obclient -h"$OB_IP" -P2881 \
  -u'root@sys' -p -Doceanbase -A
sql 复制代码
SELECT VERSION();
SELECT SVR_IP, STATUS, ZONE FROM oceanbase.DBA_OB_SERVERS;

**通过条件:**集群 running、版本正确、节点 ACTIVE、Zone 为 zone1;保留 SQL 会话。

**未通过:**查首条错误,不加 -f 或销毁重装;输出外发前脱敏。

步骤 7:创建业务租户

执行身份:当前 root@sys SQL 会话。

仅新集群维护窗口执行。先查门槛、资源与重名:

sql 复制代码
SELECT VALUE FROM oceanbase.GV$OB_PARAMETERS
WHERE NAME='__min_full_resource_pool_memory';
SELECT * FROM GV$OB_SERVERS;
SELECT NAME FROM DBA_OB_UNIT_CONFIGS WHERE NAME='app_unit';
SELECT NAME FROM DBA_OB_RESOURCE_POOLS WHERE NAME='app_pool';
SELECT TENANT_NAME FROM DBA_OB_TENANTS WHERE TENANT_NAME='app_tenant';

须无重名、内存门槛 ≤5G;按 CAPACITY-ASSIGNED 核对余量:内存 ≥5 GiB、日志盘 ≥16 GiB、CPU 下限/上限 ≥1/2。不足则停;门槛纯数字按字节读,5 GiB=5368709120,空结果不算通过。

满足后逐条执行,失败即停:

sql 复制代码
CREATE RESOURCE UNIT app_unit
  MEMORY_SIZE='5G', MAX_CPU=2, MIN_CPU=1, LOG_DISK_SIZE='16G';
CREATE RESOURCE POOL app_pool
  UNIT='app_unit', UNIT_NUM=1, ZONE_LIST=('zone1');
CREATE TENANT app_tenant
  RESOURCE_POOL_LIST=('app_pool'), PRIMARY_ZONE='zone1', LOCALITY='F@zone1'
  SET ob_compatibility_mode='mysql', ob_tcp_invited_nodes='127.0.0.1';
SELECT TENANT_NAME, STATUS FROM DBA_OB_TENANTS WHERE TENANT_NAME='app_tenant';

**通过条件:**租户 NORMAL;初始 root 空密码、仅限回环。立即做下一步,不对外开放。

**未通过:**查资源、Zone 和已建对象,不整段重跑或自动删除。

步骤 8:设置密码并验证读写

执行身份:obadmin;SQL 使用 root@app_tenant。

在 sys 执行 exit; 返回 shell,连接新租户:

bash 复制代码
MYSQL_HISTFILE=/dev/null obclient -h127.0.0.1 -P2881 -u'root@app_tenant' -A

受控会话中替换新密码后执行,不保存为脚本:

sql 复制代码
SET PASSWORD = PASSWORD('REPLACE_WITH_NEW_TENANT_PASSWORD');
exit;

此环境变量只关客户端历史,不关闭录屏或服务端审计。用新密码重新连接:

bash 复制代码
MYSQL_HISTFILE=/dev/null obclient -h127.0.0.1 -P2881 -u'root@app_tenant' -p -A

先查 SHOW DATABASES LIKE 'ob_deploy_verify';,无同名库再执行:

sql 复制代码
CREATE DATABASE ob_deploy_verify;
USE ob_deploy_verify;
CREATE TABLE connectivity_check (id BIGINT PRIMARY KEY, note VARCHAR(32));
INSERT INTO connectivity_check VALUES (1, 'created');
UPDATE connectivity_check SET note='updated' WHERE id=1;
SELECT id, note FROM connectivity_check WHERE id=1;

**通过条件:**新密码登录成功,最后返回 1 / updated,完成本机功能验收。

**未通过:**查失败语句,不删库表。业务接入另配最小权限账号和来源;自启、备份恢复未配置。

相关推荐
着迷不白44 分钟前
生产环境标准的Linux系统安装到服务器
linux·云计算
吹什么轩1 小时前
linux系统复习:进程优先级与O(1)调度
java·linux·算法
Gh0st_Lx1 小时前
【1】MySQL MVCC 与隔离级别
数据库·mysql·mvcc
ss2731 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 15 PostgreSQL子查询与嵌套查询(上)
数据库·人工智能·postgresql
syagain_zsx3 小时前
spdlog实战:日志分级、滚动与性能调优
linux·c++·日志库·二次开发日志库
这个DBA有点耶15 小时前
从症状到根因:数据库监控指标的分层方法与静态/动态阈值策略
数据库·mysql·代码规范
GeW15 小时前
新质生产力路线图Linux、数据库、国产化替代一次讲透
linux
SelectDB16 小时前
时间旅行与快照能力速查:Doris 侧三条落地路径
大数据·数据库·数据分析