228_mysql_复制技术_mysql版本升级

举报
alexsully 发表于 2021/11/13 18:10:33 2021/11/13
【摘要】 mysql 版本升级

    总体步骤 INPLACE 升级过程原理

    • a 安装新版本软件
    • b 关闭原数据库(挂维护页) #set global innodb_fast_shutdown=0 ; # 不留脏数据 前滚/回滚完成

              备份原数据库数据  #冷备 CP到其它地方备份

    • c 使用新版本软件 “挂” 旧版本数据启动(--skip-grant-tables#跳过授权表 user ,--skip-networking #不允许远程登录) #升级系统表 权限表等
    • d 升级 : 只是升级系统表。升级时间和数据量无关的。(8.0 5.7 区别)
    • e 正常重启数据库
    • f 验证各项功能是否正常
    • g 业务恢复


    5.6.46 ----> 5.7.28 Inplace 升级演练

    a. 安装 新版本软件
    b. 停原库 & 冷备# 快速关库功能关闭(优先刷脏页)
    mysql> set global innodb_fast_shutdown=0 ;
    [root@db01 app]# /usr/local/mysql56/bin/mysqladmin -S/tmp/mysql3356.scok shutdown
    [root@db01 app]# cp -r /data/3356/data/   /opt/3356.bak    #冷备
    
    c. 使用高版本软件挂低版本数据启动 (改5.6配置文件)
    [mysqld]
    user=mysql
    basedir=/usr/local/mysql57
    datadir=/data/mysql56/data
    socket=/tmp/mysql3356.scok
    port=3356
    server_id=56
    
    #启动
    [root@db01 data]# /usr/local/mysql57/bin/mysqld_safe --defaults-file=/data/3356/my.cnf --skip-grant-tables --skip-networking &
    
    d. 升级 (升级到8.0可以省略)
    [root@db01 data]# /usr/local/mysql57/bin/mysql_upgrade -S/tmp/mysql3356.scok --force    #升级后会有 mysql_upgrade_info
    e. 重启数据库到正常状态
    [root@db01 data]# mysqladmin -S /tmp/mysql3356.sock; shutdown  (5.7版本支持 内部 shutdown)
    #备注:sql_mode (only_full_group_by ); GTID 支持;
    f: 正常启动数据库
    [root@db01 app]# /usr/local/mysql57/bin/mysqld_safe &
    g # 连接查看
    mysql> show variables like '%version%';
    # 测试应用
    1、各项功能验证
    2、SQL_MODE: 日期、group by
    临时:关闭相应 SQL_mode ;建议:让应用满足 SQL_mode
    


    升级 5.7 ~ 8.0

    mysql-shell工具,8.0以后,可以调用这个命令,升级之前的预检查。
    [root@db01 ~]# mysqlsh root:123@10.0.0.51:3306 -e "util.checkForServerUpgrade()"
    # 且不需要 mysql_upgrade 
    
    1. 下载 8.0.20 版本的 mysql-shell,并安装 。
    [root@db01 app]# yum install -y mysql-shell-8.0.18-1.el7.x86_64.rpm
    
    2. 创建用户
    mysql> grant all on *.* to root@'10.0.0.%' identified by '123';
    3. 预 检查
    mysqlsh root:123@10.0.0.51:3306 -e "util.checkForServerUpgrade()" > /tmp/up.log
    
    
    # 开始升级
    a. 安装 8.0软件
    b. 优雅需要升级的数据库 
    [root@db01 app]# /data/app/mysql/bin/mysql -S/tmp/mysql56.scok
    mysql> set global innodb_fast_shutdown=0 ;
    mysql> shutdown;
    c. 使用高版本软件挂低版本数据启动
    [mysqld]
    user=mysql
    basedir=/data/app/mysql8
    datadir=/data/mysql3357/data
    socket=/tmp/mysql57.scok
    port=3356
    d.高版本软件挂低版本数据启动
    [root@db01 data]# /data/app/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip——networking &
    e. 正常启动数据库
    [root@db01 data]# /data/app/mysql8/bin/mysqladmin -S/tmp/mysql56.sock shutdown
    f: 正常启动数据库
    [root@db01 app]# /data/app/mysql8/bin/mysqld_safe &
    
    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。