2、了解新版本变更的信息(哪些不再兼容,不再支持哪些功能)。
1、确认新版本是否有重大变更
2、注意 SQL mode 的变化,比如:MySQL5.7发生了SQL mode的变化,对不再支持的SQL mode,部分SQL会跑不通,可以清空SQL mode,跑完之后在设置SQL mode。
3、升级成功后,确认业务SQL是否可以跑通,程序层是否都正常。
4、在升级完成之后,一定要在测试时使用和线上版本相同的程序,测试是否存在问题。
5、存储引擎的变化,比如:在未来的5.8版本,不再支持myisam 引擎。
6、注意字符集的乱码问题。
7、升级过程中多次启动建议加上 --skip-grant-tables和--skip-networking 参数,来保证没有任何的应用连接,让升级过程更加安全。
我的版本是5.7.30 升级到5.7.33
1.停服务,服务列表去找,如果有环境变量换成新的路径
2.将新的mysql解压到你想安装的路径下(与原路径相同就好)
3.将旧版本下的data文件和my.ini文件copy至新版路径下, 注意修改ini文件basedir和datadir
4.cd到新版的bin目录下,并执行如下命令
5.启动MYSQL57服务
升级mysql:mysql_upgrade -uroot -p 并输入密码
移除MySQL服务,可以不做
cd 到5.7.30的bin目录下,并执行如下命令
mysqld --remove mysql5.7
1. 下载 5.7.30 的 zip 包并解压到新的目录。2. 安装 Visual C++ 2012/2013(或更多版本)。
3. 停应用,停止 5.6 实例(可以通过停服务来 *** 作,停止服务前建议记录一下 GTID 或 binlog file 和 position 位置),删除服务。
4. 备份一份 5.6 实例的 datadir,包括 binlog(整个目录 copy 到别的目录存放)。
5. 拷贝 5.6 实例的 datadir 和 my.ini 到 5.7 实例 basedir 目录,调整并优化参数值(注意要确保路径一致,确认已开启 5.7 新特性相关参数,如增强半同步、MTS 等)。
6. 修改系统环境变量,把可执行路径指向 5.7 实例的 basedir/bin。
7. 启动 5.7 实例,创建服务并启动。
8. 验证服务端、客户端版本是否正确。
9. 确认无误后,执行 mysql_upgrade 升级数据字典(会升级系统库:mysql,ps,sys,没有会重建)。
10. 重启实例。
11. 再次校验 5.7 的参数,尽量保持与 5.6 的兼容,尤其要注意 sql_mode 的默认值对业务的影响。
12. 清理 5.6 实例的 basedir 和 datadir 目录(可选)。
13. 如果是主从环境,还要考虑 slave_net_timeout 参数默认值改变带来的影响(主库 error 日志中出现 “ER_RPL_ZOMBIE_ENCOUNTERED” 的报错)。
在 5.7.7 以前,该参数默认是 3600s,之后改为了 60s,需要重新执行 change master to 语句,并且显式指定 master_heartbeat_period=xx,因为从 5.7.4 开始,只有执行 reset slave 才能将其重置为默认值(slave_net_timeout 值的一半)。另外提一句,也是从 5.7.4 开始,执行 change master to 语句时,可以不用先停止复制线程了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)