基于docker的Mysql版本升级
引言
随着版本的迭代和漏洞的提出,Mysql作为一款软件避免不了打补丁的命运。
由于docker版本的升级教程较少,以下基于docker版本的MySQL升级说明。
以下操作均在本地虚拟机中操作验证。
使用runlike查看启动脚本
镜像与镜像的差距就在启动命令的区别。启动命令可以根据 docker inspect 容器名
推导出的参数推到出来一部分,也只是一部分。
python工具runlike就是基于此远离开发的,以下举例说明使用方法,
## 对于历史镜像使用runlike看启动命令,基于python
pip3 install runlike
## 查看历史镜像,以kibana为例说明runlike的使用
docker ps --all
runlike -p kibana
docker run --name=kibana \
--hostname=45b31f642a7d \
--user=kibana \
--volume=/usr/local/elk7.14.2/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
--volume=/usr/local/elk7.14.2/kibana/data:/usr/share/kibana/data \
--volume=/usr/local/elk7.14.2/kibana/plugins:/usr/share/kibana/plugins \
--network=elastic \
--workdir=/usr/share/kibana \
-p 5601:5601 \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=2 \
--runtime=runc \
--detach=true \
-t \
kibana:7.14.2 \
/usr/local/bin/kibana-docker
安装低版本的MySQL
# 拉取镜像
docker pull mysql:8.0.27
## 使用runlike查看MySQL的启动命令
runlike -p mysql-yulin
docker run --name=mysql-yulin \
--env=MYSQL_ROOT_PASSWORD=123456 \
--volume=/home/centos/yulin/mysql/data:/var/lib/mysql \
--volume=/home/centos/yulin/mysql/conf:/etc/mysql/conf.d \
--privileged \
-p 20020:3306 \
--expose=33060 \
--restart=always \
--runtime=runc \
--detach=true \
mysql:8.0.27 \
--character-set-server=utf8mb4
## 通过volume创建对应的目录
mkdir -p /home/centos/yulin/mysql/data
mkdir -p /home/centos/yulin/mysql/conf
## 检查网络&创建网络
sudo docker inspect wvp20_default
# 网络信息
[
{
"Name": "wvp20_default",
"Created": "2023-10-23T09:12:47.774395505+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.27.0.0/16",
"Gateway": "172.27.0.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
}
]
# 创建网络,此处镜像没有使用新建网络,仅做演示
docker network create -d bridge wvp20_default
## 创建mysql配置
vi /home/centos/yulin/mysql/conf/mysql.cnf
## 启动容器
docker run --name=mysql-yulin \
--env=MYSQL_ROOT_PASSWORD=123456 \
--volume=/home/centos/yulin/mysql/data:/var/lib/mysql \
--volume=/home/centos/yulin/mysql/conf:/etc/mysql/conf.d \
--privileged \
-p 20020:3306 \
--expose=33060 \
--restart=always \
--runtime=runc \
--detach=true \
mysql:8.0.27 \
--character-set-server=utf8mb4
## 查看运行状况
docker ps
升级低版本的MySQL
# 拉取镜像
docker pull mysql:8.0.34
## 停止之前的容器
docker stop mysql-yulin
## 启动容器
docker run --name=mysql-yulin2 \
--env=MYSQL_ROOT_PASSWORD=123456 \
--volume=/home/centos/yulin/mysql/data:/var/lib/mysql \
--volume=/home/centos/yulin/mysql/conf:/etc/mysql/conf.d \
--privileged \
-p 20020:3306 \
--expose=33060 \
--restart=always \
--runtime=runc \
--detach=true \
mysql:8.0.34 \
--character-set-server=utf8mb4
## 查看运行状况
docker ps
说明
以上MySQL镜像基于8.0.27升级到8.0.34,是Orcale官方镜像。不同镜像版本可能升级过程不一致。
请在虚拟机中操作验证,禁止线上生产主机操作。