MySQL使用过程当中常由于某些bug或者新特性需求进行版本升级,生产环境通常升级有两种方法,原地升级和逻辑升级,逻辑升级就是比较纯粹的导入导出,耗时较长,最妥当。原地升级则是用新版本拉起旧版本数据后更新元数据,耗时少,可能很小几率会有问题,这里咱们走一遍原地升级的流程。mysql
停库 ---> 备份 ---> 拉起 ---> 更新sql
[root@master mysql]# mysql -e "\s" |grep 'Server version' |awk '{print $3}' 5.6.39
注意停库的时候慢一点,最大程度保证数据完整性(full purge and a change buffer merge before shutting down)rest
[root@master mysql]# mysql -e "SET GLOBAL innodb_fast_shutdown = 0;" [root@master mysql]# /etc/init.d/mysql.server stop Shutting down MySQL.. SUCCESS! [root@master mysql]# cp -r /data/mysql /data/mysql_bak
[root@master local]# unlink mysql [root@master local]# ln -s mysql-5.7.23-el7-x86_64/ mysql [root@master local]# /etc/init.d/mysql.server start Starting MySQL.. SUCCESS!
这里用了-s参数(--upgrade-system-tables),表示只更新系统表(元数据表),不更新数据,数据方面高版本是兼容低版本的,具体用法参考mysql_upgrade --help
更新完记得重启一哈code
[root@master local]# mysql_upgrade -s The --upgrade-system-tables option was used, databases won't be touched. Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. Upgrading the sys schema. Upgrade process completed successfully. Checking if update is needed. [root@master ~]# /etc/init.d/mysql.server restart Shutting down MySQL.... SUCCESS! Starting MySQL. SUCCESS!
[root@master local]# mysql -e "\s" |grep 'Server version' |awk '{print $3}' 5.7.23
①能够跨大版本升级,但必须先备份,必须
②互联网公司升级方案:主从--->升级从--->主从互换--->升级原主
③降级也是用这个命令,mysql_upgrade -s,通常不降级,了解一下,小版本之间能够降级 5.7.2到5.7.1这种 ,大版本之间是不能够的server