升级mysql数据库需要遵循规范的流程,提前做好各项准备工作,才能避免升级过程中出现数据丢失、服务异常等问题,不同安装方式的mysql升级步骤略有差异,下面会分别说明。

升级前的准备工作
1. 数据备份
数据备份是升级前最重要的步骤,无论升级是否顺利,都需要先备份所有数据库的数据,防止意外情况导致数据丢失。可以使用mysqldump命令进行全量备份:
# 备份所有数据库,包含存储过程和触发器 mysqldump -u root -p --all-databases --routines --triggers > /backup/mysql_full_backup_$(date +%Y%m%d).sql # 备份完成后可以检查备份文件是否存在 ls -lh /backup/mysql_full_backup_*.sql
2. 环境检查
需要确认当前mysql的版本、安装方式、操作系统版本,同时查看目标升级版本是否支持当前的操作系统,以及是否有不兼容的特性。可以通过以下命令查看当前版本:
mysql -V # 进入mysql客户端后查看详细版本信息 mysql -u root -p -e "SELECT VERSION();"
还需要检查当前数据库的配置文件,记录重要的配置项,比如数据目录、端口、字符集等,升级后需要保证这些配置和之前一致。
3. 阅读官方升级文档
不同版本的mysql升级可能有特殊的注意事项,比如某些特性被废弃、配置项名称变更等,需要提前查看目标版本的官方升级说明,避免升级后出现功能异常。
不同安装方式的升级步骤
Yum/RPM包安装的mysql升级
如果是通过yum或者rpm包安装的mysql,升级步骤相对简单:
- 首先备份数据和配置文件,参考上面的备份步骤
- 停止当前运行的mysql服务
- 下载目标版本对应的yum源或者rpm包
- 执行升级安装命令
- 启动mysql服务,执行升级检查
具体命令示例如下:
# 停止mysql服务 systemctl stop mysqld # 备份配置文件 cp /etc/my.cnf /etc/my.cnf.bak # 升级mysql相关包,这里以升级到mysql 8.0为例,实际根据目标版本调整 yum update mysql-community-server mysql-community-client mysql-community-common mysql-community-libs # 启动服务 systemctl start mysqld # 执行升级检查,修复系统表等 mysql_upgrade -u root -p
二进制包安装的mysql升级
二进制包安装的mysql升级需要先下载目标版本的二进制包,步骤如下:
- 停止当前mysql服务
- 备份原有mysql安装目录和数据目录
- 解压新的二进制包到指定目录
- 替换原有二进制文件,保留数据目录和配置文件
- 启动服务并执行升级检查
示例操作:
# 停止服务 /usr/local/mysql/bin/mysqladmin -u root -p shutdown # 备份原有安装目录 mv /usr/local/mysql /usr/local/mysql_old # 解压新的二进制包 tar -zxvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ mv /usr/local/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql # 复制原有配置文件到新目录 cp /usr/local/mysql_old/my.cnf /usr/local/mysql/ # 修改目录权限 chown -R mysql:mysql /usr/local/mysql # 启动服务 /usr/local/mysql/bin/mysqld_safe --user=mysql & # 执行升级 /usr/local/mysql/bin/mysql_upgrade -u root -p
源码安装的mysql升级
源码安装的mysql需要先编译安装目标版本,再替换原有服务:
# 停止原有服务 /usr/local/mysql/bin/mysqladmin -u root -p shutdown # 备份数据目录和配置文件 cp -r /usr/local/mysql/data /usr/local/mysql_data_bak cp /usr/local/mysql/my.cnf /usr/local/mysql.cnf.bak # 解压新的源码包,编译安装 tar -zxvf mysql-8.0.33.tar.gz cd mysql-8.0.33 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci make && make install # 启动服务并执行升级 /usr/local/mysql/bin/mysqld_safe --user=mysql & /usr/local/mysql/bin/mysql_upgrade -u root -p
升级后的验证工作
升级完成后需要验证数据库是否正常运行,数据是否完整:
- 检查mysql服务状态,确认可以正常启动
- 登录mysql客户端,查看版本是否为目标版本
- 检查原有数据库、表、数据是否存在,随机查询几条数据验证完整性
- 测试业务系统的数据库连接和核心功能是否正常
- 查看mysql错误日志,确认没有异常报错
验证版本的命令:
mysql -u root -p -e "SELECT VERSION();"
如果升级后出现服务无法启动的情况,可以先查看错误日志,通常错误日志在数据目录下的hostname.err文件中,根据错误提示调整配置或者修复问题即可。