MySQL 小版本升级

云掣YunChe5个月前技术文章768

MySQL 版本一般不需要经常升级,如果需要使用某个新特性或者修改 BUG 就不得不升级小版本。


1. 环境调研

1. 当前数据库版本和需要升级到某个版本,如果升级需求 5.6.22+ 那么我们直接下载 5.6 最新 GA 版本即可;

2. 了解环境的复制拓扑,根据复制架构可以有不同的方案选择,如果是主从 + keepalived 架构,我们可以先升级从库,再将 VIP 切换到从库,对业务影响最小(短暂中断)然后再去升级主库即可。如果业务可以停机或者是单节点可以忽略。

2. 操作升级

升级方式有两种一种是使用 mysql_upgrade 直接升级数据字典库,这种方法不能跨大版本升级,另外一种就是使用 mysqldump 导出数据,再导入到新实例即可。


当前环境是 MySQL 主从复制 + keepalived 选择的升级方式是 mysql_upgrade 方式,当前版本是 5.7.32 计划升级为 5.7.33 。

172.16.104.55 Master 5.7.32

172.16.104.57 Slave 5.7.32

官方存档下载地址:MySQL 存档版本下载

carbon.png


2.1 将升级的二进制安装包上传到服务器

[root@db01 opt]# ls
mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz

2.2 保障主从数据一致

我们首先升级从库,升级前需要确认从库数据已追上主库(必要时可以先停止主库写入)然后 stop slave 停止复制;

root@mysql 14:02:  [(none)]>stop slave;
Query OK, 0 rows affected (0.00 sec)

2.3 查看 sql_mode 并记下它的值:

select @@sql_mode;


2.4 配置 MySQL 通过设置 innodb_fast_shutdown 执行慢速关闭:

root@mysql 17:08:  [(none)]> select @@innodb_fast_shutdown;
+------------------------+
| @@innodb_fast_shutdown |
+------------------------+
|                      1 |
+------------------------+
1 row in set (0.01 sec)
root@mysql 17:08:  [(none)]> SET GLOBAL innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)


2.5 停止 MySQL 服务

mysqladmin -u root -p shutdown


2.6 备份数据目录

当升级发生意外时,可以快速回滚,如果空间充裕可以直接备份整个 mysql 数据目录

-- 备份整个数据目录
cp -ar data/ data.bak


2.7 解压现有的 mysql 二进制包,替换 basedir

如果安装路径没有使用软链接的方式,那么这一步直接 mv 安装路径,然后将二进制包解压到原来的安装路径。

carbon (1).png

unlink mysql


-- 解压新的安装包
tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz


此时新的安装目录为:/home/mysql-5.7.33-linux-glibc2.12-x86_64

ln -s /home/mysql-5.7.33-linux-glibc2.12-x86_64 /usr/local/mysql


2.8 启动并升级 MySQL

./mysqld_safe --defaults-file=/etc/my.cnf --datadir=/data/mysql57/data/ --user=mysql &
mysql_upgrade -uroot -p

carbon (2).png

注意:mysql_upgrade 需要使用管理员账号,否则会出现拒绝访问等问题

2.9 重启 MySQL 测试是否正常

1. 重启 MySQL 服务

2. 检查能否正常访问

carbon (3).png

再次查询 sql_mode 对比是否与升级前一致,如果不一致核对是否与业务有关,决定是否需要调整。

select @@sql_mode;


到此为止备库就升级完成了,将 VIP 切换到备库,然后重复 2.1 ~ 2.9 步骤即可。


返回列表

上一篇:MySQL主从部署(同步+半同步)

没有最新的文章了...

相关文章

MongoDB 单机安装部署

MongoDB 单机安装部署

说明本篇文章介绍 MongoDB 二进制安装的步骤,整个过程还是比较简单。1. 下载安装包进入 MongoDB 官网,获取安装包的下载链接:https://www.mongodb.com/try/do...

Spark接入Kerberos交互式命令窗口提交任务

Spark接入Kerberos交互式命令窗口提交任务

1. Spark-shell首先需要使用有操作hdfs文件权限的keytab用户认证,认证上之后可以通过spark-shell交互命令行窗口执行任务如果集成了Ranger组件,如果创建的普通用户没有在...

fio磁盘io压测

fio磁盘io压测

fio tar包地址:https://brick.kernel.dk/snaps/yum 安装gcc、fio使用到的ibaio-devel 引擎yum install -y gcc yum inst...

HBase数据结构

1 RowKey与nosql数据库们一样,RowKey是用来检索记录的主键。访问HBASE table中的行,只有三种方式:1.通过单个RowKey访问2.通过RowKey的range(正则)3.全表...

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构(3)

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构(3)

4.0 SpringBoot 后端代码进行打包上传服务器        将 SpringBoot 项目进行打包:      &nb...

Kubernetes 网络插件

Kubernetes 自身并不提供网络解决方案,允许托管使用第三方的网络解决方案。flannelcalicocanelkube-router......各种 CNI 插件的解决方案: 虚拟网桥(bri...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。