实战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后遇到的group by查询问题解决
  • MySQL/MariaDB/Percona数据库升级脚本
  • mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法
  • Mysql从5.6.14安全升级至mysql5.6.25的方法
  • linux下安装升级mysql到新版本(5.1-5.7)
  • Mysql5升级到Mysql5.5的方法
  • mysql版本5.5.x升级到5.6.x步骤分享
(0)

相关推荐

  • MySQL/MariaDB/Percona数据库升级脚本

    MySQL/MariaDB/Percona数据库升级脚本 MySQL/MariaDB/Percona数据库升级脚本截取<OneinStack>中upgrade_db.sh,一般情况下不建议升级数据库版本,该脚本专提供给各位版本控们.为防止大版本之间兼容问题,脚本默认仅支持同一大版本之间的升级,如:MySQL-5.6.25升级到MySQL-5.6.26.MySQL-5.5.44升级到MySQL-5.5.45.MariaDB-10.0.20升级到MariaDB-10.0.21:不能跨分支版本且不能

  • Mysql从5.6.14安全升级至mysql5.6.25的方法

    服务器上Mysql的版本为:社区版的mysql-community-server-5.6.14.近日局方对服务器进行漏洞扫描,发现zhyh08上的mysql存在几个高危漏洞,要求进行修复.受这几个漏洞影响的主要是5.6.17及以前的版本,所以将mysql升级至最新的5.6.25即可解决问题. 1.下载最新的mysql安装包(rpm文件),链接如下: MySQL-5.6.25-1.el6.x86_64.rpm-bundle.tar 2.备份数据库数据,这里使用的是mysqldump命令. 3.备份

  • Mysql5升级到Mysql5.5的方法

    安装5.5依赖安装包 代码如下 yum install -y autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* openssl* 安装cmake 代码如下 yum install -y cmake 在升级前,建议先将之前5.1的mysql及数据库目录备份一下 停止掉mysql 代码如下 service mysql stop 升级mysql 5.5.36 代码如下 http://download.csdn.ne

  • Mysql升级到5.7后遇到的group by查询问题解决

    发现问题 最近在将mysql升级到mysql 5.7后,进行一些group by 查询时,比如下面的 SELECT *, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY `inputtime` DESC LIMIT 20 就会报如下错误: SELECT list is not in GROUP BY clause and contains nonaggregated column 'news.id' which is not

  • mysql版本5.5.x升级到5.6.x步骤分享

    大概步骤是: 把配置文件添加:skip-grant-tables参数,把basedir升级成新版本,启动mysql,执行命令:mysql_upgrade升级一下字典信息,然后flush privileges;刷新授权表,注意:如果是使用共享表空间,最好是把数据导出来再导入新版,如果是使用独立表空间可以使用mysql_upgrade升级.如: 1. shell > service mysqld stop  #把实例停掉 复制代码 代码如下: shell > mv /usr/local/mysql

  • linux下安装升级mysql到新版本(5.1-5.7)

    今天需要把linux服务器上的mysql版本从5.1更新到5.7,那么以下内容作为记录,提供以后安装使用手册 第一步:检查linux的操作系统版本 复制代码 代码如下: cat /etc/issue 第二步:在mysql官网上下载5.7的版本 http://dev.mysql.com/downloads/file.php?id=451627 第三步:检查linux上以前安装的mysql版本 复制代码 代码如下: rpm -qa | grep mysql 第四步:如果出现mysql的一些安装版本,

  • mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法

    mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法如下所示: 修改mysql5.7的配置文件即可解决,方法如下: linux版:找到mysql的安装路径进入默认的为/usr/share/mysql/中,进行对my-default.cnf编辑 利用查找功能"/"找到"sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES" 将其删除或者是注释即可. windows版:32位找到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: 适合小版本的升级. 即 关闭当前的M

  • MySQL 升级方法指南大全第1/5页

    如果都是比较新的版本的升级可以参考下面的文章,MySQL数据库的版本更新很快,新的特性也随之不断的更新,更主要的是解决了很多影响我们应用的BUG,为了让我们的MySQL变得更美好,我们有必要去给它升级,尽管你会说它现在已经跑得很好很稳定完全够用了.下面我们来看看几种常用的升级方法. 介绍之前,我们先做一些声明,MySQL采用二进制包来安装,升级都是在同一台DB Server上操作. 第一种,很简单,适用于任何存储引擎. 1. 下载并安装好新版本的MySQL数据库,并将其端口改为3307(避免和旧

  • mysql自动定时备份数据库的最佳方法(windows服务器)

    网上有很多关于window下Mysql自动备份的方法,可是真的能用的也没有几个,有些说的还非常的复杂,难以操作. 我们都知道mssql本身就自带了计划任务可以用来自动备份,可是mysql咱们要怎么样自动有备份呢? 教大家一个最简单的方法. 这个方法是用bat批处理来完成的. 假想环境:MySQL 安装位置:D:\Program Files\MySQL\MySQL Server 5.0\data 如图: 数据库名称为:952game数据库备份目的地:d:\db_bak\ (你想把数据库备份到哪个盘

  • MYSQL环境变量设置方法

    mysql环境变量设置(windows环境) 1.对于命令控来说,在cmd命令下行下操作很方便,但有时需要直接在命令行床空执行mysql这样的命令,会出现"mysql不是内部或外部命令"这样的错误提示,原因是mysql其实是一个exe文件,存放于myql安装路径/bin下,因此需要将mysql的安装路径配置到path环境变量中,如此以后就不用每次都cd到mysql路径下了: 2.设置完成后我们再试试看-cmd-->mysql已经连接上mysql了,接下来我们可以使用dml.sql

  • Android实战RecyclerView头部尾部添加方法示例

    最近开启SDK Manager,突然发现android7.0的都有了,这迭代升级还真快.不过国内普遍手机还是停留在4.4+,多则是是处于5.0版本的.Android5.0变化非常大,引入material design,加强权限管理.减少功耗...好像扯远了0 0.现在直接进入主题.在这里先感谢读者的支持!! ListView是有addHeaderView和 addFooterView两个方法的. 但是作为官方推荐的ListView的升级版RecyclerView缺无法实现这两个方法. 那么如果使

  • 查看mysql当前连接数的方法详解

    1.查看当前所有连接的详细资料: ./mysqladmin -uadmin -p -h10.140.1.1 processlist2.只查看当前连接数(Threads就是连接数.): ./mysqladmin -uadmin -p -h10.140.1.1 status .查看当前所有连接的详细资料: mysqladmin -uroot -proot processlist D:\MySQL\bin>mysqladmin -uroot -proot processlist| Id | User

  • docker实现MySQL数据同步的方法

    大家好,今天分享一下docker的一个实战 我们使用docker 实现MySQL 的数据同步 搜索mysql 镜像 [root@localhost ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation- 12222 [OK] mariadb MariaDB Server is a high performing ope

  • Spring Data Exists查询最佳方法编写示例

    目录 简介 领域模型 如何不使用Spring Data来写Exists查询? 用findBy查询模拟存在 使用实例查询来检查存在性 如何使用Spring Data编写Exists查询 用existsBy查询方法检查存在性 用COUNT SQL查询来检查存在性 用CASE WHEN EXISTS SQL查询来检查存在性 结论 简介 在这篇文章中,我将向你展示编写Spring Data Exists查询的最佳方法,从SQL的角度来看,它是高效的. 在做咨询的时候,我遇到了几个常用的选项,而开发者却不

  • 用命令创建MySQL数据库(de1)的方法

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户 名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码. 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql> 2.连接到远程主机上的MYSQL.假设远程主机的IP为

随机推荐