一、首选备份原数据库所有数据
二、在Docker中查看正在运行的MySQL容器名称,可以使用以下命令:
docker ps --filter "name=mysql"
三、查看当前docker中正在运行mysql的版本
docker exec -it qgz-mysql mysql -V
可以看到当前运行的版本是8.2.0
使用docker备份数据:
docker exec your-mysql /usr/bin/mysqldump -u root --password=xxxxxx --all-databases > 20240929all_databases_backup.sql
停止原来的mysql
docker stop xxx-mysql
拉取想要的mysql版本
docker pull mysql:8.4.2
创建新的mysql容器:
docker run --name qgz-mysql842 --restart=always -p 3306:3306 -v /data/mysql/conf.d:/etc/mysql/conf.d -v /data/mysql/data2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yourPassword -d mysql:8.4.2
导入备份数据
cat 20240929all_databases_backup.sql | docker exec -i qgz-mysql842 /usr/bin/mysql -u root --password=xxxxxx
启动新容器,并检查
docker run --name qgz-mysql842 --restart=always -p 3306:3306 -v /data/mysql/conf.d:/etc/mysql/conf.d -v /data/mysql/data2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxxxx -d mysql:8.4.2
docker logs qgz-mysql842
查看新部署数据库版本,以确保升级成功:
docker exec -it qgz-mysql842 mysql -V
如果用户有异常,可以
alter user 'root'@'%' identified with caching_sha2_password by 'xxxxxxx';