不求甚解

此博客为个人学习之用,如与其他作品雷同,纯属巧合。

导航

MySQL升级

Posted on 2021-05-05 11:05  三年三班王小朋  阅读(40)  评论(0)    收藏  举报

升级MySQL数据库

升级MySQL数据库可以通过多种方式进行,具体取决于你当前的MySQL版本、目标版本以及你的系统环境。以下是一个通用的升级指南,包括了主要步骤和注意事项:

准备工作
备份数据:在进行任何升级之前,最重要的是对现有数据库进行完整备份。可以使用mysqldump工具来导出所有数据库:

mysqldump -u username -p --all-databases > alldb_backup.sql

确保你有足够的存储空间存放备份文件,并且测试备份文件是否完好无损。
阅读发行说明:查阅你想要升级到的目标MySQL版本的发行说明,了解可能影响现有应用程序的新特性或变更。
检查兼容性:确保你的应用程序与新的MySQL版本兼容。如果有自定义代码或插件,请确认它们能在新版本中正常运行。
升级方法
在线升级(对于小版本更新)
如果你只是从一个稳定版的小版本升级到另一个小版本(例如5.7.28到5.7.30),通常可以直接替换二进制文件并重启服务。

下载适合你系统的最新版本MySQL安装包。
停止MySQL服务。
使用下载的新版本覆盖旧版本的二进制文件。
运行mysql_upgrade工具来检查和更新系统表:

mysql_upgrade -u root -p

重新启动MySQL服务。
主版本升级(如从5.x到8.0)
主版本之间的升级需要更加谨慎,推荐的方法是使用逻辑备份和恢复策略。

备份数据库(如上所述)。
卸载旧版本MySQL。
安装新版本MySQL。
导入之前备份的数据:

 

平滑升级MySQL数据库

无停机或最小停机时间升级,旨在尽量减少对业务的影响。这通常涉及到使用主从复制等技术来实现。以下是一个基本的步骤指南,用于执行MySQL数据库的平滑升级:

准备工作

  1. 备份数据:确保对现有数据库进行全面备份。

    mysqldump -u username -p --all-databases > alldb_backup.sql
  2. 安装新版本MySQL:在新服务器上安装目标版本的MySQL,并确保其配置与旧版MySQL一致。

步骤一:建立主从复制

在旧版MySQL服务器(Master)上的操作

  • 编辑my.cnf文件:

添加或修改以下内容以启用二进制日志并为服务器指定唯一的server-id。

[mysqld]
server-id=1
log-bin=mysql-bin

重启MySQL服务使更改生效:

sudo systemctl restart mysqld
  • 创建复制用户:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
  • 导出所有数据库:
mysqldump -u username -p --all-databases --master-data=2 > alldb_backup.sql

在新版MySQL服务器(Slave)上的操作

  1. 导入数据库备份到新的MySQL服务器中。

    mysql -u username -p < alldb_backup.sql
  2. 编辑my.cnf文件:

    • 设置一个不同的server-id,例如2。
      [mysqld]
      server-id=2
    • 重启MySQL服务:
      sudo systemctl restart mysqld
  3. 配置从服务器连接至主服务器: 使用CHANGE MASTER TO命令开始复制过程。

    CHANGE MASTER TO MASTER_HOST='master_host_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=<log_position>;
    START SLAVE;

     

步骤二:配置虚拟IP(VIP)

这里我们使用Keepalived来管理虚拟IP。

安装Keepalived

在主服务器和从服务器上都安装Keepalived。

sudo yum install keepalived -y

配置Keepalived

  • 在主服务器上的Keepalived配置文件(通常位于/etc/keepalived/keepalived.conf)添加如下配置:

    vrrp_instance VI_1 {
        state MASTER
        interface eth0  # 根据你的网络接口名称调整
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass your_password
        }
        virtual_ipaddress {
            192.168.1.100  # 这里替换为你想要使用的虚拟IP地址
        }
    }
  • 在从服务器上的Keepalived配置文件:

    vrrp_instance VI_1 {
        state BACKUP
        interface eth0  # 根据你的网络接口名称调整
        virtual_router_id 51
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass your_password
        }
        virtual_ipaddress {
            192.168.1.100  # 确保与主服务器上的虚拟IP地址相同
        }
    }
  • 启动Keepalived服务并设置开机自启:

    sudo systemctl start keepalived
    sudo systemctl enable keepalived

     

步骤三:切换流量

一旦确认从服务器已经完全同步且稳定运行,你可以通过停止主服务器上的Keepalived服务,触发VIP自动漂移到从服务器,实现无缝切换。

sudo systemctl stop keepalived

此时,所有的数据库请求将自动路由到新的MySQL服务器(现在持有VIP),从而完成平滑升级。

 

注意事项

  • 在执行任何操作前,请确保你已充分测试了整个流程。
  • 监控数据库性能和健康状态,确保升级后的系统稳定运行。
  • 制定好回滚计划以防万一出现问题。