docker mysql更新升级版本

一、环境说明

操作系统:Centos7

数据库版本:MySql 8.0.22 数据库中数据量不大,处于开发/测试环境,风险较低

二、升级原因

升级是因为测评漏洞,在进行国家三级等级保护测评过程中,漏扫发现多个MySql漏洞。

三、升级方法及步骤

下面来介绍一下具体的操作:

官方升级文档参考:

https://dev.mysql.com/doc/refman/8.0/en/windows-upgrading.html#windows-upgrading-zip-distribution

例如我原先部署的是mysql 8.0.22版本

之前老版本运行的mysql必须是将数据挂载出来的,否则不能按照我下面的步骤操作,你得把mysql中的数据复制到宿主机上来才能这么操作

复制代码
1.需要提前告知用户,升级数据库操作会短暂停止服务,确保他们了解到可能的中断。
//老的数据库启动命令
docker run --restart=always --name mysqlori -v /nets/mysql/conf:/etc/mysql/conf.d  -v /nets/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:8.0.22

如果不记得之前的命令了,主要是-v和-e设置的参数

docker inspect -f '{{ .Mounts }}' mysqlori
得到如下-v信息,自己转成-v参数即可
[{bind  /nets/mysql/conf /etc/mysql/conf.d   true rprivate} {bind  /nets/mysql/data /var/lib/mysql   true rprivate}]

docker inspect --format='{{json .Config.Env}}' mysql8035
得到如下-e信息,像下面的很好判断,例如MYSQL_ROOT_PASSWORD是我自己指定的,而其他不是
["MYSQL_ROOT_PASSWORD=123456","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.16","MYSQL_MAJOR=8.0","MYSQL_VERSION=8.0.35-1.el8","MYSQL_SHELL_VERSION=8.0.35-1.el8"]

那么最终还原出来的命令就是
docker run --restart=always --name mysqlori -v /nets/mysql/conf:/etc/mysql/conf.d  -v /nets/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:8.0.22
也即如下格式
docker run --restart=always --name {names} -v /nets/mysql/conf:/etc/mysql/conf.d  -v /nets/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p {ports} {IMAGE}

#拉取最新的mysql镜像,最好是写明版本,例如
docker pull mysql:8.0.35

2.备份数据库
通过mysqldump或者其他方式都行,但记得一定要备份数据库。虽然说之前如果把数据外挂出来,启动新版本一般是不会丢失数据的,但以防万一还是备份一下比较合理。

3.停止现有的mysql服务
docker stop mysqlori

4.移除原有的mysql服务
docker rm mysqlori

5.启动新的mysql服务(这里的目录映射记得一定要跟之前老版本时候的保持一致,因为新版本的数据库启动后会自动加载老版本数据目录下的数据,如果你映射了一个新的目录那原来的数据你大概率只能手动恢复进新数据库了)
docker run --restart=always --name mysql8035 -v /nets/mysql/conf:/etc/mysql/conf.d  -v /nets/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:8.0.35

四、windows上的mysql升级方法及步骤

具体请参考以下的官方文档链接

https://mysql.net.cn/doc/refman/8.0/en/windows-upgrading.html

这里我也找到另一个博主写的博文可以供大家参考

https://www.cnblogs.com/Jingkunliu/p/14242787.html

相关推荐
莫陌尛.2 小时前
Docker MySQL 删表卡死、执行超时(MDL锁阻塞)问题复盘与根治方案
mysql·docker·容器
毕业设计7035 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
星辰徐哥6 小时前
本地视频预览别只自己看:把Remotion动效项目发给客户远程验收
docker·ai·node.js·html·音视频·react·remotion
泡泡鱼(敲代码中)7 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
冰暮流星8 小时前
mysql之表子查询
数据库·mysql
这个DBA有点耶10 小时前
MySQL大表DDL锁表锁到崩溃?Online DDL的3个关键参数和实战避坑
数据库·mysql·架构
fb_1234510 小时前
Docker入门-第3章-容器镜像深度解析
运维·docker·容器
IT摆渡者12 小时前
基于 Docker 部署 Nextcloud 私有云盘(外挂 Windows 共享)项目实践
运维·docker·容器
新时代牛马13 小时前
单机 docker run 管不住了?从编排需求、期望状态到调度/自愈闭环讲透
运维·docker·容器
binqian13 小时前
Docker Desktop(WSL2 后端)三层网络互通技术文档
网络·docker·容器