目录
【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的方式全部重建一次,需要耗时很久)
--停止mysql /etc/init.d/mysqld stop --解除5.6链接 [root@mysql02 local]# unlink mysql [root@mysql02 local]# ll 总用量 951200 drwxr-xr-x. 2 root root 4096 9月 23 2011 bin drwxr-xr-x. 2 root root 4096 9月 23 2011 etc drwxr-xr-x. 2 root root 4096 9月 23 2011 games drwxr-xr-x. 2 root root 4096 9月 23 2011 include drwxr-xr-x. 2 root root 4096 9月 23 2011 lib drwxr-xr-x. 2 root root 4096 9月 23 2011 lib64 drwxr-xr-x. 2 root root 4096 9月 23 2011 libexec drwxr-xr-x. 12 root mysql 4096 7月 14 18:14 mysql-5.6.44-linux-glibc2.12-x86_64 -rw-r--r--. 1 root root 329105487 6月 9 21:55 mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz -rw-r--r--. 1 root root 644869837 5月 19 22:59 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz drwxr-xr-x. 2 root root 4096 9月 23 2011 sbin drwxr-xr-x. 5 root root 4096 7月 9 06:03 share drwxr-xr-x. 2 root root 4096 9月 23 2011 src --创建5.7的链接 [root@mysql02 local]# ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql [root@mysql02 local]# ll 总用量 951204 drwxr-xr-x. 2 root root 4096 9月 23 2011 bin drwxr-xr-x. 2 root root 4096 9月 23 2011 etc drwxr-xr-x. 2 root root 4096 9月 23 2011 games drwxr-xr-x. 2 root root 4096 9月 23 2011 include drwxr-xr-x. 2 root root 4096 9月 23 2011 lib drwxr-xr-x. 2 root root 4096 9月 23 2011 lib64 drwxr-xr-x. 2 root root 4096 9月 23 2011 libexec lrwxrwxrwx. 1 root root 35 7月 17 21:46 mysql -> mysql-5.7.26-linux-glibc2.12-x86_64 drwxr-xr-x. 12 root mysql 4096 7月 14 18:14 mysql-5.6.44-linux-glibc2.12-x86_64 -rw-r--r--. 1 root root 329105487 6月 9 21:55 mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz drwxr-xr-x. 9 root root 4096 7月 17 21:46 mysql-5.7.26-linux-glibc2.12-x86_64 -rw-r--r--. 1 root root 644869837 5月 19 22:59 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz drwxr-xr-x. 2 root root 4096 9月 23 2011 sbin drwxr-xr-x. 5 root root 4096 7月 9 06:03 share drwxr-xr-x. 2 root root 4096 9月 23 2011 src --升级 [root@mysql02 bin]# mysql_upgrade -u root -p Enter password: Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. Checking system database. mysql.columns_priv OK mysql.db OK mysql.engine_cost OK mysql.event OK mysql.func OK mysql.general_log OK mysql.gtid_executed OK mysql.help_category OK --登陆 [root@mysql02 bin]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 4 Server version: 5.7.26-log MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. --在生产环境当中只需要升级系统表即可 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)
[mysqld] server-id = 3306 port = 3306 user = mysql datadir = /mysql/data/3306/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
groupadd mysql useradd mysql -r -g mysql -s /sbin/false mkdir -p /mysql/data/3306/data
chown -R mysql:mysql /mysql
chomd 755 /mysql
【2.5】设置环境变量
echo 'export PATH=/mysql/app/mysql/bin:$PATH'>>/etc/profile source /etc/profile
【2.6】开始安装
#5.6 切换到 /mysql/app/mysql下
./scripts/mysql_install_db --user=mysql --defaults-file=/mysql/data/3306/my.cnf --basedir=/mysql/app/mysql
#5.7 初始化
mysqld --initialize --defaults-file=/mysql/data/3306/my.cnf --basedir=/mysql/app/mysql --user=mysql --console
【2.7】启动
mysqld_safe --defaluts-file=/mysql/data/3306/my.cnf --user=mysql
【2.8】登录
#5.6直接输入mysql即可,mysql5.6没有默认密码 mysql
#5.7 需要输入密码
#一般情况下,密码再错误日志里面 但是我们上面初始化的时候,加了参数 --console 这就会在屏幕上打印出来,找到密码复制即可
mysql -uroot -p -h127.0.0.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、做好相应的回退方案