news 2026/11/6 5:41:07

CentOS Stream 9下MySQL 8.4.7卸载与自定义安装指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CentOS Stream 9下MySQL 8.4.7卸载与自定义安装指南

1. 项目背景与需求解析

最近在CentOS Stream 9服务器上部署新应用时,遇到了MySQL 8.4.7版本与现有环境不兼容的问题。更棘手的是,默认安装将数据库文件放在了系统盘,而我们需要将其迁移到大容量数据盘。经过多次实践,我总结出一套完整的解决方案,不仅能彻底卸载现有MySQL,还能实现自定义路径安装。

这个需求在数据库运维中非常典型——当遇到版本冲突、存储空间不足或性能优化时,我们经常需要"重装+迁移"的组合操作。传统做法需要手动执行十几个步骤,而通过脚本化处理,整个过程可以压缩到5分钟内完成,且保证数据安全无损。

2. 环境准备与安全防护

2.1 系统环境确认

首先通过以下命令确认系统版本和MySQL状态:

cat /etc/redhat-release # 确认是CentOS Stream 9 mysql --version # 确认当前安装的是8.4.7 df -h # 查看磁盘分区情况

重要提示:操作前务必确认备份了所有数据库!即使是一键脚本,数据安全永远是第一位的。

2.2 备份策略实施

推荐使用mysqldump进行全量备份:

mkdir -p /backup/mysql mysqldump -u root -p --all-databases > /backup/mysql/full_backup_$(date +%F).sql

对于大型数据库,可以考虑物理备份:

systemctl stop mysqld rsync -av /var/lib/mysql /backup/mysql/ systemctl start mysqld

3. 彻底卸载MySQL 8.4.7

3.1 标准卸载流程

常规卸载命令如下:

dnf remove mysql-server mysql-client mysql-common

但这种方式往往会有残留,我们需要更彻底的清理方案。

3.2 深度清理脚本

创建clean_mysql.sh脚本:

#!/bin/bash # 停止服务 systemctl stop mysqld # 移除软件包 dnf remove -y mysql-* # 清理残留文件 rm -rf /var/lib/mysql rm -rf /var/log/mysqld.log rm -rf /etc/my.cnf rm -rf /etc/my.cnf.d # 删除用户和组 userdel mysql groupdel mysql # 清理依赖项 dnf autoremove -y

执行权限和运行:

chmod +x clean_mysql.sh ./clean_mysql.sh

3.3 验证卸载结果

检查是否还有残留:

rpm -qa | grep mysql find / -name "*mysql*"

4. 自定义路径安装MySQL 8.4.7

4.1 准备数据盘

假设我们要安装到/data/mysql:

mkdir -p /data/mysql chown -R mysql:mysql /data/mysql

4.2 官方源安装

添加MySQL官方YUM源:

rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm

安装指定版本:

dnf install -y mysql-server-8.4.7

4.3 配置文件定制

编辑/etc/my.cnf:

[mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock [client] socket=/data/mysql/mysql.sock

4.4 初始化数据库

使用新路径初始化:

mysqld --initialize --user=mysql --datadir=/data/mysql

查看临时密码:

grep 'temporary password' /var/log/mysqld.log

5. 服务配置与优化

5.1 安全加固

运行安全脚本:

mysql_secure_installation

建议设置:

  • 修改root密码
  • 移除匿名用户
  • 禁止root远程登录
  • 移除测试数据库
  • 重载权限表

5.2 服务管理

配置systemd单元文件:

systemctl enable mysqld systemctl start mysqld systemctl status mysqld

5.3 性能调优

根据服务器配置调整/etc/my.cnf:

innodb_buffer_pool_size = 4G innodb_log_file_size = 512M max_connections = 200

6. 数据恢复与验证

6.1 恢复备份数据

mysql -u root -p < /backup/mysql/full_backup_2023-11-15.sql

6.2 验证安装结果

检查安装路径:

mysql -e "SHOW VARIABLES LIKE 'datadir';"

验证版本:

mysql -e "SELECT VERSION();"

7. 常见问题解决方案

7.1 初始化失败问题

错误现象:

[ERROR] --initialize specified but the data directory exists and is not writable

解决方法:

chown -R mysql:mysql /data/mysql rm -rf /data/mysql/*

7.2 服务启动失败

查看详细日志:

journalctl -xe

常见原因:

  • SELinux阻止访问
  • 目录权限不正确
  • 配置文件语法错误

7.3 连接socket问题

错误信息:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

解决方案:

ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock

8. 一键脚本整合

将上述流程整合为reinstall_mysql.sh:

#!/bin/bash # 参数定义 MYSQL_VERSION="8.4.7" DATA_DIR="/data/mysql" BACKUP_DIR="/backup/mysql" # 备份阶段 mkdir -p $BACKUP_DIR mysqldump -u root -p --all-databases > $BACKUP_DIR/full_backup_$(date +%F).sql # 卸载阶段 systemctl stop mysqld dnf remove -y mysql-* rm -rf /var/lib/mysql /var/log/mysqld.log /etc/my.cnf /etc/my.cnf.d userdel mysql groupdel mysql dnf autoremove -y # 安装阶段 rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm dnf install -y mysql-server-$MYSQL_VERSION # 配置阶段 mkdir -p $DATA_DIR chown -R mysql:mysql $DATA_DIR cat > /etc/my.cnf <<EOF [mysqld] datadir=$DATA_DIR socket=$DATA_DIR/mysql.sock [client] socket=$DATA_DIR/mysql.sock EOF # 初始化 mysqld --initialize --user=mysql --datadir=$DATA_DIR chown -R mysql:mysql $DATA_DIR # 服务启动 systemctl enable mysqld systemctl start mysqld # 获取临时密码 TEMP_PWD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}') echo "临时密码: $TEMP_PWD"

使用说明:

  1. 保存为reinstall_mysql.sh
  2. chmod +x reinstall_mysql.sh
  3. ./reinstall_mysql.sh
  4. 根据输出的临时密码登录并修改

9. 后续维护建议

  1. 定期备份策略:
# 每天全量备份 0 2 * * * mysqldump -u root -pPASSWORD --all-databases > /backup/mysql/full_$(date +\%F).sql
  1. 监控磁盘空间:
df -h /data
  1. 性能监控设置:
# 安装监控工具 dnf install -y mytop
  1. 定期维护:
-- 每周执行 ANALYZE TABLE; OPTIMIZE TABLE;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 5:40:54

鸿蒙应用开发中的ValueState状态管理实践

1. 项目概述&#xff1a;ValueState在鸿蒙生态中的定位在鸿蒙应用开发中&#xff0c;状态管理一直是影响应用性能和开发效率的关键因素。传统开发模式下&#xff0c;开发者需要手动维护多个布尔变量&#xff08;如isLoading、hasError&#xff09;和数据对象&#xff0c;这种分…

作者头像 李华
网站建设 2026/11/6 5:37:28

VST 3 SDK跨平台装机避坑:CMake配置、架构与宿主验证

简介&#xff1a;VST 3插件SDK面向音频插件开发者与音乐制作软件技术学习者&#xff0c;提供在Windows、macOS、Linux及iOS上构建VST 3插件所需的接口定义、示例工程与文档支持&#xff0c;帮助理解音频处理、参数自动化、自定义界面及宿主兼容等核心环节。压缩包共7个文件&…

作者头像 李华
网站建设 2026/11/6 5:37:10

PLC控制立体车库系统设计与实现

1. 项目概述这个立体车库控制系统项目是我去年参与的一个实际工程案例&#xff0c;当时为了解决某商业中心停车位严重不足的问题而设计。这种基于PLC的垂直提升平移式双层立体车库&#xff0c;在实际应用中展现出了极高的空间利用率和可靠性。相比传统平面停车场&#xff0c;它…

作者头像 李华
网站建设 2026/11/6 5:36:48

5G大规模MIMO网络仿真技术实践与优化

1. 5G网络仿真与大规模MIMO技术概述在5G网络性能验证和优化过程中&#xff0c;无线网络仿真技术扮演着关键角色。其中&#xff0c;大规模MIMO&#xff08;Massive Multiple-Input Multiple-Output&#xff09;作为5G的核心技术之一&#xff0c;通过部署数十甚至上百根天线&…

作者头像 李华
网站建设 2026/11/6 5:36:03

若依微服务多数据源配置实战:MySQL与达梦DM8混合架构

1. 多数据源配置背景与需求分析在企业级应用开发中&#xff0c;多数据源配置是常见的架构需求。以若依&#xff08;RuoYi&#xff09;微服务框架为例&#xff0c;实际业务场景中往往需要同时连接多种数据库。比如既要保留原有MySQL数据库的兼容性&#xff0c;又要适配国产化的达…

作者头像 李华
网站建设 2026/11/6 5:35:33

IE8浏览器集成VLC ActiveX插件播放RTSP流实战

简介&#xff1a;面向需要在网页中播放多格式视频流、又受限于旧版浏览器插件机制的开发者&#xff0c;这份资料围绕浏览器集成VLC播放器展开&#xff0c;重点处理IE8、Chrome与Firefox下的插件加载、启用及嵌入式播放问题&#xff0c;适合做兼容性方案选型与老项目维护时参考。…

作者头像 李华