在CentOS 6.9 环境升级MySQL 5.6.36到5.7.18的过程记录。
升级方法很简单
1、安全关闭数据库
[root@001 ~]# service mysqld stop
2、上传mysql5.7.18 到服务器上并解压到/usr/local
[root@001 ~]# tar zxf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
3、取消5.6的软连接,并建立5.7新链接
[root@001 ~]# cd /usr/local/
[root@001 local]# unlink mysql
[root@001 local]# ln -sv mysql-5.7.18-linux-glibc2.5-x86_64/ mysql
[root@001 local]# cp -rf /data/mysqldata/mysql mysql_old #这里先备份预防后期想退回,如果想回滚版本只需将备份的mysql_old替换层mysql,然后按照下面步骤操作即可
[root@001 local]# service mysqld start
Starting MySQL.............................................. SUCCESS!
4、以上步骤其实已经升级成功,也能启动成功,但只能保证数据文件将可以兼容。需要使用 mysql_upgrade 来将5.6的文件升级到5.7
[root@001 local]# mysql_upgrade -uroot -p
#参数 -s 一定要加,表示只更新系统表,如果不加-s,则会把所有库的表以5.7.9的方式重建,线上千万别这样操作
#因为数据库二进制文件是兼容的,无需升级
#什么时候不需要-s ? 当一些老的版本的存储格式需要新的特性,
# 来提升性能时,不加-s
#即使通过slave进行升级,也推荐使用该方式升级,速度比较快
[root@001 local]# mysql -V #查看mysql版本
升级成功!!!
注意:
如果原来数据二进制文件保存在/usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/data目录下,在升级之前,要么将该目录的数据拷贝到新的你指定的data目录(比如/usr/local/mysql-5.7.9-linux-glibc2.5-x86_64/data ),要么修改my.cnf,将datadir指向/usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/data,总之一定要确保my.cnf中的数据位置和你实际的数据位置是一致的,不管是默认的也好,还是你datadir指定的也好