这篇文章给大家从理论到实战详细分享了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升级的最佳方法相关推荐

  1. MySQL升级的最佳实践

    2019独角兽企业重金招聘Python工程师标准>>> 前言 MySQL5.7新增了不少新功能,比如:Online DDL.多源复制.增强半同步.表空间传输.sys 库.Group ...

  2. 移动端访问mysql_java – (可能)数百个移动客户端访问MySQL数据库的最佳方法是什么?...

    所以这里是交易. 我正在开发一个 Android应用程序(虽然它可以像任何其他移动平台一样容易)偶尔会向服务器发送查询(编写的是Java).然后,该服务器将在MySQL数据库中搜索查询,并将结果发送回 ...

  3. 保障MySQL安全的十四个最佳方法

    MySQL数据库一贯以高性能.高可性和易用性著称,它已经成为世界上最流行的开源数据库.大量的个人.WEB开发者.大型公司等都在其网站.关键系统.软件包中广泛使用MySQL数据库. 通常,许多企业在部署 ...

  4. mysql使用什么替代like查询_mysql替代like模糊查询的最佳方法?????求赐教!!!!...

    MySQL 模糊查询 最佳 索引 最近做一个项目,商品分类的属性,有30多个属性值,编辑的时候,是把所选属性的int值整合成一个字符串,写进数据库..这样前台查询的时候,选择属性,和数据库的属性字符串 ...

  5. Mysql时区设置最佳实践,mysql设置时区_修改MySQL时区设置的方法

    摘要 腾兴网为您分享:修改MySQL时区设置的方法,一直播,一点开,小猿口算,汤圆等软件知识,以及都优乐,daysmatter,乐学高考app,随缘漂流瓶,虚拟软件,平安知鸟,智能证件照app,新概念 ...

  6. MySQL数据库多种安装方法及企业级安装实践

    本文来自老男孩老师第三本书籍著作<老男孩的MySQL私房菜>第三章内容分享! 3.1 MySQL数据库的安装方法及选择 在当今的互联网企业里,MySQL数据库大多运行在Linux系列操作系 ...

  7. python定义字符串数组_从字符串数组(或元组)在Python中创建动态sql“ in list”子句的“最佳”方法是什么?...

    我正在从Python(使用MySQLDb)运行一个动态MySQL查询,该查询包括一个包含字符串值的" in list"子句.执行此功能的函数将获取一个值数组.如果有帮助,我可以将该 ...

  8. 在SQL Server中分页结果的最佳方法是什么

    如果您还希望获得结果总数(在进行分页之前),那么在SQL Server 2000.2005.2008.2012中对结果进行分页的最佳方法是(性能明智的)? #1楼 最终, Microsoft SQL ...

  9. jsp mysql中文乱码,jsp中文乱码 jsp mysql 乱码的解决方法

    jsp中文乱码 jsp mysql 乱码的解决方法 jsp中文乱码 jsp mysql 乱码要servlet里面支持中文的方法: 在dopost或者doget的第一句加上: request.setCh ...

最新文章

  1. Eclipse下新建Maven项目、自动打依赖jar包
  2. codevs 2612 最有分解方案 (贪心)
  3. oracle notes,Oracle Notes
  4. window.onload和$(document).ready(function(){})的区别
  5. 关于'java' 不是内部或外部命令,也不是可运行的程序 或批处理文件 和 错误: 找不到或无法加载主类 helloworld的问题...
  6. 根据一个数字日期,判断这个日期是这一年的第几天
  7. C语言输出字母小树,数字小树,**号小树
  8. MapReduce-多个Mapper
  9. 2.1 script 元素
  10. Elixir:可能成为下一代Web开发语言
  11. npm notice created a lockfile as package-lock.json. You should commit this file.
  12. 3.20计算机组成原理课堂笔记
  13. 前端HTML中防止用户在短时间内频繁多次点击按钮
  14. 13.1.X:ByteScout PDF Extractor SDK
  15. 最近 火火火 的 GitHub 项目!
  16. java 数字转大写 100行内搞定
  17. nohup java -jar 命令启动jar包,项目仍然会莫名其妙挂掉的解决方法
  18. 解决java关键字和bean变量名内容冲突的神器
  19. 中心损失和单中心损失
  20. android 闹钟不响,为什么我写的Android闹钟到时间时却不会响

热门文章

  1. 24-移动端app数据爬取
  2. webdriver之select、alert、prompt、confirm
  3. 人生哲理 |南怀瑾最经典的50句话
  4. SDN中的Heavy-Hitter测量文献阅读
  5. python日记----2017.8.1
  6. Linux动态库应用
  7. FPGA开发经验谈-FPGA 设计的四种常用思想与技巧(二)
  8. 用 git 保存空目录
  9. linux可以装在硬盘吗,在硬盘上安装Linux系统
  10. c语言int val,c语言不定参数与printf函数的实现