1. 环境准备与系统检查
在ARM64架构的CentOS 7上安装MySQL 5.7前,需要先确认基础环境是否符合要求。不同于x86架构的标准安装流程,ARM平台需要特别注意软件包的兼容性问题。
1.1 系统架构确认
首先通过以下命令验证操作系统架构:
bash复制uname -m
正常应该输出aarch64(ARM64架构的Linux标准标识)。如果显示x86_64则说明系统运行在错误架构上。
注意:部分云服务商提供的CentOS 7 ARM镜像可能存在标识混淆问题,建议同时检查:
bash复制cat /proc/cpuinfo | grep model\ name典型ARM处理器会显示"ARMv8"或具体型号如"Kunpeng-920"
1.2 依赖库检查
MySQL 5.7在ARM64上需要以下关键依赖:
bash复制yum install -y libaio numactl-libs openssl
特别要注意的是,某些ARM环境可能缺少libatomic库,会导致后续安装失败。可提前安装:
bash复制yum install -y libatomic
1.3 SELinux与防火墙配置
临时关闭SELinux(生产环境需按需配置):
bash复制setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
开放MySQL默认端口:
bash复制firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. MySQL 5.7安装包获取
2.1 官方源与ARM兼容性
MySQL官方从5.7.31版本开始提供ARM64架构的二进制包。可以通过以下命令查看可用版本:
bash复制yum list available | grep mysql-community-server
如果官方源没有ARM版本,需要手动下载对应架构的RPM包:
bash复制wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-community-server-5.7.38-1.el7.aarch64.rpm
2.2 第三方源配置
对于国内用户,建议使用阿里云镜像源加速下载:
bash复制rpm -Uvh http://mirrors.aliyun.com/mysql/MySQL-5.7/mysql57-community-release-el7-11.noarch.rpm
sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/mysql-community.repo
sed -i 's/repo.mysql.com/mirrors.aliyun.com\/mysql/g' /etc/yum.repos.d/mysql-community.repo
3. 安装过程详解
3.1 RPM包安装步骤
对于手动下载的RPM包,按顺序执行安装:
bash复制rpm -ivh mysql-community-common-5.7*.rpm
rpm -ivh mysql-community-libs-5.7*.rpm
rpm -ivh mysql-community-client-5.7*.rpm
rpm -ivh mysql-community-server-5.7*.rpm
常见问题:如果遇到
libcrypto.so.10缺失错误,需安装兼容包:bash复制yum install -y compat-openssl10
3.2 数据库初始化
首次启动前必须进行初始化:
bash复制mysqld --initialize --user=mysql
该命令会在/var/log/mysqld.log中生成临时root密码,务必记录:
bash复制grep 'temporary password' /var/log/mysqld.log
3.3 服务启动与验证
启动MySQL服务:
bash复制systemctl start mysqld
systemctl enable mysqld
验证安装是否成功:
bash复制mysql --version
mysqladmin -u root -p version
4. 安全配置与优化
4.1 密码策略修改
首次登录后立即修改root密码:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
如果密码强度要求过高,可临时调整策略:
sql复制SET GLOBAL validate_password_policy=LOW;
4.2 字符集配置
修改/etc/my.cnf文件,在[mysqld]段添加:
ini复制character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
4.3 ARM架构专属优化
针对ARM64架构特有的优化参数:
ini复制[mysqld]
innodb_flush_neighbors=0
innodb_io_capacity=200
innodb_use_native_aio=1
5. 常见问题排查
5.1 启动失败排查
查看错误日志定位问题:
bash复制journalctl -xe
tail -100 /var/log/mysqld.log
常见错误解决方案:
- libnuma.so.1缺失:
yum install numactl - 内存不足:修改/etc/my.cnf中的
innodb_buffer_pool_size为适当值 - 权限问题:
chown -R mysql:mysql /var/lib/mysql
5.2 性能调优建议
针对ARM架构的专用优化:
- 关闭NUMA:在/etc/grub.conf添加
numa=off - 调整调度器:
echo deadline > /sys/block/sda/queue/scheduler - 禁用透明大页:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
6. 生产环境部署建议
6.1 高可用方案选择
ARM架构下推荐的高可用方案:
- 主从复制:配置简单,资源消耗低
- Galera Cluster:适合需要强一致性的场景
- MySQL Router:官方推荐的中间件方案
6.2 监控配置
建议部署的监控项:
- CPU使用率(ARM核心可能具有不同调度特性)
- 内存交换频率(ARM服务器常见性能瓶颈)
- 磁盘IO延迟(特别是使用NVMe存储时)
配置示例:
bash复制yum install -y sysstat
iostat -dx 5
vmstat 5
6.3 备份策略
ARM环境下的备份注意事项:
- 使用
mysqldump时添加--single-transaction参数 - 物理备份建议使用Percona XtraBackup的ARM专用版本
- 定期验证备份文件的完整性
7. 版本升级与迁移
7.1 从x86迁移到ARM
数据迁移步骤:
- 在x86服务器上执行
mysqldump --all-databases > backup.sql - 传输备份文件到ARM服务器
- 导入前确保字符集一致
- 使用
mysql_upgrade检查兼容性
7.2 版本升级路径
ARM架构下的推荐升级顺序:
- 5.7.28 → 5.7.38(最后一个完全兼容的ARM版本)
- 考虑迁移到MySQL 8.0的ARM优化版本
升级前务必:
sql复制SELECT @@version;
SHOW ENGINE INNODB STATUS;
8. 性能基准测试
8.1 ARM与x86性能对比
使用sysbench进行基本测试:
bash复制sysbench oltp_read_write --db-driver=mysql --mysql-host=localhost \
--mysql-user=root --mysql-password=密码 --mysql-db=sbtest \
--tables=10 --table-size=10000 prepare
典型性能差异:
- 整数运算:ARM64比x86慢15-20%
- 内存访问:ARM64延迟更高但带宽更大
- 并发连接:ARM核心多的优势明显
8.2 参数调优前后对比
优化前后的关键指标变化示例:
| 测试项 | 默认配置 | 优化后 | 提升幅度 |
|---|---|---|---|
| QPS | 1250 | 1870 | 49.6% |
| 平均延迟 | 12.3ms | 8.2ms | 33.3% |
| 95%延迟 | 28ms | 15ms | 46.4% |
9. 容器化部署方案
9.1 Docker部署
使用官方ARM64镜像:
bash复制docker run --name mysql57 \
-e MYSQL_ROOT_PASSWORD=密码 \
-v /data/mysql:/var/lib/mysql \
-p 3306:3306 \
-d mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
9.2 Kubernetes部署
示例StatefulSet配置片段:
yaml复制containers:
- name: mysql
image: mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "密码"
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-data
10. 安全加固措施
10.1 最小权限配置
创建应用专用账户:
sql复制CREATE USER 'appuser'@'%' IDENTIFIED BY '复杂密码';
GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'appuser'@'%';
10.2 审计日志配置
安装审计插件:
sql复制INSTALL PLUGIN audit_log SONAME 'audit_log.so';
配置/etc/my.cnf:
ini复制[mysqld]
audit_log_format=JSON
audit_log_file=/var/log/mysql_audit.log
10.3 SSL连接配置
生成证书并配置:
bash复制openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem
在my.cnf中添加:
ini复制[mysqld]
ssl-ca=/etc/mysql/ca.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
