1.官网查看最新版本情况。
https://dev.mysql.com/downloads/mysql/
2.拉取最新版本镜像到本地。
docker pull mysql:9.7.2
3.将data相关目录复制出来,另外启动一个容器。
cp -r mysql9 mysql9_new
修改docker-compose.yml 和conf下的my.cnf中的端口配置

my.cnf
[mysqld]
port=3307
#允许最大连接数
max_connections=3000
#允许连接失败的次数。
max_connect_errors=100
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
innodb_buffer_pool_size = 4G
group_concat_max_len=1024000
log_bin_trust_function_creators=1
default-time-zone='+8:00'
interactive_timeout=31536000
wait_timeout=31536000
log_timestamps=system
character-set-server=utf8mb4
collation-server =utf8mb4_0900_ai_ci
init_connect='SET NAMES utf8mb4'
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
#设置mysql客户端连接服务端时默认使用的端口
port=3307
default-character-set=utf8mb4
docker-compose.yml
services:
mysql:
image: mysql:9.7.2
container_name: mysql9-3307-prod-9.7.2
restart: unless-stopped
ports:
- "3307:3307"
volumes:
- /data/mysql9_new/data:/var/lib/mysql
- /data/mysql9_new/conf/my.cnf:/etc/my.cnf
- /data/mysql9_new/logs:/var/logs
environment:
- MYSQL_ROOT_PASSWORD=123456
- TZ=Asia/Shanghai
4.进入到当前目录,启动容器:
docker compose -f docker-compose.yml up -d
5.启动之后,使用navicat连接,测试新的数据库是否能正常访问,数据库是否都存在。
6.新的能正常访问,然后将新的和旧的容器都停止,然后修改新的端口为旧的端口,随后启动新的容器。
docker stop mysql9-3307-prod
docker stop mysql9-3308-prod
7.排查问题,查看容器日志
docker logs -f mysql9-3308-prod