1. 环境准备与系统检查
在RedHat 8系统上部署MySQL 9.1之前,需要先做好基础环境检查。我通常会从这三个维度进行系统诊断:
- 操作系统版本确认:
bash复制cat /etc/redhat-release
典型输出应为"Red Hat Enterprise Linux release 8.x"。特别注意:RHEL 8.5及以上版本对MySQL 9.1的兼容性最佳,低版本建议先升级系统。
- 资源占用分析:
bash复制free -h # 内存检查(建议≥4GB)
df -h # 磁盘空间(/var目录建议≥20GB)
lscpu # CPU核数(建议≥2核)
- 依赖包预装:
bash复制dnf install -y libaio ncurses-compat-libs openssl-devel
这里有个坑:RHEL 8默认不再提供MySQL官方仓库,需要手动添加MySQL社区仓库。我推荐使用Oracle的MySQL Yum Repository:
bash复制rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el8-7.noarch.rpm
重要提示:如果之前安装过MariaDB,必须先彻底卸载:
bash复制dnf remove -y mariadb* rm -rf /var/lib/mysql
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. MySQL 9.1安装实战
2.1 仓库配置技巧
编辑仓库配置文件禁用默认的MySQL 8.0模块:
bash复制dnf module disable -y mysql
然后启用MySQL 9.1仓库:
bash复制sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/mysql-community.repo
sed -i 's/mysql80-community/mysql-tools-community\nenabled=1\n[mysql91-community]\nname=MySQL 9.1\nbaseurl=https://repo.mysql.com/yum/mysql-9.1-community/el/8/$basearch/\nenabled=1\ngpgcheck=1/g' /etc/yum.repos.d/mysql-community.repo
2.2 核心安装命令
执行安装时会遇到依赖解析问题,建议使用组合命令:
bash复制dnf install -y mysql-community-server mysql-community-client \
mysql-community-common mysql-community-devel --nogpgcheck
安装完成后验证版本:
bash复制mysqld --version
预期输出应包含"Ver 9.1"字样。
3. 关键配置优化
3.1 安全初始化
MySQL 9.1的安全策略更严格,建议这样初始化:
bash复制mysqld --initialize --user=mysql --console
记录输出的临时root密码(通常在最后一行)。
然后启动服务:
bash复制systemctl start mysqld
systemctl enable mysqld
3.2 密码策略调整
登录后立即修改密码:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!123';
MySQL 9.1默认启用caching_sha2_password认证,如果客户端不支持,可改为传统模式:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourNewStrongPassword!123';
3.3 性能参数调优
编辑/etc/my.cnf添加这些9.1专属优化:
ini复制[mysqld]
# 内存分配
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
# 9.1新特性配置
innodb_dedicated_server = ON
innodb_parallel_read_threads = 8
# 连接管理
max_connections = 200
thread_cache_size = 16
4. 故障排查指南
4.1 服务启动失败
常见错误及解决方案:
| 错误现象 | 排查命令 | 解决方法 |
|---|---|---|
| 端口冲突 | ss -tulnp | grep 3306 |
修改/etc/my.cnf中的port |
| 权限问题 | ls -ld /var/lib/mysql |
chown -R mysql:mysql /var/lib/mysql |
| 内存不足 | journalctl -xe |
调低innodb_buffer_pool_size |
4.2 连接问题处理
如果遇到"Client does not support authentication protocol"错误:
sql复制SHOW VARIABLES LIKE 'default_authentication_plugin';
若输出caching_sha2_password,需要升级客户端或修改认证方式。
5. 安全加固建议
- 防火墙配置:
bash复制firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
- 远程访问控制:
sql复制CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'ComplexPwd!2023';
GRANT SELECT ON *.* TO 'remoteuser'@'%';
- 审计日志启用:
ini复制[mysqld]
plugin-load-add = audit_log.so
audit_log_format = JSON
audit_log_policy = ALL
6. 日常维护技巧
- 备份策略:
bash复制# 物理备份
xtrabackup --backup --target-dir=/backups/mysql/$(date +%F)
# 逻辑备份
mysqldump -u root -p --all-databases > full_backup.sql
- 性能监控:
sql复制-- 查看活跃线程
SELECT * FROM performance_schema.threads WHERE TYPE='FOREGROUND';
-- 资源使用统计
SELECT * FROM sys.memory_global_by_current_bytes;
- 版本升级路径:
MySQL 9.1支持原地升级到9.2,但需要先执行:
sql复制SET GLOBAL innodb_fast_shutdown = 0;
然后通过yum直接升级即可。
