1. ARM架构下MySQL 5.7安装全攻略
在ARM64架构的CentOS 7服务器上部署MySQL数据库,与传统的x86环境存在不少差异。最近我在一台华为鲲鹏处理器的服务器上配置MySQL 5.7时,遇到了各种依赖问题和环境配置挑战。本文将详细记录整个安装过程,包括那些官方文档没提到的坑和解决方案。
2. 环境准备与前置检查
2.1 系统环境确认
首先确认你的CentOS 7系统运行在ARM64架构上:
bash复制uname -m
如果输出是aarch64,说明系统是ARM64架构。同时检查系统版本:
bash复制cat /etc/redhat-release
2.2 清理现有MariaDB
CentOS 7默认安装了MariaDB,可能与MySQL产生冲突。执行以下命令检查并卸载:
bash复制rpm -qa | grep mariadb
如果查询到mariadb相关包,使用以下命令彻底卸载:
bash复制rpm -e --nodeps mariadb-libs-5.5.68-1.el7.aarch64
注意:卸载MariaDB前请确认没有重要数据,否则需要先备份
3. 用户与目录准备
3.1 创建专用用户
为MySQL创建专用用户和用户组能提高安全性:
bash复制groupadd mysql
useradd -g mysql mysql
passwd mysql # 设置密码,如12345678
3.2 准备安装目录
MySQL将安装在/usr/local目录下:
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/
chgrp -R mysql mysql/
cd mysql
mkdir data
chown -R mysql:mysql data
4. 安装MySQL 5.7
4.1 初始化数据库
执行初始化命令:
bash复制./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
初始化完成后,注意记录输出的临时root密码(红线标记部分)。
4.2 常见问题解决
问题1:命令未找到
如果出现mysqld: command not found,需要配置环境变量:
bash复制vi /etc/profile
在文件末尾添加:
bash复制export PATH=$PATH:/usr/local/mysql/bin
然后使配置生效:
bash复制source /etc/profile
问题2:缺少libatomic库
报错信息中提示缺少libatomic时:
bash复制yum install libatomic -y
问题3:GLIBCXX版本过低
这是ARM架构下最常见的问题,解决方案:
- 检查当前GLIBCXX版本:
bash复制strings /usr/lib64/libstdc++.so.6 | grep GLIBC
- 安装新版GCC编译器(以gcc-13.2.0为例):
bash复制yum groupinstall "Development Tools" -y
yum install glibc-static libstdc++-static -y
wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz
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 -j$(nproc)
make install
- 更新动态链接库:
bash复制find / -name "libstdc++.so*"
cp /usr/local/lib64/libstdc++.so.6.0.30 /usr/lib64/
cd /usr/lib64
rm -f libstdc++.so.6
ln -s libstdc++.so.6.0.30 libstdc++.so.6
5. 配置MySQL服务
5.1 基础配置
复制启动脚本并设置权限:
bash复制cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
修改配置文件/usr/local/mysql/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
5.2 日志文件配置
创建日志目录和文件:
bash复制mkdir /usr/local/mysql/logs
touch /usr/local/mysql/logs/mysql-error.log
chown -R mysql:mysql /usr/local/mysql/logs
6. 启动与安全设置
6.1 启动MySQL服务
bash复制/etc/init.d/mysqld start
检查服务状态:
bash复制/etc/init.d/mysqld status
6.2 修改root密码
使用初始化时生成的临时密码登录:
bash复制mysql -uroot -p
登录后立即修改密码:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;
6.3 设置开机自启
bash复制cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
验证设置:
bash复制chkconfig --list mysqld
7. 高级配置与优化
7.1 配置远程访问
如果需要远程连接,执行:
sql复制CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%';
FLUSH PRIVILEGES;
同时修改my.cnf文件,注释掉bind-address = 127.0.0.1
7.2 性能调优建议
根据服务器配置调整my.cnf中的参数:
ini复制innodb_buffer_pool_size = 4G # 建议为物理内存的50-70%
innodb_log_file_size = 256M
max_connections = 200
query_cache_size = 64M
8. 常见问题排查
8.1 启动失败排查
检查错误日志:
bash复制tail -100 /usr/local/mysql/logs/mysql-error.log
常见错误及解决方案:
- 端口冲突:确保3306端口未被占用
- 权限问题:确认
/usr/local/mysql目录属主是mysql用户 - 空间不足:
df -h检查磁盘空间
8.2 连接问题
如果无法本地连接,检查:
bash复制netstat -tulnp | grep mysql
确保MySQL监听在正确地址上。
9. 备份与恢复
9.1 定期备份策略
建议设置cron任务进行定期备份:
bash复制0 2 * * * /usr/local/mysql/bin/mysqldump -u root -p密码 --all-databases > /backup/mysql_all_$(date +\%Y\%m\%d).sql
9.2 恢复数据
从备份文件恢复:
bash复制mysql -u root -p < /backup/mysql_all_20230801.sql
10. 升级与维护
10.1 小版本升级
对于MySQL 5.7.x的小版本升级,通常只需替换二进制文件:
- 停止MySQL服务
- 备份数据目录
- 解压新版MySQL到临时目录
- 复制新版文件覆盖旧版
- 启动MySQL服务
10.2 日常维护建议
- 定期执行
mysql_upgrade -u root -p - 监控慢查询日志
- 定期优化表:
mysqlcheck -o -A -u root -p
在ARM架构服务器上安装MySQL确实比x86环境复杂,特别是遇到GLIBCXX版本问题时需要耐心解决。建议在正式环境部署前,先在测试环境完整走一遍流程。配置完成后,定期检查MySQL运行状态和错误日志,可以提前发现潜在问题。