• MySQL在线升级方案


    记录一次因MySQL漏洞问题导致的生产数据库紧急迁移方案!

    回顾

    最开始部署的MySQL版本为5.7.21,因有部分漏洞因此需要紧急升级到MySQL 5.7.38版本。升级期间我们做了大概如下几个步骤:

    1. 1、备份原有数据库的数据
      sudo mysqldump -uroot -p --all-databases >
      allbackup20220704.sql
    2. 对原MySQL的数据目录进行备份
      cp -r /data/mysql /data/mysql_01
      因为考虑到是生产环境所以对数据进行了双重备份,而且接下来的所有操作先在从节点进行操作。保证此环境的服务器可以满足升级,且能够再从库进行升级成功后,再对主节点MySQL进行升级。

    一、从节点

    1、备份数据

    1. 1、备份原有数据库的数据
     sudo mysqldump -uroot -p --all-databases >
       allbackup20220704.sql
    
    • 1
    • 2
    1. 对原MySQL的数据目录进行备份
     cp  -r /data/mysql /data/mysql_01
    
    • 1

    2、删除原有MySQL的rpm包

     rpm -qa | grep mysql | xargs  rpm -e --nodeps
    
    • 1

    3、上传本次升级的rpm包

    上传本次升级的rpm安装包,依次在上传目录下执行如下步骤

    rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm
    
    • 1
    • 2
    • 3
    • 4

    4、修改my.cnf

    原有的MySQL配置文件因对MySQL进行卸载后,其配置文件命名规则已经发生改变成为了my.cnf.rpmsave。因此我们需要将/etc/my.cnf 备份。执行下述命令:

    mv /etc/my.cnf /etc/my.cnf.bak
    mv /etc/my.cnf.rpmsave /etc/my.cnf
    
    • 1
    • 2

    此处需要修改升级后的MySQL数据存放目录,切勿与第一次的目录一致。

    5、重新启动

    systemctl restart mysqld
    
    • 1

    6、查看密码

    根据my.cnf里面配置的MySQL的日志路径,查找MySQL密码,并对其进行修改密码。

    cat /data/mysql/mysqld.log | grep localhost
    
    • 1

    修改密码

    set global validate_password_policy = 0;
    SET PASSWORD = PASSWORD('root');
    grant all privileges on *.* to root@'%' identified by 'root';
    
    • 1
    • 2
    • 3

    若机器安装过多次MySQL,密码则为最后一条数据显示的密码。

    若从节点能够正常启动后,则接下来对主节点执行同样的上述操作。

    二、主节点

    1、备份数据

    1. 1、备份原有数据库的数据
     sudo mysqldump -uroot -p --all-databases >
       allbackup20220704.sql
    
    • 1
    • 2
    1. 对原MySQL的数据目录进行备份
     cp  -r /data/mysql /data/mysql_01
    
    • 1

    2、删除原有MySQL的rpm包

     rpm -qa | grep mysql | xargs  rpm -e --nodeps
    
    • 1

    3、上传本次升级的rpm包

    上传本次升级的rpm安装包,依次在上传目录下执行如下步骤

    rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm
    
    • 1
    • 2
    • 3
    • 4

    4、修改my.cnf

    原有的MySQL配置文件因对MySQL进行卸载后,其配置文件命名规则已经发生改变成为了my.cnf.rpmsave。因此我们需要将/etc/my.cnf 备份。执行下述命令:

    mv /etc/my.cnf /etc/my.cnf.bak
    mv /etc/my.cnf.rpmsave /etc/my.cnf
    
    • 1
    • 2

    此处需要修改升级后的MySQL数据存放目录,切勿与第一次的目录一致。

    5、重新启动

    systemctl restart mysqld
    
    • 1

    6、查看密码

    根据my.cnf里面配置的MySQL的日志路径,查找MySQL密码,并对其进行修改密码。

    cat /data/mysql/mysqld.log | grep localhost
    
    • 1

    修改密码

    set global validate_password_policy = 0;
    SET PASSWORD = PASSWORD('root');
    grant all privileges on *.* to root@'%' identified by 'root';
    
    • 1
    • 2
    • 3

    三、配置主从

    1、查看主节点位点

    进入主节点的MySQL命令行

    mysql -uroot -p密码
    show master status\G
    #获取到主节点的bin文件及位点信息
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    进入从节点执行如下命令

    stop slave;
    CHANGE MASTER TO
    MASTER_HOST='主节点IP'      ,
    MASTER_PORT=MySQL端口,
    MASTER_USER='同步账户'                 ,
    MASTER_PASSWORD='同步密码'         ,
    MASTER_LOG_FILE='主节点bin文件',
    MASTER_LOG_POS=主节点位点;
    start slave;
    #查看主从是否正常
    show slave status\G;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    四、导入源数据

    1、主节点导入源数据,

    mysql -uroot -p密码
    source /data/*.sql
    
    • 1
    • 2

    2、从节点查看主从状态是否正常

    show slave status\G;
    
    • 1

    在这里插入图片描述

    若显示正常,则此次升级就完美告一段落。

  • 相关阅读:
    【C语言】指针的进阶(二)—— 回调函数的讲解以及qsort函数的使用方式
    MATLAB位运算
    09 C++设计模式之装饰(Decorator)模式
    linux服务器部署项目
    JS中执行上下文和执行栈是什么?
    #安装es 常见报错#
    uniapp项目+SSM实现的记账app
    Java——TCP UDP Socket编程
    了解CSS中的link和@import引入CSS的区别
    十七、W5100S/W5500+RP2040树莓派Pico<HTTP Server网页显示>
  • 原文地址:https://blog.csdn.net/Victory_Lei/article/details/125618758