本文档风哥主要介绍MySQL 8.4升级前期的准备工作,包括版本检查、备份策略、测试环境准备等。风哥教程参考MySQL官方文档Upgrading MySQL等。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 MySQL版本升级概述
MySQL版本升级是指将MySQL数据库从低版本升级到高版本的过程,包括小版本升级和大版本升级。学习交流加群风哥微信: itpux-com
1.2 升级路径规划
MySQL的升级路径应遵循官方推荐的升级顺序,避免跨版本升级导致的问题。
1.3 升级风险评估
升级MySQL可能面临的风险包括:数据丢失、性能下降、应用兼容性问题等。
Part02-生产环境规划与建议
2.1 升级前检查
在升级前,需要对系统环境和数据库状态进行全面检查。
2.2 备份策略
制定详细的备份策略,确保在升级过程中数据的安全性。
2.3 测试环境准备
在生产环境升级前,应在测试环境进行模拟升级,验证升级过程和结果。
Part03-生产环境项目实施方案
3.1 系统环境检查
检查系统环境是否满足MySQL 8.4的要求。
# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.3 (Plow)
# 检查系统架构
# uname -m
x86_64
# 检查系统内存
# free -h
total used free shared buff/cache available
Mem: 32G 4.5G 24G 128M 3.5G 27G
Swap: 8.0G 0B 8.0G
# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 15G 32G 32% /
/dev/sdb1 200G 50G 140G 27% /mysql
3.2 数据库状态检查
检查MySQL数据库的状态,确保数据库运行正常。
# mysql -V
mysql Ver 8.0.36 for Linux on x86_64 (MySQL Community Server – GPL)
# 检查数据库运行状态
# systemctl status mysqld
● mysqld.service – MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2026-04-01 10:00:00 CST; 1h ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 1234 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Main PID: 1234 (mysqld)
Status: “Server is operational”
Tasks: 38 (limit: 4915)
Memory: 1.2G
CGroup: /system.slice/mysqld.service
└─1234 /usr/sbin/mysqld
# 检查数据库连接
# mysql -u root -p -e “SELECT version();”
+———–+
| version() |
+———–+
| 8.0.36 |
+———–+
# 检查数据库状态
# mysql -u root -p -e “SHOW GLOBAL STATUS LIKE ‘uptime’;”
+—————+——–+
| Variable_name | Value |
+—————+——–+
| Uptime | 3600 |
+—————+——–+
3.3 备份数据库
在升级前,需要对数据库进行完整备份,确保数据安全。
# mysqldump -u root -p –all-databases –routines –triggers –events > all_databases.sql
# 备份MySQL配置文件
# cp /etc/my.cnf /etc/my.cnf.bak
# 备份数据目录
# rsync -av /mysql/data /backup/mysql_data_backup/
# 验证备份文件
# ls -la *.sql
-rw-r–r– 1 root root 10485760 Apr 1 11:00 all_databases.sql
# 验证备份目录
# ls -la /backup/mysql_data_backup/
total 4096
drwxr-xr-x 2 root root 4096 Apr 1 11:00 .
drwxr-xr-x 3 root root 4096 Apr 1 11:00 ..
drwxr-xr-x 7 mysql mysql 4096 Apr 1 11:00 data
3.4 测试环境升级
在测试环境中模拟升级过程,验证升级是否成功。
# mysql -u root -p < all_databases.sql # 检查测试环境MySQL版本 # mysql -V mysql Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL) # 下载MySQL 8.4安装包 # wget https://dev.mysql.com/get/mysql-8.4.0-el9-x86_64.rpm-bundle.tar # 解压安装包 # tar -xvf mysql-8.4.0-el9-x86_64.rpm-bundle.tar # 升级MySQL # yum localinstall mysql-community-server-8.4.0-1.el9.x86_64.rpm mysql-community-client-8.4.0-1.el9.x86_64.rpm mysql-community-common-8.4.0-1.el9.x86_64.rpm mysql-community-libs-8.4.0-1.el9.x86_64.rpm # 启动MySQL服务 # systemctl start mysqld # 检查升级后的版本 # mysql -V mysql Ver 8.4.0 for Linux on x86_64 (MySQL Community Server - GPL) # 运行mysql_upgrade # mysql_upgrade -u root -p Checking server version. Running queries to upgrade MySQL server. Upgrading system table data. Checking system database. mysql.columns_priv OK mysql.db OK mysql.engine_cost OK mysql.event OK mysql.func OK mysql.general_log OK mysql.gtid_executed OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.innodb_index_stats OK mysql.innodb_table_stats OK mysql.ndb_binlog_index OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.proxies_priv OK mysql.server_cost OK mysql.servers OK mysql.slave_master_info OK mysql.slave_relay_log_info OK mysql.slave_worker_info OK mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK Upgrading the sys schema. Checking databases. fgedudb.fgedu_table OK done
Part04-生产案例与实战讲解
4.1 升级前准备脚本
编写升级前准备脚本,自动化检查和备份过程。
# upgrade_prepare.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 检查系统环境
echo “=== 检查系统环境 ===”
cat /etc/redhat-release
uname -m
free -h
df -h
# 检查MySQL状态
echo “\n=== 检查MySQL状态 ===”
mysql -V
systemctl status mysqld
# 备份数据库
echo “\n=== 备份数据库 ===”
DATE=$(date +%Y%m%d%H%M%S)
mysqldump -u root -p –all-databases –routines –triggers –events > all_databases_${DATE}.sql
cp /etc/my.cnf /etc/my.cnf.bak.${DATE}
rsync -av /mysql/data /backup/mysql_data_backup_${DATE}/
# 检查备份结果
echo “\n=== 检查备份结果 ===”
ls -la all_databases_${DATE}.sql
ls -la /etc/my.cnf.bak.${DATE}
ls -la /backup/mysql_data_backup_${DATE}/
# 检查数据库兼容性
echo “\n=== 检查数据库兼容性 ===”
mysql -u root -p -e “SELECT @@version;”
mysql -u root -p -e “SHOW GLOBAL VARIABLES LIKE ‘innodb_version’;”
mysql -u root -p -e “SHOW GLOBAL VARIABLES LIKE ‘version_comment’;”
4.2 升级过程模拟
在测试环境中模拟升级过程,验证升级是否成功。
# 1. 停止MySQL服务
# systemctl stop mysqld
# 2. 安装MySQL 8.4
# yum localinstall mysql-community-server-8.4.0-1.el9.x86_64.rpm mysql-community-client-8.4.0-1.el9.x86_64.rpm mysql-community-common-8.4.0-1.el9.x86_64.rpm mysql-community-libs-8.4.0-1.el9.x86_64.rpm
# 3. 启动MySQL服务
# systemctl start mysqld
# 4. 运行mysql_upgrade
# mysql_upgrade -u root -p
# 5. 验证升级结果
# mysql -V
# mysql -u root -p -e “SELECT @@version;”
# mysql -u root -p -e “SHOW GLOBAL VARIABLES LIKE ‘version_comment’;”
# 6. 测试数据库功能
# mysql -u root -p -e “CREATE DATABASE test_upgrade;”
# mysql -u root -p -e “CREATE TABLE test_upgrade.test_table (id INT PRIMARY KEY, name VARCHAR(20));”
# mysql -u root -p -e “INSERT INTO test_upgrade.test_table VALUES (1, ‘test’);”
# mysql -u root -p -e “SELECT * FROM test_upgrade.test_table;”
+—-+——+
| id | name |
+—-+——+
| 1 | test |
+—-+——+
Part05-风哥经验总结与分享
5.1 升级常见问题
在MySQL升级过程中常见的问题包括:
- 依赖包冲突:需要先卸载旧版本的依赖包
- 配置文件不兼容:需要更新配置文件
- 数据文件损坏:需要从备份恢复
- 应用兼容性问题:需要修改应用代码
5.2 最佳实践建议
1. 制定详细的升级计划:包括升级步骤、回滚策略等
2. 充分测试:在测试环境中进行充分测试,验证升级过程和结果
3. 完整备份:在升级前对数据库进行完整备份,确保数据安全
4. 选择合适的升级时间:选择业务低峰期进行升级
5. 准备回滚方案:制定详细的回滚方案,以备升级失败时使用
6. 监控升级过程:实时监控升级过程,及时发现和解决问题
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
