Docker升级MySQL版本的快速方法
背景
虽然容器跑数据库用于生产不太靠谱
因为性能以及其他相关的问题
但是用在测试环境上面还是非常方便的
昨天有客户想问问最新版的MySQL的兼容性情况
今天告知要验证一把最新版本的数据库的情况.
所以这里验证一下, 遇到了几个小坑.
关于mysql的版本
MySQL现在每个季度发布一个版本
其中 8.0 系列的后续之进行 bugfixed 不增加新特性
截止 2024.5 最新版本的数据库是 8.0.37
发布时间是 2024.4.30
与更新的LTS 8.4 版本是同时发布的
更旧一点的是 MySQL8.0.36
其实是 2024.1.16发布的
升级方式
先获取镜像
docker pull mysql:8.0.36
docker pull mysql:8.0.37
docker pull mysql:8.4
冷备升级
先停掉之前的mysql
docker stop mysql110
然后复制文件出来.
比如说我放到了 /mysql3308
注意一定要处理好 权属
chown mysql:mysql /mysql3308 -R
开始镜像操作
docker run --user=mysql --privileged=true \
--name mysql3308 -p 3308:3306 -v /mysql3308/mysql:/var/lib/mysql \
-v /mysql3308/mysql-files:/var/lib/mysql-files -v /mysql3308/my.cnf:/etc/my.cnf \
-v /mysql3308/log:/var/log -e MYSQL_ROOT_PASSWORD=Testxxxxxxxx \
-e TZ=Asia/Shanghai -d mysql:8.0.37 --lower-case-table-names=1
需要注意这里面有几个深坑
1. Different lower_case_table_names settings for server ('0') and data dictionary ('1')
需要在最后面增加一下: --lower-case-table-names=1 这个版本启动总有问题, 尤其是带着数据库的情况.
2. World-writable my.cnf
注意 mysql3308 目录下面不能所有的文件都是 777 的 会报错
3. Could not open file '/var/log/mysqld.log' for error logging: Permission denied
可以增加一下: --user=mysql --privileged=true
升级效果
2024-05-28 15:54:03+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.37-1.el9 started.
2024-05-28T07:54:04.100146Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.37) starting as process 1
2024-05-28T07:54:04.106905Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-05-28T07:54:07.394466Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-05-28T07:54:18.918212Z 4 [System] [MY-013381] [Server] Server upgrade from '80026' to '80037' started.
2024-05-28T07:54:25.744083Z 4 [System] [MY-013381] [Server] Server upgrade from '80026' to '80037' completed.
2024-05-28T07:54:26.603553Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-05-28T07:54:26.603589Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-05-28T07:54:26.621559Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.37' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL.
2024-05-28T07:54:26.621579Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
标签:05,54,MySQL,Server,2024,版本,mysql,Docker,MY
From: https://www.cnblogs.com/jinanxiaolaohu/p/18218603