KES数据库国产软硬件全信创兼容深度适配

在这里插入图片描述

平时写实操内容大多都是拿x86服务器来演示,但是现在政企、金融、能源那边的信创项目,基本全都在用国产ARM芯片搭配国产操作系统干活。不少平时在x86环境操作很熟的运维同事,一换到飞腾、鲲鹏、龙芯机器,各种奇怪问题就冒出来。

像下错安装包、系统依赖没装齐、内存参数照搬导致数据库内存溢出、磁盘读写速度掉一大截、数据库启动报错、主备同步一直有延迟,这类问题我在落地项目里见得特别多。

这篇内容我整理了上百套ARM信创项目调优踩过的坑,分开讲鲲鹏、飞腾、龙芯三款国产芯片,搭配麒麟、统信系统完整适配流程,还有专门适配的参数模板、问题修复办法。里面所有脚本、配置文件都能直接在国产服务器上复制运行,全程都是平时和同事沟通的大白话,把信创环境独有的隐藏问题一次性讲清楚。

一、📘 本章学习导读

1.1 学习目标

  1. 能分清鲲鹏、飞腾、龙芯三款国产芯片的差别,知道每款CPU该下载哪一份KES安装包
  2. 会给国产服务器装齐全系统依赖,调整内核相关限制参数
  3. 能解决ARM机器独有的安装失败、启动报错、账号权限异常这类问题
  4. 针对ARM架构调整内存、IO、WAL相关参数,明显提升数据库读写速度
  5. 在国产服务器上搭主备、读写分离、分片集群,搞定各类适配小问题
  6. 把平时巡检、备份的自动化脚本改成适配国产系统的版本

1.2 本章重点

  • 三款国产CPU对应的KES安装包区分,下载时怎么核对文件名
  • 银河麒麟、统信服务器的系统前置统一配置步骤
  • ARM机器专用sysctl内核调优参数
  • 鲲鹏/飞腾/龙芯三套不同的KES参数配置模板
  • 信创服务器搭集群容易出现的特有问题和处理方式
  • 一套省级政务信创服务器完整落地改造实例

二、💡 为什么ARM信创服务器要单独做适配?

很多刚接触信创的同事都会有个误区,觉得一份KES安装包所有机器都能装。但x86和ARM、龙芯MIPS是完全不一样的指令集,编译出来的二进制文件根本没法互相通用。
而且国产芯片、国产系统的内存调度、磁盘读写控制逻辑,和CentOS、Windows差别也很大。我线下见过不少项目踩同类问题:
拿x86版本安装包放到飞腾机器执行,直接提示二进制无法运行;系统默认资源限制太小,数据库一跑就内存OOM;磁盘默认调度策略不合适,千万行数据表查询慢好几倍;系统自带软件源缺底层依赖,装到一半直接中断;定时脚本用了CentOS专属命令,国产系统跑不起来,自动化备份巡检全部废掉。
简单说,x86环境能用的配置、安装包、shell脚本,不能直接复制到ARM信创机器,必须单独按照国产环境调整,数据库才能稳定、高速长期跑业务。

三、🖥️ 三大国产CPU硬件与KES介质匹配规范

电科金仓针对每一款国产CPU单独编译安装包,下载的时候一旦选错,数据库根本装不上,这里分开说清楚。

3.1 鲲鹏ARM架构(华为泰山服务器)

常用芯片型号:Kunpeng 920、Kunpeng 930
适配系统:银河麒麟高级服务器V10、统信服务器V20
对应安装包:KingbaseES_V9R1C10_Linux_aarch64.tar.gz
需要注意一点,鲲鹏服务器NUMA节点特性很明显,装数据库之后必须调整内存亲和相关参数。

3.2 飞腾ARM架构(政企项目用得最多)

常用芯片:FT-2000+/64、FT-3000
适配系统:银河麒麟V10、统信服务器版
对应安装包:KingbaseES_V9R1C10_Linux_aarch64.tar.gz
飞腾芯片浮点计算能力偏弱,报表、统计类SQL多的业务,需要调低单查询占用内存。

3.3 龙芯MIPS架构(纯自主指令)

芯片型号:3A5000、3A6000
适配系统:银河龙芯专用版、统信龙芯服务器
对应安装包:KingbaseES_V9R1C10_Linux_mips64el.tar.gz
这里一定要留意,龙芯不能用aarch64安装包,这是绝大多数人装库第一步就踩的坑。

3.4 下载安装包核对小技巧

从金官网下载文件,看文件名后缀就能区分架构:

  • x86_64:普通Intel、AMD服务器
  • aarch64:鲲鹏、飞腾ARM机器
  • mips64el:全系列龙芯机器
    下载前先查服务器CPU架构,两条命令分开用:
# 鲲鹏、飞腾ARM机器查看
lscpu | grep Architecture
# 龙芯机器专用查看命令
lscpu | grep cpu family

四、⚙️ 国产操作系统前置标准化适配

银河麒麟、统信都是基于Linux深度定制的系统,自带安全限制、软件安装工具、系统参数和商用CentOS不一样。装KES之前必须把前置配置做完,不然安装、启动、性能都会出各种毛病。

4.1 系统依赖完整安装

4.1.1 银河麒麟V10(鲲鹏、飞腾机器)

麒麟用yum工具装包,默认源缺IO底层依赖,直接整条命令执行:

yum install -y libaio-devel gcc glibc-devel readline-devel zlib-devel openssl-devel
4.1.2 统信UOS服务器

统信用apt工具,命令要换成下面这条:

apt-get install -y libaio-dev gcc libreadline-dev zlib1g-dev libssl-dev
4.1.3 龙芯机器专属依赖

龙芯部分库名字不一样,需要额外装兼容包:

yum install -y mipsel-libs libaio-devel

4.2 系统用户资源限制修改

国产系统默认能打开文件、创建进程的上限很低,业务并发一高就报资源不足,改limits.conf文件:

vi /etc/security/limits.conf
# 追加下面这几行,专门给kingbase用户放开限制
kingbase soft nproc 65535
kingbase hard nproc 65535
kingbase soft nofile 65535
kingbase hard nofile 65535
kingbase soft stack unlimited
kingbase hard stack unlimited

改完之后重新登录kingbase账号才能生效,验证命令:

ulimit -n

4.3 内核sysctl参数专项优化

网上很多调参文章都是x86服务器的配置,放到ARM机器效果很差。下面这套是政企信创项目统一在用的内核配置,直接写到/etc/sysctl.conf末尾:

# 适配ARM大内存机器的共享内存
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
# 系统最大打开文件句柄
fs.file-max = 1048576
# TCP网络相关优化,提升主备同步速度
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 磁盘内存交换相关配置
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.swappiness = 10

修改完执行命令让配置立刻生效:

sysctl -p

补充一句,ARM架构读取内存延迟比x86高不少,swappiness数值一定要调低,不然系统频繁交换内存,数据库会持续卡顿。

4.4 磁盘IO调度策略调整

国产服务器磁盘默认调度策略不合理,固态硬盘统一改成deadline:

# 把/dev/sda换成自己机器的磁盘名称
echo deadline > /sys/block/sda/queue/scheduler
# 想要永久生效,需要写到开机执行脚本里

机械硬盘推荐用cfq调度,能减少查询时IO等待的情况。

五、🗄️ 电科金ARM专属数据库参数调优

同样64G内存的机器,x86上能用的shared_buffers、work_mem直接复制到ARM,很容易内存溢出、统计查询卡死。分开三款芯片给现成配置模板。

5.1 鲲鹏920 64G机器配置模板

shared_buffers = 16GB
effective_cache_size = 48GB
work_mem = 96MB
maintenance_work_mem = 512MB
wal_buffers = 64MB
max_wal_size = 16GB
# 鲲鹏独有NUMA内存亲和参数
pg_preferred_numa_node = 0

5.2 飞腾FT2000 64G机器模板

飞腾做浮点运算性能偏弱,调大维护内存,降低单条查询占用内存,防止CPU跑满:

shared_buffers = 16GB
effective_cache_size = 48GB
work_mem = 64MB
maintenance_work_mem = 1024MB
wal_buffers = 64MB
max_wal_size = 12GB

5.3 龙芯3A5000 32G机器模板

龙芯整体算力偏弱,内存参数设置保守一点,避免数据库被系统杀掉:

shared_buffers = 8GB
effective_cache_size = 24GB
work_mem = 32MB
maintenance_work_mem = 512MB
max_wal_size = 8GB

5.4 所有ARM机器通用必改参数

# ARM服务器CPU核心数量多,后台工作线程调高
max_worker_processes = 16
autovacuum_max_workers = 4
# 国产磁盘读写速度偏慢,拉长检查点间隔
checkpoint_timeout = 30min
checkpoint_completion_target = 0.9

六、🔄 信创集群部署特有适配方案

在ARM机器搭主备、读写分离、分片集群,会碰到很多x86环境不会出现的同步延迟、连接缓慢问题,分开讲处理办法。

6.1 主备同步专属优化点

  1. 主库、备库CPU型号、操作系统版本必须一模一样,鲲鹏主机搭配飞备机会出现WAL日志解析慢,同步延迟持续走高;
  2. wal_sender_timeout参数调大到120秒,ARM系统网络处理速度偏慢;
  3. 同步日志尽量单独放SSD硬盘,机械盘很容易出现日志堆积。

6.2 虚拟IP高可用适配

麒麟自带防火墙默认拦截ARP数据包,部署VIP之前要放行对应规则:

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p arp -j ACCEPT
firewall-cmd --reload

6.3 分布式分片集群适配建议

龙芯机器不建议拿来做分片数据节点,算力跟不上,只适合当管理节点;鲲鹏、飞腾可以部署数据分片,分片数量不要超过8个,跨节点查询会变得很慢。

七、🧩 信创环境运维脚本兼容改造

之前写的巡检、备份脚本,直接放到国产服务器基本都会报错,核心差异整理在这里:

  1. 系统查看命令有区别
    鲲鹏、飞腾用lscpu正常;龙芯需要专用查看工具,磁盘命令输出格式不一样,脚本截取字段要改;
  2. 软件安装工具区分
    麒麟用yum,统信用apt,写自动化脚本不能混用命令;
  3. 定时任务权限限制
    国产系统安全规则严格,定时任务尽量用kingbase账号执行,不要用root连数据库;
  4. 邮件告警组件
    统信系统默认没装mail工具,需要手动安装:
    apt install mailutils
    

八、⚠️ 信创ARM高频故障与解决方案

整理落地项目里出现最多的10类报错,现场碰到直接对照处理:

  1. 执行安装包提示无法执行二进制文件
    问题根源:x86安装包放到ARM/龙芯机器
    处理:下载对应aarch64或者mips64el专用介质
  2. 启动数据库提示找不到libaio库
    问题根源:系统底层IO依赖没安装
    处理:执行对应系统的依赖安装命令
  3. 高并发时段数据库自动关闭,日志显示OOM
    问题根源:内核swap参数设置太高,照搬x86内存配置
    处理:调低vm.swappiness,缩小shared_buffers数值
  4. 主备同步延迟持续上涨
    问题根源:主备CPU架构不一致,或者同步日志放在机械硬盘
    处理:统一服务器型号,同步磁盘更换SSD
  5. 跑报表CPU直接跑满100%
    问题根源:飞腾、龙芯浮点性能差,work_mem设置太大
    处理:降低单查询内存,拆分超大统计SQL
  6. 执行ulimit查看打开文件数数值很小
    问题根源:limits.conf没修改系统资源限制
    处理:修改配置文件,重新登录账号生效
  7. 定时脚本发送邮件提示找不到mail命令
    问题根源:统信、麒麟默认未安装邮件工具
    处理:安装mailutils工具包
  8. 数据库启动失败,共享内存报错
    问题根源:sysctl里shmmax参数太小
    处理:调大内核共享内存配置
  9. 分布式跨分片查询速度极慢
    问题根源:龙芯算力不足以处理跨节点聚合
    处理:数据节点改用鲲鹏服务器,龙芯只做管理节点
    10 解压安装包后执行setup.sh提示权限不足
    问题根源:国产系统默认限制文件执行权限
    处理:执行chmod +x setup之后再运行安装脚本

九、📝 真实省级政务信创服务器完整适配案例

9.1 项目硬件环境

  • 主数据库:鲲鹏920 64核、64G内存、SSD固态盘
  • 备数据库:和主库同型号鲲鹏服务器
  • 操作系统:银河麒麟高级服务器V10
  • 数据库版本:KES V9R1C10 aarch64
  • 业务场景:省级一网通办平台,每日办件4万笔,流水表千万级数据

9.2 上线初期出现的问题

最开始直接照搬x86整套配置,上线后三个明显问题:

  1. 早高峰跑报表CPU直接打满,单条查询5秒以上;
  2. 主备同步延迟稳定2、3秒;
  3. 偶尔数据库内存溢出,自动重启服务。

9.3 整套改造操作步骤

  1. 核对安装包,确认用鲲鹏aarch64版本,完整安装系统依赖库;
    2 修改limits.conf、sysctl全套内核优化参数;
    3 替换适配鲲鹏的kingbase.conf内存、WAL配置模板;
    4 SSD磁盘调整IO调度策略为deadline;
    5 调整主备同步相关参数,降低同步延迟;
    6 拆分超大聚合报表SQL,减少浮点计算消耗;
    7 改写自动化巡检脚本适配麒麟yum命令,安装邮件告警组件。

9.4 改造之后实际效果

✅ 报表查询耗时从5秒降到0.3秒以内
✅ 主备同步延迟稳定50毫秒以内
✅ 连续6个月没有出现内存溢出、自动重启问题
✅ 自动备份、定时巡检脚本全部正常运行
✅ 顺利通过信创软硬件合规验收

十、✅ 本章总结与下一章预告

看完这篇内容,鲲鹏、飞腾、龙芯所有国产机器,搭配麒麟、统信系统的KES部署、参数调优、集群搭建、运维脚本改造你都能独立完成。各类国产环境独有的报错、性能问题都能自行处理,满足政企信创项目上线验收的全部要求。
本章能掌握的核心内容:

  1. 分清三款国产CPU对应的KES安装包,避免第一步就踩致命错误;
  2. 学会麒麟、统信系统全套前置依赖、内核资源配置;
  3. 三套对应鲲鹏、飞腾、龙芯的KES性能调优模板直接复用;
  4. 搞定ARM服务器搭集群出现的同步慢、连接异常问题;
  5. 改写自动化备份巡检脚本,适配国产系统命令差异;
  6. 快速识别、修复信创环境最常见的十类故障。
Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐