服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - 实战MySQL升级的最佳方法

实战MySQL升级的最佳方法

2020-08-23 17:16star_glm Mysql

这篇文章给大家从理论到实战详细分享了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的软件包,下载,解压

?
1
2
# 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)

?
1
2
# 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)

?
1
2
3
# cd /usr/local
# mv mysql  mysql5.6
# mv mysql5.7 mysql

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

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

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

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

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

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

至此,升级完成。

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

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

原文链接:https://my.oschina.net/starglm/blog/1588055

延伸 · 阅读

精彩推荐
  • MysqlERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 2 ...

    MYSQL教程网6402020-03-13
  • MysqlMySQL锁的知识点总结

    MySQL锁的知识点总结

    在本篇文章里小编给大家整理了关于MySQL锁的知识点总结以及实例内容,需要的朋友们学习下。...

    别人放弃我坚持吖4362020-12-14
  • Mysql浅谈mysql 树形结构表设计与优化

    浅谈mysql 树形结构表设计与优化

    在诸多的管理类,办公类等系统中,树形结构展示随处可见,本文主要介绍了mysql 树形结构表设计与优化,具有一定的参考价值,感兴趣的小伙伴们可以参...

    小码农叔叔5242021-11-16
  • Mysql详解MySQL中的分组查询与连接查询语句

    详解MySQL中的分组查询与连接查询语句

    这篇文章主要介绍了MySQL中的分组查询与连接查询语句,同时还介绍了一些统计函数的用法,需要的朋友可以参考下 ...

    GALAXY_ZMY5432020-06-03
  • MysqlMySQL数据库varchar的限制规则说明

    MySQL数据库varchar的限制规则说明

    本文我们主要介绍了MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,希望能够对您有所帮助。 ...

    mysql技术网4192019-11-23
  • Mysqlmysql 不能插入中文问题

    mysql 不能插入中文问题

    当向mysql5.5插入中文时,会出现类似错误 ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column ...

    MYSQL教程网5722019-11-25
  • Mysql解决MySQl查询不区分大小写的方法讲解

    解决MySQl查询不区分大小写的方法讲解

    今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    Veir_dev5592019-06-25
  • MysqlMySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码

    这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    逆心2962019-06-23