美文网首页DBA
MySQL 5.7升级到8.0

MySQL 5.7升级到8.0

作者: mysia | 来源:发表于2020-02-21 17:46 被阅读0次

    原地升级

    原地升级包括关闭旧的MySQL服务器,用新的MySQL二进制文件或软件包替换旧的MySQL二进制文件或软件包,在现有数据目录上重新启动MySQL以及升级现有安装中需要升级的任何其余部分。

    注意
    如果要升级最初通过安装多个RPM软件包而产生的安装,请升级所有软件包,而不只是某些软件包。例如,如果您以前安装了服务器和客户端RPM,则不要仅升级服务器RPM。
    对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上,未安装mysqld_safe。在这种情况下,请使用systemd来启动和关闭服务器,而不要使用以下说明中使用的方法。

    要执行原地升级:

    1. 备份好数据,包括系统库;
    2. 知晓数据库驱动、字段类型等兼容性问题;
    3. 如果使用了innodbXA事务,在升级之前运行XA RECOVER来检查未提交的XA事务。如果返回结果,则通过XA COMMIT或者XA ROLLBACK语句来提交或者回滚XA事务;
    4. 如果存在加密的InnoDB表空间,请执行以下语句:
    ALTER INSTANCE ROTATE INNODB MASTER KEY;
    
    1. 如果使用innodb_fast_shutdown=2来启动MySQL服务器,通过执行以下任一语句,将其配置为执行快速或慢速关闭:
    SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
    SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
    

    通过快速关闭或缓慢关闭,InnoDB会将其撤消日志和数据文件保持在某种状态下,以防止版本之间的文件格式差异。

    1. 关闭旧的MySQL服务器。例如:
    mysqladmin -u root -p shutdown
    
    1. 升级MySQL二进制文件或软件包。如果要升级二进制安装程序,请解压缩新的MySQL二进制分发程序包。对于基于软件包的安装,请安装新软件包。
    2. 使用现有数据目录启动MySQL 8.0服务器。例如:
    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
    
    1. 在上一步中,服务器将根据需要升级数据字典。现在有必要执行所有剩余的升级操作:
    • 从MySQL 8.0.16开始,服务器将在上一步中完成此操作:在MySQL 5.7和MySQL 8.0之间的mysql系统模式中进行所需的任何更改,以便可以利用新的特性或功能。它还使MySQL 8.0的Performance Schema,INFORMATION_SCHEMA和sys模式保持最新,并检查所有用户模式与当前版本的MySQL的兼容性。
    • 在MySQL 8.0.16之前,服务器仅在上一步中升级数据字典。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 &
    

    第一次启动MySQL 8.0服务器时(在较早的步骤中),可能会在错误日志中注意到有关未升级表的消息。如果mysql_upgrade已成功运行,则第二次启动服务器时不应出现此类消息。

    注意
    升级过程不会升级时区表的内容。如果升级过程使用mysql_upgrade(即MySQL 8.0.16之前的版本),则该过程也不会升级帮助表的内容。

    相关文章

      网友评论

        本文标题:MySQL 5.7升级到8.0

        本文链接:https://www.haomeiwen.com/subject/abacqhtx.html