zoukankan      html  css  js  c++  java
  • MySQL升级

    一、概述
    1、运行mysql_upgrade时需要禁用GTID,因为运行mysql_upgrade会修改mysql引擎的系统表,这不是一个事务表
    2、升级到5.7官方推荐的两种方法:
     a)in-place upgrade:原地升级法,利用已存在的datadir目录进行升级
     b)logical upgrade:逻辑升级法,利用mysqldump导出导入进行升级
    3、在实际的升级过程中很少会用到上面这两种方法,特别是第一种。通常都是通过部署一个新从库来完成升级的(主库老版本,从库目标版本),这样的话只需要在切换的时候停下机就行了
    4、逻辑升级的话,先导出,接着导入,最后运行mysql_upgrade完成升级。小版本升级可以不运行mysql_upgrade,在实际的生产环境中,建议不管是小版本升级还是大版本升级都运行mysql_upgrade
     
    二、升级环境说明
    mysql-5.6.19
    mysql-5.7.15
    安装MySQL5.7

    三、停应用和MySQL5.6.19实例并备份数据库
     
    四、修改my.cnf配置文件并启动MySQL5.7.15
    修改参数
    basedir = /usr/local/mysql02                     #数据库安装目录指定到新版本的安装目录  
    datadir = /data/mysqldata/3306/data        #原数据库数据目录保持原来的目录即可   
    #只需要修改这些,其它的一般不需修改,如果需要将日志之类的转移到新目录,则按需修改 
     
    五、启动MySQL5.7.15
    修改脚本里面的环境变量
    $mysql_db_startup.sh
     
    六、升级数据库(升级数据字典)
    $ /usr/local/mysql02/bin/mysql_upgrade -usystem -p123456
    $ /usr/local/mysql02/bin/mysqlcheck --all-databases -usystem -p123456
     
    重启MySQL5.7.15实例
    $mysql_db_shutdown.sh
    $mysql_db_startup.sh 
     
    确认升级是否成功
    $ mysqlplus.sh
    (system@localhost) [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | test               |
    +--------------------+
    5 rows in set (0.00 sec)
     
     
     
    一直以来,MySQL版本升级依赖额外的工具 mysql_upgrade ,但是从 MySQL 8.0.16 开始,mysql_upgrade 工具将被废弃,取而代之的是MySQL 8.0 新的版本升级方式,升级功能集成到MySQL Server的进程mysqld中,不再依赖额外的外部工具。

    这样的升级方式变更带来了哪些好处?

    1.升级速度更快
    2.升级过程更简单
    3.升级过程更安全
    4.显著减少升级步骤,更容易自动化
    5.不需要重新启动MySQL Server
    6.即插即用

    8.0.16之前老的版本升级过程:

    1.关闭MySQL Server,安装新版本二进制软件包
    2.使用新版本软件包启动MySQL Server,此时Server会自动升级 数据字典表。
    3.运行mysql_upgrade 工具,升级系统表和用户表。
    4.重启MySQL Server,接受业务流量。

    8.0.16 版本新的升级过程:

    1.关闭MySQL Server,安装新版本二进制软件包
    2.使用新版本软件包启动MySQL Server,此时Server会自动检查并执行第一步升级操作,升级数据字典表。在第一步升级完成之后,Server分析系统表和用户表是否需要升级,如果指定了升级选项 upgrade (后面会详细介绍)为AUTO或者FORCE,Server将会执行第二步升级操作,对系统表和用户表进行升级,如果第二步不需要升级,Server将会跳过第二步。 

    相比于之前的升级方式,整个过程由2步变成了1步,不需要额外的升级工具,降低了升级耗时。

    新的Server选项, --upgrade

    可能的取值为: NONE, AUTO, MINIMAL, FORCE,默认值为AUTO
    NONE Server启动时不会执行任何的升级动作,如果发现版本不对,Server将会异常退出。这个选项只能在明确知道Server的版本与之前的版本一致时,才可以使用。
    AUTO 是默认选项,Server启动时会尝试升级数据字典表和用户表。如果发现不需要升级,会自动忽略升级过程。
    MINIMAL Server启动时仅仅尝试执行数据字典的升级,其他的系统表、用户表等,不会进行升级。这个选项和之前老的升级方式相同,必须再次使用mysql_upgrade 工具执行剩下的升级过程。然后需要再次重启Server。
    FORCE Server启动时强制执行升级过程,不管是否已经升级过。这个行为与之前 mysql_upgrade --force 相似。
    最后,如果用户对老的升级方式念念不忘,想要与之前的升级方式保持一致,只要在启动Server时,加选项 --upgrade=MINIMAL 就可以了。

     
    https://baijiahao.baidu.com/s?id=1636203681754169101&wfr=spider&for=pc
     
  • 相关阅读:
    Vagrant 扩大磁盘根目录
    阿里云 轻量应用服务器 vnc 远程桌面连接
    图片加水印C#源代码
    Asp.net网站Pdf加水印C#源代码
    [FAQ] uni-app 如何让页面不展示返回箭头图标
    [PHP] composer, PHP Fatal error: Allowed memory size of xx bytes exhausted
    [FE] uni-app 导航栏开发指南
    [FE] uni-app 动态改变 navigationBarTitleText 导航标题
    [FE] yarn, npm 切换镜像源
    [FAQ] Phpstorm 代码提示功能失效问题
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11304902.html
Copyright © 2011-2022 走看看