在ARM64架构的CentOS7服务器上安装MySQL数据库是许多开发者会遇到的实际需求。不同于常见的x86架构,ARM平台下的软件安装往往会遇到更多依赖和兼容性问题。本文将详细记录在华为云鲲鹏ARM服务器上安装MySQL 5.7的全过程,包含从环境准备到最终配置的完整流程。
作为长期从事服务器运维的工程师,我发现ARM架构下的数据库安装主要有三个难点:依赖库的兼容性、系统服务的注册配置以及权限管理。本文将特别针对这些痛点提供解决方案,并分享我在实际部署中积累的调试经验。
首先需要确认操作系统版本和架构信息:
bash复制cat /etc/redhat-release # 查看CentOS版本
uname -m # 确认处理器架构
对于ARM64架构,输出应为aarch64。值得注意的是,华为云的鲲鹏处理器使用的就是这种架构,与常见的x86_64架构在软件兼容性上有显著差异。
CentOS7默认安装了MariaDB,这会导致与MySQL的冲突。彻底卸载步骤如下:
bash复制rpm -qa | grep mariadb # 查询已安装的mariadb包
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.aarch64 # 卸载查到的包
注意:如果系统中没有显示任何mariadb包,可以跳过此步骤。但在生产环境中,建议执行此检查以确保环境干净。
为MySQL创建独立的系统用户是安全运维的基本要求:
bash复制groupadd mysql
useradd -g mysql mysql
passwd mysql # 设置密码,建议使用复杂密码
这里有个实用技巧:通过id mysql命令可以验证用户是否创建成功,同时查看用户的GID和UID信息。
将MySQL安装在/usr/local目录是Linux系统的惯例做法:
bash复制cd /usr/local
wget https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.tar.gz
tar -xvf mysql-5.7.27-aarch64.tar.gz
mv mysql-5.7.27-aarch64 mysql
关键权限设置:
bash复制chown -R mysql:mysql /usr/local/mysql
mkdir /usr/local/mysql/data
chown mysql:mysql /usr/local/mysql/data
执行初始化命令前,需要确保/usr/local/mysql/bin在PATH环境变量中:
bash复制export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile
然后进行初始化:
bash复制mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
初始化完成后,注意记录控制台输出的临时root密码(通常在最后几行)。
ARM架构下常见的依赖问题及解决方案:
bash复制yum install libatomic -y
bash复制# 检查当前版本
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
# 安装新版GCC
yum groupinstall "Development Tools" -y
yum install glibc-static libstdc++-static -y
# 编译安装GCC(耗时较长)
tar -Jxvf gcc-13.2.0.tar.xz
cd gcc-13.2.0
./contrib/download_prerequisites
mkdir build
cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j4
make install
更新动态链接库:
bash复制cp /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/
rm -f /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6
编辑/etc/my.cnf,基础配置如下:
ini复制[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/logs/mysql-error.log
pid-file=/usr/local/mysql/mysql.pid
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
explicit_defaults_for_timestamp=true
将MySQL添加为系统服务:
bash复制cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
启动服务:
bash复制service mysqld start
首次登录后应立即修改root密码:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
建议的安全措施:
bash复制tail -100 /usr/local/mysql/logs/mysql-error.log
bash复制netstat -tlnp | grep 3306
bash复制sestatus
# 如为enforcing状态,可临时关闭
setenforce 0
ini复制innodb_buffer_pool_size = 2G # 建议为物理内存的50-70%
ini复制slow_query_log = 1
slow_query_log_file = /usr/local/mysql/logs/mysql-slow.log
long_query_time = 2
ini复制max_connections = 500
wait_timeout = 300
推荐使用mysqldump进行定期备份:
bash复制mysqldump -uroot -p --all-databases > /backup/mysql_all_$(date +%Y%m%d).sql
基础监控命令:
bash复制# 查看运行状态
mysqladmin -uroot -p status
# 查看进程列表
mysqladmin -uroot -p processlist
对于生产环境,建议配置Prometheus+Granfa监控体系,监控关键指标如:
ARM架构下升级MySQL需要特别注意:
我在实际运维中发现,ARM服务器上的MySQL性能表现与x86架构有细微差异,特别是在高并发场景下。建议在应用上线前进行充分的压力测试,根据实际业务特点调整参数配置。