以二进制包方式手动升级 MySQL

虽然我非常反对手动编译或使用 generic 二进制文件安装 Linux 软件包,但我们公司的运维组似乎十分热衷于此,好巧不巧我在运维组工作过几天,接手了升级 MySQL 的活,于是记录一下使用二进制包升级 MySQL 的操作。

1. MySQL 安装包准备

软件压缩包名:

1
mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

从 FTP 服务器下载(或随便其他方式拿到二进制包):

1
wget -P /mysql/ http://ip:port/path/to/ftp_dir/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

2. 数据库服务器确认

  1. 测试环境服务器:见 Excel 表格
  2. 生产环境服务器:见 Excel 表格

3. 数据备份

创建备份文件夹:

1
mkdir /mysql/dbbackup

备份 MySQL 库:

1
mysqldump -uroot -p'mysql_password' --master-data=2 -c db_name > /mysql/dbbackup/db_name_20200909.sql

4. 升级前准备

先升级从,再升级主。

4.1 关闭 keepalived

1
service keepalived stop

4.2 关闭 MySQL

1
2
su - //切换到超级用户
service mysql stop

4.3 备份 binlog

1
mkdir /mysql/log_20200909_bak && cp -pr /mysql/log/* /mysql/log_20200908_bak

5. 正式升级

  1. 解压、修改目录名、赋权:

    1
    
    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
    
  2. 删除压缩文件

    1
    
    rm /mysql/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
    

6. 修改 my.cnf 配置文件

  1. 备份旧的配置文件、修改新的配置:

    1
    
    cp /etc/my.cnf /etc/my_5.7.28.cnf && vi /etc/my.cnf
    

    修改以下行:

    basedir=/mysql/service/mysql-5.7.31
    
  2. 执行 MySQL 的启动:

    1
    
    /mysql/service/mysql-5.7.31/bin/mysqld --defaults-file=/etc/my.cnf &
    

    检查是否启动:

    1
    
    ps -ef | grep mysqld | grep -v grep
    

7. 运行 mysql_upgrade 升级数据字典

  1. 关闭 MySQL:

    1
    
    /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
    
  2. 启动新版 MySQL:

    1
    
    /mysql/service/mysql-5.7.31//bin/mysqld --defaults-file=/etc/my.cnf &
    
  3. 检查兼容性:

    1
    
    /mysql/service/mysql-5.7.31/bin/mysql_upgrade -uroot -p'mysql_password'
    
  4. 检查无误后停止 MySQL:

    1
    
    /mysql/service/mysql-5.7.31/bin/mysqladmin -uroot -p'mysql_password' shutdown
    

8. 修改启动脚本重启 MySQL

  1. 备份原启动脚本、复制新启动脚本:

    1
    
    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
    
  2. 修改启动脚本:

    1
    
    vi /etc/init.d/mysql
    
    1
    2
    3
    
    # 修改内容:
    basedir=/mysql/service/mysql-5.7.31/
    datadir=/mysql/data/
    
  3. 添加开机启动、启动 MySQL:

    1
    
    chkconfig --add mysql && chkconfig mysql on && service mysql restart
    

9. 设置环境变量

  1. 编辑:

    1
    
    vi /etc/profile
    

    修改 PATH

    1
    
    /mysql/service/mysql-5.7.31/bin:$PATH
    
  2. 刷新环境变量

    1
    
    source /etc/profile
    

10. 验证升级

1
mysql -V

11. 恢复 keepalived

1
2
su - //切换到超级用户
service keepalived restart

12. 主从连接检查

  1. 检查 MySQL 主从状态:

    1
    
    show slave status\G;
    
  2. 检查 keepalived 状态:

    1
    
    cat /app/log/keepalived/status
    
updatedupdated2021-01-052021-01-05
加载评论