虽然我非常反对手动编译或使用 generic 二进制文件安装 Linux 软件包,但我们公司的运维组似乎十分热衷于此,好巧不巧我在运维组工作过几天,接手了升级 MySQL 的活,于是记录一下使用二进制包升级 MySQL 的操作。
1. MySQL 安装包准备
软件压缩包名:
mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
从 FTP 服务器下载(或随便其他方式拿到二进制包):
wget -P /mysql/ http://ip:port/path/to/ftp_dir/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
2. 数据库服务器确认
- 测试环境服务器:见 Excel 表格
- 生产环境服务器:见 Excel 表格
3. 数据备份
创建备份文件夹:
mkdir /mysql/dbbackup
备份 MySQL 库:
mysqldump -uroot -p'mysql_password' --master-data=2 -c db_name > /mysql/dbbackup/db_name_20200909.sql
4. 升级前准备
先升级从,再升级主。
4.1 关闭 keepalived
service keepalived stop
4.2 关闭 MySQL
su - //切换到超级用户
service mysql stop
4.3 备份 binlog
mkdir /mysql/log_20200909_bak && cp -pr /mysql/log/* /mysql/log_20200908_bak
5. 正式升级
-
解压、修改目录名、赋权:
tar -xvf /mysql/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /mysql/service/ && mv /mysql/service/mysql-5.7.31-linux-glibc2.12-x86_64/ /mysql/service/mysql-5.7.31/ && chown -R mysql.mysql /mysql/service/mysql-5.7.31
-
删除压缩文件
rm /mysql/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
6. 修改 my.cnf 配置文件
-
备份旧的配置文件、修改新的配置:
cp /etc/my.cnf /etc/my_5.7.28.cnf && vi /etc/my.cnf
修改以下行:
basedir=/mysql/service/mysql-5.7.31
-
执行 MySQL 的启动:
/mysql/service/mysql-5.7.31/bin/mysqld --defaults-file=/etc/my.cnf &
检查是否启动:
ps -ef | grep mysqld | grep -v grep
7. 运行 mysql_upgrade 升级数据字典
-
关闭 MySQL:
/mysql/service/mysql-5.7.31/bin/mysql -uroot -p'mysql_password' --execute="SET GLOBAL innodb_fast_shutdown=0" && /mysql/service/mysql-5.7.31/bin/mysqladmin -uroot -p'mysql_password' shutdown
-
启动新版 MySQL:
/mysql/service/mysql-5.7.31//bin/mysqld --defaults-file=/etc/my.cnf &
-
检查兼容性:
/mysql/service/mysql-5.7.31/bin/mysql_upgrade -uroot -p'mysql_password'
-
检查无误后停止 MySQL:
/mysql/service/mysql-5.7.31/bin/mysqladmin -uroot -p'mysql_password' shutdown
8. 修改启动脚本重启 MySQL
-
备份原启动脚本、复制新启动脚本:
mv /etc/init.d/mysql /etc/init.d/mysql_20200908 && cp /mysql/service/mysql-5.7.31/support-files/mysql.server /etc/init.d/mysql
-
修改启动脚本:
vi /etc/init.d/mysql
# 修改内容: basedir=/mysql/service/mysql-5.7.31/ datadir=/mysql/data/
-
添加开机启动、启动 MySQL:
chkconfig --add mysql && chkconfig mysql on && service mysql restart
9. 设置环境变量
-
编辑:
vi /etc/profile
修改
PATH
:/mysql/service/mysql-5.7.31/bin:$PATH
-
刷新环境变量
source /etc/profile
10. 验证升级
mysql -V
11. 恢复 keepalived
su - //切换到超级用户
service keepalived restart
12. 主从连接检查
-
检查 MySQL 主从状态:
show slave status\G;
-
检查 keepalived 状态:
cat /app/log/keepalived/status