• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    实战MySQL升级的最佳方法

    MySQL5.7新增了不少新功能,比如:Online DDL、多源复制、增强半同步、表空间传输、sys 库、Group Replication等。最近终于等到了一个机会,将MySQL升级到5.7,很是兴奋不已。

    MySQL升级的概述

    MySQL升级的实质:

    对数据字典的升级

    数据字典有:mysql、information_schema、performance_schema、sys schema。

    MySQL升级的两种方式:

    in-place upgrade:

    适合小版本的升级。

    即 关闭当前的MySQL,替换当前的二进制文件或包,在现有的数据目录上重启MySQL,并运行mysql_upgrade.

    特点:不改变数据文件,升级速度快;但,不可以跨操作系统,不可以跨大版本(5.5—>5.7).

    logical upgrade:

    适合不同操作系统的MySQL升级,大版本之间的升级。

    即:使用mysqldump 或 mydumper 导入导出数据,实现版本的升级。

    特点:可以跨操作系统,跨大版本;但,升级速度慢,容易出现乱码等问题。

    升级前的准备:

    提前做好备份。

    了解新版本变更的信息(哪些不再兼容,不再支持哪些功能)

    在官方网站的general information—>what is new in mysql 5.7

    升级的注意事项:

    确认新版本是否有重大变更

    注意 SQL mode 的变化

    比如:在MySQL5.7中发生了SQL mode的变化,对不再支持的SQL mode,部分SQL会跑不通,此时可以清空SQL mode,跑完之后在设置SQL mode。

    升级成功后,确认业务SQL是否可以跑通

    程序层是否都正常

    有时原使用的程序语言部分内容不被支持新版本数据库。比如,有一次在5.1时用的是PHP4.0,但升级到5.6,PHP的某些函数不被支持。

    在升级完成之后,一定要在测试时使用和线上版本相同的程序,测试是否存在问题。

    存储引擎的变化

    比如:在未来的5.8版本,不再支持myisam 引擎。

    注意字符集的乱码问题

    接下来是,使用in-place upgrade方式,将MySQL5.6升级到MySQL5.7。

    In-place upgrade 升级MySQL

    环境:

    5.6.15 —>5.7.20

    升级前的准备:

    备份+留意新版本的变更内容
    升级操作:

    1、对5.7的软件包,下载,解压

    # tar -xzvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
    # ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql5.7

    2、关闭当前MySQL(5.6)

    # mysql -u root -p -S /data/mysql3308/mysql3308.sock --execute="SET GLOBAL innodb_fast_shutdown=0"
    # mysqladmin -u root -p -S /data/mysql3308/mysql3308.sock shutdown

    3、替换二进制文件(5.7 替换 5.6)

    # cd /usr/local
    # mv mysql  mysql5.6
    # mv mysql5.7 mysql

    4、使用现有的数据目录启动MySQL

    # mysqld_safe --user=mysql --socket=/data/mysql3308/mysql3308.sock -p --skip-grant-tables --datadir=/data/mysql3308/data

    5、检查所有表是否与当前版本兼容,并更新系统库

    # mysql_upgrade -uroot -p -S /data/mysql3308/mysql3308.sock
    注:mysql_upgrade的作用是检查所有库的所有表是否与当前的新版本兼容,并更新系统库。

    6、重启,确保对系统表所做的变更得以生效

    # mysqld --defaults-file=/data/mysql3308/my3308.cnf 
    # mysql -uroot -p -S /data/mysql3308/mysql3308.sock

    至此,升级完成。

    问题:对MySQL做升级,若升级失败了怎么办?

    在做升级时,一般创建一个从库进行升级,若升级失败,也不会影响到主库;若升级成功,测试也成功,便会将其他的从库也逐渐升级到新版本,最后将主库下线,提升一个从库做新主库,对旧主库进行版本升级。

    您可能感兴趣的文章:
    • MySQL 5.7.30 安装与升级问题详细教程
    • Docker版的MySQL5.7升级到MySQL8.0.13,数据迁移
    • phpstudy2018升级MySQL5.5为5.7教程(图文)
    • CentOS 7中升级MySQL 5.7.23的坑与解决方法
    • 升级到MySQL5.7后开发不得不注意的一些坑
    • phpStudy中升级MySQL版本到5.7.17的方法步骤
    • Win下Mysql5.6升级到5.7的方法
    • Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程
    • MySQL数据库升级的一些"陷阱"
    上一篇:浅析MySQL显式类型转换
    下一篇:Mysql解决USE DB堵塞详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    实战MySQL升级的最佳方法 实战,MySQL,升级,的,最佳,