docker下mysql容器restarting的一种解决方式

一 版本

docker26.0.0

mysql8.0.30

二 问题

 docker的mysql容器一直处于restarting状态,rm、重装后问题依然存在。

三 解决过程

操作1

docker logs -f mysql8

 

日志:

2024-05-14T07:09:45.270411Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.

2024-05-14T07:09:45.270419Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.

2024-05-14T07:09:45.270492Z 0 [ERROR] [MY-010119] [Server] Aborting

2024-05-14T07:09:45.270608Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.30)  MySQL Community Server - GPL.

 

发现:

 数据目录 /var/lib/mysql/ 中已经存在文件,但尝试使用了 --initialize 选项来初始化数据库,造成了初始化失败的错误。

 

操作2:

# 停止并移除当前的MySQL容器
docker stop <容器ID>
docker rm <容器ID>

# 删除MySQL数据目录中的文件
sudo rm -rf /var/lib/mysql/*

# 重新docker run

 

发现:

没有解决。。。Restarting

 

操作3:

docker logs -f mysql8

 

日志:

2024-05-14T07:37:33.185240Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8mb3_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.

2024-05-14T07:37:33.185680Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.

2024-05-14T07:37:33.185687Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.

 

发现:

上次删除的是/var/lib/mysql/*,但是我创建容器时进行的持久化操作-v /tom/mysql8/data:/var/lib/mysql 

或许应该删除 /tom/mysql8/data/*

 

操作4:

docker stop mysql8

docker rm mysql8

sudo rm -rf /tom/mysql8/data/*

docker run -d -p 3306:3306 --privileged=true --restart=always -e MYSQL_ROOT_PASSWORD=123456 --name mysql8 -v /tom/mysql8/log:/var/log/mysql -v /tom/mysql8/data:/var/lib/mysql -v /tom/mysql8/conf:/etc/mysql/conf.d mysql:8.0.30

 

检验:

docker ps发现mysql正常运行了

posted @ 2024-05-14 16:43  青夜心3  阅读(1808)  评论(0)    收藏  举报