2.Mysql升级

Posted 站在巨人的肩上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.Mysql升级相关的知识,希望对你有一定的参考价值。

1.背景介绍

  当前随着mysql版本的迭代,Mysql的性能也是越来越好且新版中又添加了新的特性,因此对于目前服务器上的低版本Mysql升级也是一件刻不容缓的事情了! 

2.升级前知道的事情

  • 支持从 MySQL 5.7 升级到 8.0。但是,仅在正式发布 (GA) 版本之间支持升级。对于 MySQL 8.0,需要从 MySQL 5.7 GA 版本(5.7.9 或更高版本)升级。不支持从 MySQL 5.7 的非 GA 版本升级。

  • 在升级到下一个版本之前,建议升级到最新版本。例如,在升级到 MySQL 8.0 之前升级到最新的 MySQL 5.7 版本。

  • 不支持跳过版本的升级。例如,不支持直接从 MySQL 5.6 升级到 8.0。

  • 一旦发布系列达到正式发布 (GA) 状态,就支持在发布系列内升级(从一个 GA 版本到另一个 GA 版本)。例如,从 MySQL 8.0 升级。x到 8.0。y支持。(不支持涉及处于开发状态的非 GA 版本的升级。)还支持跳过版本。例如,从 MySQL 8.0 升级。x到 8.0。z支持。MySQL 8.0.11 是 MySQL 8.0 版本系列中的第一个 GA 状态版本。   

3.Mysql升级主要的事情

  第一步:检查当前Mysql版本下的数据库是否存在问题

    -->mysqlcheck -u root -p -S /data/3307/mysql.sock  --all-databases --check-upgrade      

  第二步:不得有使用不具有本机分区支持的存储引擎的分区表。要识别此类表,请执行以下查询    

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE NOT IN (\'innodb\', \'ndbcluster\')
AND CREATE_OPTIONS LIKE \'%partitioned%\';

  .....(省略)

  具体查看官网升级前要做的检查!   https://dev.mysql.com/doc/refman/8.0/en/upgrade-prerequisites.html

 

4.开始升级

  方法1:in-place upgrade(就地升级)  5.7-->8.0

      第一步:如果您通常运行配置为innodb_fast_shutdownset to 2(cold shutdown) 的MySQL 服务器 ,请通过执行以下任一语句将其配置为执行快速或慢速关机         

SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown

     第二步:关闭旧的 MySQL 服务器。例如:

      -->mysqladmin -u root -p shutdown

       第三步:下载新版版的Mysql(比如我的:这里可以将软连接重新指到最新版本的Mysql上)

       第四步:使用现有数据目录启动 MySQL 8.0 服务器。例如

           -->mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &               ##这里的datadir数据目录是旧版本5.7的数据目录路径

     第五步:  MySQL 8.0服务器启动成功后,执行Mysql_upgrade执行剩下的升级任务

          -->mysql_upgrade -u root -p   

       第六步:然后关闭并重新启动 MySQL 服务器以确保对系统表所做的任何更改生效。例如:

        -->mysqladmin -u root -p shutdown

        -->mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &

         

  方法2: logical upgrade(逻辑升级)

       第一步:从以前的 MySQL 安装导出现有数据(备份全库):           

mysqldump -u root -p
  --add-drop-table --routines --events
  --all-databases --force > data-for-upgrade.sql

      第二步:关闭旧的 MySQL 服务器。例如:

        -->mysqladmin -u root -p shutdown

      第三步:安装 MySQL 8.0  (此处可以参考前一章Mysql的安装流程)  包括初始化,启动,安全加固等等

      第四步:导入数据

        -->mysql -u root -p --force < data-for-upgrade.sql

      第五步:执行剩余的升级操作:在 MySQL 8.0.16 及更高版本中,关闭服务器,然后使用--upgrade=FORCE执行剩余升级任务选项重新启动它 

        -->mysqladmin -u root -p shutdown         ##关闭数据库

        -->mysqld_safe --user=mysql --datadir=/path/to/8.0-datadir --upgrade=FORCE &     ##启动并强制升级数据库

      第六步:在 MySQL 8.0.16 之前,执行 mysql_upgrade执行剩余的升级任务:

        -->mysql_upgrade -u root -p

        然后关闭并重新启动 MySQL 服务器以确保对系统表所做的任何更改生效。例如:

        -->mysqladmin -u root -p shutdown

        -->mysqld_safe --user=mysql --datadir=/path/to/8.0-datadir &

 

补充:

  关于mysql_upgrade命令参数:只升级系统表,不升级数据(在姜承尧的资料中有提到过,不过官方上升级并没有具体说明)

 -s, --upgrade-system-tables 
                      Only upgrade the system tables, do not try to upgrade the
                      data.

 

        

  

         

以上是关于2.Mysql升级的主要内容,如果未能解决你的问题,请参考以下文章

javascript 即兼容性升级页面样式片段

我升级到 Android Studio 2.3.3,一个旧的、无错误的程序现在给出错误:“片段应该是静态的......”

2.Mysql升级

将Xcode 8升级到XCode 9后出现AvCapture错误

片段已添加。支持库

组装条件升级后,getStartOffset 返回 assets 文件夹中文件的错误值