1. 项目概述
在国产化替代和信创产业快速发展的背景下,ARM架构服务器正逐步成为企业级应用的新选择。不同于传统的x86环境,ARM64架构的软件生态存在一些特殊考量。今天我将分享在CentOS7(ARM64版)上安装MySQL5.7的完整实践,这个组合特别适合需要在国产ARM服务器上部署数据库的场景。
选择MySQL5.7而非更新的8.0版本,主要考虑到企业环境的版本兼容性和稳定性需求。5.7版本作为长期支持版(LTS),在功能完备性和社区支持方面都有保障。而CentOS7作为经典的企业级Linux发行版,其稳定性和广泛的文档支持也是重要考量因素。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备
2.1 系统基础配置
首先确认你的ARM64服务器已安装CentOS7操作系统。通过以下命令检查系统架构:
bash复制uname -m
正常应显示aarch64(ARM64的Linux内核标识)。如果显示x86_64则说明跑在了错误架构上。
注意:市面上存在一些通过二进制转译运行的"伪ARM"环境,这类环境运行MySQL可能出现性能问题。建议在物理ARM服务器或支持ARM虚拟化的云主机上操作。
2.2 依赖库安装
ARM架构下的软件依赖与x86有所不同,需要特别注意:
bash复制yum install -y libaio numactl
这两个库分别是MySQL运行必需的异步IO支持和NUMA架构支持。在ARM平台上,缺少这些依赖可能导致数据库性能下降或直接启动失败。
2.3 防火墙和SELinux配置
企业环境中通常需要调整安全策略:
bash复制systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
这些操作会关闭防火墙并禁用SELinux,适合测试环境。生产环境建议配置精细的防火墙规则而非完全关闭。
3. MySQL安装步骤
3.1 获取ARM专用安装包
MySQL官方为ARM架构提供了专门的二进制包,通过wget下载:
bash复制wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-aarch64.tar.gz
如果下载速度慢,可以使用国内镜像:
bash复制wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-aarch64.tar.gz
关键点:必须确认下载的是
aarch64版本,x86的包无法在ARM架构运行。某些镜像站可能没有ARM版本,此时需要回官方源下载。
3.2 解压与目录准备
创建MySQL专用目录并解压:
bash复制tar -zxvf mysql-5.7.38-linux-glibc2.12-aarch64.tar.gz -C /usr/local/
cd /usr/local && ln -s mysql-5.7.38-linux-glibc2.12-aarch64 mysql
这种通过符号链接管理版本的方式,方便后续升级时切换版本。
3.3 创建MySQL用户和组
为安全考虑,MySQL不应以root身份运行:
bash复制groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql
4. 数据库初始化
4.1 初始化数据目录
创建数据存储目录并初始化:
bash复制mkdir -p /data/mysql
chown mysql:mysql /data/mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
初始化过程会生成临时root密码,务必记录下来,格式类似:
code复制[Note] A temporary password is generated for root@localhost: Jqklt9z!sK*l
4.2 配置文件优化
创建/etc/my.cnf配置文件,针对ARM架构优化:
ini复制[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# ARM架构特有优化
innodb_buffer_pool_size=1G
innodb_flush_method=O_DIRECT
innodb_io_capacity=2000
innodb_use_native_aio=1
经验之谈:ARM服务器的IO特性与x86不同,建议将
innodb_io_capacity设为物理内存的1/4到1/2,并启用原生异步IO。
5. 启动与配置MySQL
5.1 设置系统服务
创建systemd服务文件/etc/systemd/system/mysqld.service:
ini复制[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
然后执行:
bash复制systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld
5.2 安全加固与远程访问
修改root密码并创建管理用户:
bash复制/usr/local/mysql/bin/mysql_secure_installation
如需允许远程连接:
sql复制CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
6. 常见问题排查
6.1 启动失败排查
如果MySQL无法启动,按顺序检查:
- 查看错误日志:
cat /data/mysql/error.log - 检查目录权限:
ls -ld /data/mysql - 确认依赖完整:
ldd /usr/local/mysql/bin/mysqld
常见错误解决方案:
error while loading shared libraries: libnuma.so.1:执行yum install numactlInnoDB: Operating system error number 13:检查SELinux状态和数据目录权限
6.2 性能优化建议
针对ARM架构的特别优化:
- 调整InnoDB缓冲池大小:不超过物理内存的70%
- 启用大页支持:在my.cnf中添加
large-pages - 监控CPU使用:ARM多核调度策略与x86不同,建议使用
mpstat -P ALL 1观察核心负载
7. 备份与维护
7.1 自动化备份配置
使用mysqldump创建每日备份脚本/usr/local/bin/mysql_backup.sh:
bash复制#!/bin/bash
DATE=$(date +%Y%m%d)
/usr/local/mysql/bin/mysqldump -uroot -pYourPassword --all-databases | gzip > /backup/mysql_${DATE}.sql.gz
find /backup -name "mysql_*.sql.gz" -mtime +7 -delete
设置定时任务:
bash复制chmod +x /usr/local/bin/mysql_backup.sh
echo "0 2 * * * root /usr/local/bin/mysql_backup.sh" > /etc/cron.d/mysqlbackup
7.2 日常维护命令
常用维护命令集合:
- 查看运行状态:
systemctl status mysqld - 实时监控:
/usr/local/mysql/bin/mysqladmin -uroot -p processlist - 空间检查:
/usr/local/mysql/bin/mysql -uroot -p -e "SELECT table_schema, sum(data_length)/1024/1024 as MB FROM information_schema.tables GROUP BY table_schema;"
在国产化替代的大背景下,ARM架构服务器搭配CentOS7和MySQL5.7的组合,既满足了信创要求,又保证了企业级应用的稳定性。我在多个金融和政务项目中采用此方案,最大的体会是:ARM平台上的MySQL需要更精细的内存和IO配置,合理调参后性能完全不输x86平台。
