最近帮客户在鲲鹏920的ARM64服务器上部署一套老业务系统,业务方明确指定要用CentOS 7和MySQL 5.7。CentOS 7装MySQL 5.7这个操作放在x86_64平台上,闭着眼都能敲完,但换成ARM64(aarch64)之后,情况完全不一样了:网上的教程十篇有九篇是Intel平台的,下载链接默认给x86_64包,照着一路执行下去,不是报"Wrong architecture"就是初始化直接起不来。这篇文章把我在这类环境上反复踩坑后沉淀下来的完整流程写出来,包括架构确认、依赖处理、yum源配置、安装、数据初始化、远程访问配置,以及ARM64环境特有的故障排查方法,适合正在给鲲鹏、飞腾或其他ARM云主机部署MySQL 5.7的同学直接照着做。
1. 为什么在ARM64上装MySQL 5.7,照着x86_64教程会翻车
1.1 架构不匹配不是小问题
搜索"CentOS7 安装 MySQL 5.7",出来的教程大部分流程差不多:下载mysql57-community-release-el7.rpm,然后yum install mysql-community-server。这个流程在x86_64机器上没毛病,但很多教程不会单独区分系统是x86_64还是aarch64。你拿着同样的命令到ARM服务器上执行,yum会尝试安装与当前机器架构匹配的包,而如果你从浏览器里手动下载rpm包,很容易拿成x86_64版本,rpm -ivh直接给你一行提示:package mysql-community-server-5.7.44-1.el7.x86_64 is for a different architecture。
这个报错本身不可怕,可怕的是你会反复确认自己的操作是不是有问题,最后发现是下载源的问题。所以这篇文章一开始我就强调:所有下载路径、repo配置、rpm包选择,都要盯着aarch64字样看一眼。这不是小事,后面第5章里还会展开讲。
1.2 ARM64下MySQL 5.7的支持边界
MySQL官方对ARM64(aarch64)的支持从5.7后期开始逐步完善,社区版提供了针对aarch64的rpm包和解压版tar包。只要你的CentOS 7本身是ARM版本,并且glibc版本满足要求,安装MySQL 5.7没有本质障碍。CentOS 7的glibc是2.17,MySQL 5.7的通用二进制包要求glibc 2.12以上,所以这一项不用纠结。
需要注意一点:MySQL 5.7系列的最终版本是5.7.44。考虑到早期版本在ARM64上的兼容性测试不如后期版本充分,我建议直接选5.7.44,不要用5.7.20到5.7.30之间的旧版本。后面给出的下载方式也都围绕这个版本展开。
1.3 本文适用的环境范围
这篇文章里的操作流程,适用于以下环境:
- 操作系统:CentOS 7.6及以上ARM64版本,或者华为云鲲鹏云主机、飞腾服务器这类aarch64平台
- MySQL版本:5.7.44社区版
- 系统权限:root用户,或者具备sudo权限的普通用户
- 网络要求:可以访问国内yum源或MySQL官方源;离线环境请直接走RPM Bundle方式
如果你是x86_64的普通服务器,架构确认和部分报错排查可以跳过,但依赖处理和初始化流程依然通用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手前的环境盘查:架构、依赖和yum源,缺一个都装不安稳
2.1 先用三条命令确认系统底细
不要上来就敲安装命令。花一分钟把环境信息拿准,后面能省掉很多麻烦:
code复制uname -m
cat /etc/redhat-release
第一条输出aarch64说明是ARM64架构,输出x86_64说明是Intel/AMD平台。第二条输出CentOS release 7.x,确认系统大版本。
再配合hostnamectl看完整信息:
code复制hostnamectl
输出里Architecture字段明确显示aarch64,Operating System显示CentOS Linux 7 (Core)。建议把这条命令的输出截图保存下来,后面排查问题时对比用。
2.2 libaio和numactl-libs:两个必装依赖
MySQL的InnoDB存储引擎依赖libaio做异步I/O,rpm安装过程本身不一定自动补这个依赖,所以经常出现MySQL服务启动时提示libaio.so.1找不到的情况。提前把它装上可以省掉一次排障:
code复制yum install -y libaio numactl-libs
numactl-libs解决NUMA内存分配策略的依赖,在双路ARM服务器上比较常见,装上有备无患。实测下来,这两步做完之后,第5章里讲到的两个经典启动故障基本就不会再遇到了。
2.3 替换CentOS 7源:AltArch源和常用镜像
CentOS 7官方源已经停止维护,默认的mirrorlist地址会失效。如果你直接执行yum install,很可能卡在"Could not retrieve mirrorlist"这一步。所以先把yum源替换成可用的国内源。
ARM64的CentOS 7源和x86_64不在同一个目录,CentOS官方把ARM版本叫AltArch。以华为云镜像为例,可以这样配置:
code复制mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
cat > /etc/yum.repos.d/CentOS-ARM.repo << 'EOF'
[base]
name=CentOS-7 - Base
baseurl=https://mirrors.huaweicloud.com/centos-altarch/7/os/aarch64/
gpgcheck=0
enabled=1
[updates]
name=CentOS-7 - Updates
baseurl=https://mirrors.huaweicloud.com/centos-altarch/7/updates/aarch64/
gpgcheck=0
enabled=1
[extras]
name=CentOS-7 - Extras
baseurl=https://mirrors.huaweicloud.com/centos-altarch/7/extras/aarch64/
gpgcheck=0
enabled=1
EOF
yum clean all && yum makecache
实际操作时,如果你拿到的云服务器已经预置了可用源,这一步可以跳过;等到yum install开始报错,再回来看这里。gpgcheck=0是为了内网部署的稳定性直接关掉了,如果你对安全性要求高,可以加上官方GPG key并开启校验,但很多内网镜像源本身已经做过校验,这一步不是必须的。
2.4 顺手确认SELinux与防火墙状态
SELinux在CentOS 7默认是enforcing,如果后面远程连接出问题,很可能和它有关。先记录当前状态:
code复制getenforce
systemctl status firewalld
如果想快速验证MySQL能不能跑通,可以临时执行setenforce 0关掉SELinux,但生产环境不建议永久关闭。防火墙先不用动,等配置完3306端口放行之后再看。
3. 两种安装路线:官方仓库一条龙,还是离线Bundle兜底
3.1 官方Yum仓库安装的具体操作
从MySQL官方下载release rpm包。这个包本身是noarch,和架构无关,所以x86_64和aarch64通用:
code复制wget https://repo.mysql.com/mysql57-community-release-el7.rpm
rpm -ivh mysql57-community-release-el7.rpm
装完这个release包之后,系统里会多出mysql57-community的yum源配置,接着直接执行:
code复制yum install -y mysql-community-server
yum会根据当前机器架构自动选择aarch64版本的mysql-community-server、client、libs、common,这是最省心的一条路。
如果你的服务器访问repo.mysql.com速度很慢,可以检查一下/etc/yum.repos.d/mysql-community.repo里对应5.7源的那段配置,把baseurl改成国内可达的镜像源地址。不过镜像源是否提供MySQL 5.7的aarch64仓库要看具体服务商,临时方案可以走下面的离线Bundle方式兜底。
3.2 RPM Bundle离线安装:适合内网和慢网
有些运维环境不允许服务器直接访问外网,或者官方源不稳定,这种情况推荐去MySQL官方下载rpm-bundle包:
code复制wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-1.el7.aarch64.rpm-bundle.tar
如果这个直链地址已经失效,可以打开MySQL官方归档下载页面,Product Version选5.7.44,Operating System选Linux - Generic,然后在文件列表里找带aarch64的rpm-bundle包,文件名通常形如mysql-5.7.44-1.el7.aarch64.rpm-bundle.tar。
下载后解压:
code复制tar xvf mysql-5.7.44-1.el7.aarch64.rpm-bundle.tar
ls *.rpm
然后统一安装:
code复制yum localinstall -y mysql-community-*.rpm
这里
