docker+mysql 更改配置后重启不了的解决方案

前提:在最近的项目中,决定将项目改造成数据库读写分离的架构,于是擅自更改生产环境的数据库的配置文件my.cnf,由于我是用docker进行部署的,执行docker restart mysql后发现没有起来,执行docker logs -f --tail 10 your-mysql,出现如下的错误:

这里我提一句,docker restart mysql基本不会造成数据丢失(高并发场景下除外)。不慌,既然配置文件出错了,那我改过来就好了,于是我执行docker exec -it mysql /bin/bash准备先进入容器再更改配置,发现 进不去!!,因为exec命令只适用于正在运行的容器。

内心慌的一批呀!!!#

好在及时查找了相关资料,顺利将数据库重新启动

解决方式

方式一#

在当前主机中存放了docker容器中的配置信息(一般默认目录是:/var/lib/docker/overlay/),那只要找到这个配置文件,修改后就可以重新启动了

# 查看容器报错原因
[root@pro nginx]# docker logs nginx
nginx: [emerg] unknown directive "gizp" in /etc/nginx/nginx.conf:29
# 在此目录找到nginx容器的配置文件
[root@pro nginx]# cd /var/lib/docker/overlay2/
[root@pro overlay2]# find ./ -name nginx.conf
./7baeb968df6b073708cce37a182cf54fd033023a5eda6bb6d1077438d950ce6e/diff/etc/nginx/nginx.conf
# 将文件修改正确
[root@pro overlay2]# vim ./7baeb968df6b073708cce37a182cf54fd033023a5eda6bb6d1077438d950ce6e/diff/etc/nginx/nginx.conf
# 重启容器
[root@pro overlay2]# docker restart nginx
nginx

方式二#

使用docker cp命令,把docker容器中的配置文件复制到主机中来,然后修改完后再复制到docker容器中去,就可以了

具体操作

1、将docker容器内的文件拷贝至宿主机中#

docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf .

注:.代表是当前目录,我操作时当前目录是/opt

2、vim修改配置文件中出错的地方,重新修改回来#

3、复制修改后的配置文件到docker容器中去#

docker cp mysqld.cnf mysql:/etc/mysql/mysqld.conf.d

4、重启容器实例#

docker restart mysql

最后成功启动!!#

本人用方法一解决

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值