1、升级方式
inplace
同主机原地升级, 升级系统表
mergeing (建议方案)
通过新建实例(不同主机), 高版本作为低版本的从库, 进行滚动升级
升级建议
不管使用哪种方式升级, 都应该先做备份, 方便失败回退
2、升级注意事项
Upgrade is only supported between General Availability (GA) releases.Upgrade from MySQL 5.6 to 5.7 is supported. Upgrading to the latest release is recommended before upgrading to the next version. For example, upgrade to the latest MySQL 5.6 release before upgrading to MySQL 5.7.Upgrade that skips versions is not supported. For example, upgrading directly from MySQL 5.5 to 5.7 is not supported.Upgrade within a release series is supported. For example, upgrading from MySQL 5.7.x to 5.7.y is supported. Skipping a release is also supported. For example, upgrading from MySQL 5.7.x to 5.7.z is supported.
(1). 选择GA版本之间升级
(2). 版本跨度
举例1: 5.6 到 5.7
5.6 -> 5.6最新版 -> 5.7
举例2: 5.5 到 5.7
5.5 -> 5.5最新版 -> 5.6最新版 -> 5.7
(3). 回退方案要提前考虑好, 升级之前先备份 (特别是升级到8.0)
(4). 降级停机时间 (停业务时间)
3、inplace 升级过程
- 备份原数据库数据
1. 安装新版本软件
2. 调整参数
3. 关闭原数据库 (挂维护页)
4. 使用新版本软件 “挂” 旧版本数据启动 (—skip-grant-tables , —skip-networking)
5. 升级: 只是升级系统表, 升级时间和数据量无关的
6. 正常重启数据库
7. 验证各项功能是否正常 (需要考虑开发设计表的兼容性)
8. 业务恢复4、升级5.7过程演练
参考链接
https://www.jianshu.com/p/c7903c70fafd4.1、安装5.7软件
mv mysql-5.7.28-linux-glibc2.12-x86_64 /data/app/mysql57284.2、调整配置文件参数
具体参数根据各公司需求和配置进行调整 ``` vim /etc/systemd/system/mysql3326.service增加参数
innodb_fast_shutdown=0
修改参数
basedir=mysql5.7软件路径
<a name="irKtD"></a>
## 4.3、停源库
/data/app/mysql5648/bin/mysqladmin -S /tmp/3326.sock shutdown
<a name="gpqW1"></a>
## 4.4、使用高版本软件挂低版本库启动
软件路径为5.7,配置文件为5.6
使用—skip-networking,使用netstat -tulnp不会看到端口
/data/app/mysql5728/bin/mysqld_safe —defaults-file=/data/3326/conf/my.cnf —skip-grant-tables —skip-networking &
此时登录5.6时,显示5.7的版本号,但是没有5.7版本的sys库
/data/app/mysql5648/bin/mysql -S /tmp/3326.sock
<a name="cXgPT"></a>
## 4.5、升级
使用5.7升级程序,连接5.6升级
/data/app/mysql5728/bin/mysql_upgrade -S /tmp/3326.sock —upgrade-system-tables —force
输出信息
The —upgrade-system-tables option was used, databases won’t be touched. Checking server version. Running queries to upgrade MySQL server. Upgrading the sys schema. Upgrade process completed successfully. Checking if update is needed.
此时登录5.6时,已经有sys库了
/data/app/mysql5648/bin/mysql -S /tmp/3326.sock
参数upgrade-system-tables一定要加,表示只更新系统表 如果不加,会把所有库的表以5.7的方式重建,线上一定不要这样操作,因为数据库二进制文件是兼容的,无需升级,避免影响线上
<a name="pGk5N"></a>
## 4.6、停止MySQL实例
/data/app/mysql5728/bin/mysqladmin -S /tmp/3326.sock shutdown
<a name="o3Rzn"></a>
## 4.7、清空错误日志
echo "" > /data/3326/data/centos7.test02.err
<a name="ra881"></a>
## 4.8、修改配置和启动脚本
配置
vim /data/3326/conf/my.cnf
innodb_fast_shutdown=0
启动脚本
vim /etc/systemd/system/mysql3326.service ExecStart=/data/app/mysql5648/bin/mysqld —defaults-file=/data/3326/conf/my.cnf 修改为 ExecStart=/data/app/mysql5728/bin/mysqld —defaults-file=/data/3326/conf/my.cnf
<a name="j7A4f"></a>
## 4.9、启动登录验证
启动实例
systemctl start mysql3326
登录连接
/data/app/mysql5728/bin/mysql -S /tmp/3326.sock
查看错误日志
tail -n 100 /data/3326/data/centos7.test02.err
<a name="RKVT8"></a>
# 5、升级8.0过程演练
参考链接<br />[https://www.jianshu.com/p/062fa75cd274](https://www.jianshu.com/p/062fa75cd274)
<a name="Q2iNn"></a>
## 5.1、安装8.0软件
mv mysql-8.0.20-linux-glibc2.12-x86_64 /data/app/mysql8020
<a name="eHjYO"></a>
## 5.2、调整配置文件参数
vim /data/3307/conf/my.cnf
增加参数
innodb_fast_shutdown=0
修改参数
basedir=mysql8.0软件路径
<a name="lMJeo"></a>
## 5.3、使用高版本软件挂库启动
/data/app/mysql8020/bin/mysqld_safe —defaults-file=/data/3316/conf/my.cnf —skip-grant-tables —skip-networking &
<a name="at8Or"></a>
## 5.4、停止mysql实例
/data/app/mysql8020/bin/mysqladmin -S /tmp/3307.sock shutdown
<a name="M9BH1"></a>
## 5.5、情况错误日志
echo "" > /data/3307/data/centos7.test02.err
<a name="uQtD0"></a>
## 5.6、修改启动脚本和配置
vim /data/3307/conf/my.cnf
注释参数
innodb_fast_shutdown=0
vim /etc/systemd/system/mysql3307.service ExecStart=/data/app/mysql8020/bin/mysqld —defaults-file=/data/3307/conf/my.cnf
<a name="JPC5z"></a>
## 5.7、启动登录验证
systemctl start mysql3307 /data/app/mysql8020/bin/mysql -S /tmp/3307.sock tail -n 100 /data/3307/data/centos7.test02.err ```
