-
升级方式
1) 小版本升级
使用mysql_upgrade升级不可跳级,从5.1升级到5.6,需要先升级到5.5;这种适合小版本升级。
MySQL升级本质上是对数据字典的升级,数据字典有:mysql、information_schema、performance_schema、sys schema。
2)大版本升级
logical upgrade:
适合不同操作系统的MySQL升级,大版本之间的升级 -
两者的区别
- in-place upgrade:
适合小版本的升级。
即 关闭当前的MySQL,替换当前的二进制文件或包,在现有的数据目录上重启MySQL,并运行
mysql_upgrade.
特点:不改变数据文件,升级速度快;但,不可以跨操作系统,不可以跨大版本(5.5—>5.7).
- logical upgrade:
适合不同操作系统的MySQL升级,大版本之间的升级。
即:使用mysqldump 或 mydumper 导入导出数据,实现版本的升级。
特点:可以跨操作系统,跨大版本;但,升级速度慢,容易出现乱码等问题
-
升级步骤
1)备份
升级前要备份与数据相关的所有文件,包括datadir,ib_logfile,ibdata1和binlog等
要理解 所谓的备份就是个拷贝的过程
2)升级
3)使用mysql_upgrade 检查不兼容的表。
4) 测试升级后是否能正常访问,查看MySQL版本,用户权限,访问用户数据,查看是否正常。
查看新版本的sql_mode值和旧版本中的sql_mode值是否相同。 -
升级注意事项
1) 升级前的备份重于一切
2)提前了解新版本变更的信息,切实弄清楚哪些不再兼容,不再支持哪些功能,增加了哪些功能)
3)关注sql_mode的变化
比如MySQL8已经取消了NO_AUTO_CREATE_USER这个关键词,所以从5.7升级的时候,需要取消掉NO_AUTO_CREATE_USER,否则升级完后设置sql_mode不能启动
备注: 这个值可以完成不同程度的数据校验,有效的保障数据的准确性。
4) 升级后要确保业务SQL能跑通,程序层正常
5)注意字符集乱码的问题。
6) 升级过程中多次启动建议加上 --skip-grant-tables和–skip-networking 参数,来保证没有任何的应用连接,让升级过程更加安全。
7)若主库有低于5.7的版本的,则从库不建议升级到5.7版本,否则会出现莫名其妙的sql报错。
8)若是主从模式,建议先升级从库,升级后从库会记录同步信息,所以不需要重新做主从同步,启动即可。