目录

【1】、升级操作

【2】、mysql 5.6安装(二进制)

【3】、mysql 5.7安装(二进制)

【1】、升级操作

核心步骤

【1.1】停止mysql 5.6

【1.2】把环境变量引用到Mysql 5.7 二进制文件目录

【1.3】 起服,然后在linux环境下使用,mysql_upgrade -uroot -p -s --force  升级 (-s参数是只升级系统表,不加该参数使用该命令其实是把5.6的所有表数据以5.7的方式全部重建一次,需要耗时很久)

  1. --停止mysql
  2. /etc/init.d/mysqld stop
  3.  
  4. --解除5.6链接
  5. [root@mysql02 local]# unlink mysql
  6. [root@mysql02 local]# ll
  7. 总用量
  8. drwxr-xr-x. root root 9 bin
  9. drwxr-xr-x. root root 9 etc
  10. drwxr-xr-x. root root 9 games
  11. drwxr-xr-x. root root 9 include
  12. drwxr-xr-x. root root 9 lib
  13. drwxr-xr-x. root root 9 lib64
  14. drwxr-xr-x. root root 9 libexec
  15. drwxr-xr-x. root mysql 7 : mysql-5.6.-linux-glibc2.-x86_64
  16. -rw-r--r--. root root 6 : mysql-5.6.-linux-glibc2.-x86_64.tar.gz
  17. -rw-r--r--. root root 5 : mysql-5.7.-linux-glibc2.-x86_64.tar.gz
  18. drwxr-xr-x. root root 9 sbin
  19. drwxr-xr-x. root root 7 : share
  20. drwxr-xr-x. root root 9 src
  21.  
  22. --创建5.7的链接
  23. [root@mysql02 local]# ln -s mysql-5.7.-linux-glibc2.-x86_64 mysql
  24. [root@mysql02 local]# ll
  25. 总用量
  26. drwxr-xr-x. root root 9 bin
  27. drwxr-xr-x. root root 9 etc
  28. drwxr-xr-x. root root 9 games
  29. drwxr-xr-x. root root 9 include
  30. drwxr-xr-x. root root 9 lib
  31. drwxr-xr-x. root root 9 lib64
  32. drwxr-xr-x. root root 9 libexec
  33. lrwxrwxrwx. root root 7 : mysql -> mysql-5.7.-linux-glibc2.-x86_64
  34. drwxr-xr-x. root mysql 7 : mysql-5.6.-linux-glibc2.-x86_64
  35. -rw-r--r--. root root 6 : mysql-5.6.-linux-glibc2.-x86_64.tar.gz
  36. drwxr-xr-x. root root 7 : mysql-5.7.-linux-glibc2.-x86_64
  37. -rw-r--r--. root root 5 : mysql-5.7.-linux-glibc2.-x86_64.tar.gz
  38. drwxr-xr-x. root root 9 sbin
  39. drwxr-xr-x. root root 7 : share
  40. drwxr-xr-x. root root 9 src
  41.  
  42. --升级
  43. [root@mysql02 bin]# mysql_upgrade -u root -p
  44. Enter password:
  45. Checking if update is needed.
  46. Checking server version.
  47. Running queries to upgrade MySQL server.
  48. Checking system database.
  49. mysql.columns_priv OK
  50. mysql.db OK
  51. mysql.engine_cost OK
  52. mysql.event OK
  53. mysql.func OK
  54. mysql.general_log OK
  55. mysql.gtid_executed OK
  56. mysql.help_category OK
  57.  
  58. --登陆
  59. [root@mysql02 bin]# mysql -u root -p
  60. Enter password:
  61. Welcome to the MySQL monitor. Commands end with ; or \g.
  62. Your MySQL connection id is
  63. Server version: 5.7.-log MySQL Community Server (GPL)
  64.  
  65. Copyright (c) , , Oracle and/or its affiliates. All rights reserved.
  66.  
  67. Oracle is a registered trademark of Oracle Corporation and/or its
  68. affiliates. Other names may be trademarks of their respective
  69. owners.
  70.  
  71. --在生产环境当中只需要升级系统表即可
  72. mysql_upgrade -u root -p -s --force

二、mysql5.6、5.7 安装

  【2.1】下载与解压

    mysql官网下载过来,这里就不具体描述了(不会的参考:如何下载数据库?

    这里5.6和5.7的二进制包全部下载好了,并且解压好了。这里我的目录是 /mysql/app/

      

  【2.2】对解压好的5.6文件夹做软连接

    ln -s mysql-5.6.45-linux-glibc2.12-x86_64 mysql

      

  【2.3】准备好my.cnf文件(/mysql/data/3306/my.cnf)

  1. [mysqld]
  2. server-id =
  3. port =
  4. user = mysql
  5. datadir = /mysql/data//data
    basedir = /mysql/app/mysql #这个如果不加,无法使用默认的support-files/mysql.server 文件启动,且配置文件必须放在4个读取路径下
    #参数文件默认读取顺序:【1】/etc/my.cnf  【2】/etc/mysql/my.cnf  【3】/usr/local/mysql/my.cnf  【4】~/.my.cnf

  【2.4】创建mysql用户,并且配置文件上的目录全部要新建好,并且授权给mysql

  1. groupadd mysql
  2. useradd mysql -r -g mysql -s /sbin/false  
  3. mkdir -p /mysql/data//data
    chown -R mysql:mysql /mysql
    chomd 755 /mysql

  【2.5】设置环境变量  

  1. echo 'export PATH=/mysql/app/mysql/bin:$PATH'>>/etc/profile
  2. source /etc/profile

  【2.6】开始安装

  1. #5.6 切换到 /mysql/app/mysql下
    ./scripts/mysql_install_db --user=mysql --defaults-file=/mysql/data/3306/my.cnf --basedir=/mysql/app/mysql
  2.  
  3. #5.7 初始化
    mysqld --initialize --defaults-file=/mysql/data/3306/my.cnf --basedir=/mysql/app/mysql --user=mysql --console

  【2.7】启动

  1. mysqld_safe --defaluts-file=/mysql/data//my.cnf --user=mysql

  【2.8】登录

  1. #5.6直接输入mysql即可,mysql5.6没有默认密码
  2. mysql
  3.  
  4. #5.7 需要输入密码
    #一般情况下,密码再错误日志里面 但是我们上面初始化的时候,加了参数 --console 这就会在屏幕上打印出来,找到密码复制即可
    mysql -uroot -p -h127.0.0.1
  1.  

 

MySQL 5.6升级5.7都有什么注意事项

一、升级方式

MySQL升级的方式一般来说有两种
1、通过inplace方式原地升级,升级系统表
2、通过新建实例,高版本作为低版本的从库进行滚动升级

MySQL5.7版本做了非常多的改变,升级5.6到5.7时需要考虑兼容性,避免升级到5.7之后因为种种参数设置不正确导致业务受影响,建议首先逐一查看release note

二、需要注意的参数及问题:

1、sql_mode:MySQL 5.7采用严格模式,例如ONLY_FULL_GROUP_BY等
2、innodb_status_output_locks:MySQL 5.7支持将死锁信息打印到error log(其实这个参数MySQL 5.6就已支持)
3、innodb_page_cleaners:MySQL 5.7将脏页刷新线程从master线程独立出来了,对应参数为innodb_page_cleaners
4、innodb_strict_mode:控制CREATE TABLE, ALTER TABLE, CREATE INDEX, 和 OPTIMIZE TABLE的语法问题
5、show_compatibility_56=ON:控制show变量及状态信息输出,如果未开启show status 命令无法获取Slave_xxx 的状态
6、log_timestamps:控制error log/slow_log/genera log日志的显示时间,该参数可以设置为:UTC 和 SYSTEM,但是默认使用 UTC
7、disable_partition_engine_check:在表多的情况下可能导致启动非常慢
8、range_optimizer_max_mem_size:范围查询优化参数,这个参数限制范围查询优化使用的内存,默认8M
9、MySQL 5.7新增优化器选项derived_merge=on,可能导致SQL全表扫描,而在MySQL 5.6下可能表现为auto key
10、innodb_undo_directory && innodb_undo_logs:MySQL 5.7支持将undo从ibdata1独立出来(只支持实例初始化,不支持在线变更)
11、主从复制问题:MySQL5.7到小于5.6.22的复制存在bug(bug 74683)
12、SQL兼容性问题:SQL在MySQL 5.7和MySQL 5.6环境下结果可能不一致,因此建议获取线上SQL,在同样数据的环境下,在两个实例运行获取到的结果计算hash,比较hash值做兼容性判断

三、友情提醒

1、升级前一定要做好备份!!!
2、升级正式环境前提前在测试环境进行仔细测试,确认无误以后再升级正式环境
3、做好相应的回退方案

【0.1】mysql版本升级(5.6升级到5.7)的更多相关文章

  1. MySQL/MariaDB/Percona数据库升级脚本

    MySQL/MariaDB/Percona数据库升级脚本截取<OneinStack>中upgrade_db.sh, 一般情况下不建议升级数据库版本,该脚本专提供给各位版本控们.为防止大版本 ...

  2. mysql 5.6.15升级到5.6.43

    今天闲来无事,观察测试环境的zabbix服务器,发现内存泄漏严重,于是重启了,想起了前几天写的帖子发生了严重的内存泄漏可以把mysql升级到最新的小版本 于是乎就试着升级 old version:5. ...

  3. MySQL版本升级之5.6到5.7

    两种升级方式 In-Place Upgrade: Involves shutting down the old MySQL version, replacing the old MySQL binar ...

  4. MySQL 5.1.73升级为MySQL 5.5.35详解

    一.前言 二.概述 三.安装MySQL 5.1.73 四.升级为MySQL 5.5.35 五.总结 注,测试环境 CentOS 6.4 x86_64,MySQL 版本(5.1.73.5.5.35)目前 ...

  5. 24.Mysql高级安装和升级

    24.Mysql高级安装和升级24.1 Linux/Unix平台下的安装 24.1.1 安装包比较Linux下的Mysql安装包分为RPM包.二进制包.源码包3种.RPM包优点是安装简单,适合初学者: ...

  6. 在CentOS上把MySQL从5.5升级到5.6(转)

    http://www.th7.cn/db/mysql/201408/66064.shtml 在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5 ...

  7. 在CentOS上把MySQL从5.5升级到5.6

    在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的 ...

  8. mysql从5.6升级到5.7后出现 Expression #1 of ORDER BY clause is not in SELECT list,this is incompatible with DISTINCT

    [问题]mysql从5.6升级到5.7后出现:插入数据和修改数据时出错Caused by: com.ibatis.common.jdbc.exception.NestedSQLException: - ...

  9. 8.0.17 MySQL Community Server 二进制手工安装

    8.0.17 MySQL Community Server 二进制手工安装 环境简介 操作系统:Centos 6.10 64位目前版本:8.0.17 MySQL Community Server 二进 ...

  10. Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

随机推荐

  1. nodeJS环境搭建

    1. Node.js是什么 1.1 Node.js是一个基于Chrome V8引擎的[JavaScript运行环境]. Node.js使用了一个事件驱动.非阻塞式I/O 的模型. 1.2 Node.j ...

  2. hdu 5831 Rikka with Parenthesis II 括号匹配+交换

    Rikka with Parenthesis II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  3. 24.Python比较运算符(关系运算符

    比较运算符,也成关系运算符,用于对常量.变量或表达式的结果进行大小.真假等比较,如果比较结果为真,则返回 True:反之,则返回 False. Python 支持的比较运算符如表 1 所示. 表 1 ...

  4. 关于开发APP接口版本不兼容的问题

    关于 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改. 新的APP和接口开发后,接口如何兼容老的APP? 有的公司 每次发布完APP ...

  5. Travis-CI自动化测试并部署至自己的CentOS服务器

    一直都想自己部署一下自动化测试部署,在了解了Travis-CI之后终于准备在这次和小伙伴一起做的一个博客类网站实验下了. 因为这是一个前后端分离的项目,所以我这里只管前端工程的自动化部署,前端主要用V ...

  6. 使用SpringBoot校验客户端传来的数据

    前端的数据校验都是辣鸡!后端天下第一! 很多时候我们后端需要前端传数据过来, 比如注册, 修改用户名, 修改密码等等.很可能有些用户就喜欢搞事, 喜欢发一大堆乱七八糟的数据到后端来, 甚至有些前端老哥 ...

  7. springboot 2.2.0 SNAPSHOT 解决 repositories.repository.id must be unique 的问题

    如果打包 jar 也报错了 ,那也是这个的原因,注释掉即可 <!-- 这个仓库必须注释掉 否则打包 war 的时候 , 会报错 'repositories.repository.id' must ...

  8. Spring Boot学习笔记(1)

    @SpringBootApplication用于注解Spring启动类,如下所示 @SpringBootApplication public class Application { public st ...

  9. spark streaming 5: InputDStream

    InputDStream的继承关系.他们都是使用InputDStream这个抽象类的接口进行操作的.特别注意ReceiverInputDStream这个类,大部分时候我们使用的是它作为扩展的基类,因为 ...

  10. 显示和隐藏(display属性)

    网页中经常会看到显示和隐藏的效果,可通过display属性来设置. 语法: Object.style.display = value 注意:Object是获取的元素对象,如通过document.get ...