我的项目要用到分库分表,而后本人手动更改了 Docker 中 MySQL 的配置文件 my.cnf。
配置结束之后应用 Docker 进行部署,运行 docker restart mysql
后没有胜利启动。
问题排查,打印日志
docker logs mysql
报错如下:
[ERROR] [Entrypointl: mysqld failed while attempting to check config command was : mysqld --vervbose --help
[ERROR] Found option without preceding group in config file /etc/mysql/ my cnf at line 27 mysql Fatal error in defaults handling. Program aborted
[ERROR] [Entrypoint]: mysqld failed while attempting to check config command was mysqld --verbose --help mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 27!mysqld: [ERRORI Fatal error in defaults handling. Program aborted!
随后我打算执行
docker exec -it mysql /bin/bash
先进入 Docker 容器之后再批改回原有配置,然而发现容器未启动(Container not started),因为 exec 执行命令只能用于已在运行的容器!!!
解决形式
形式一:理论文本批改配置
首先以后 Linux 主机中已寄存了 docker 容器中的配置信息(个别挂载默认目录是:/var/lib/docker/overlay/),其次只有找到这个挂载目录的配置文件,批改后就能够重新启动了
这里不过多赘述形式一。
形式二:间接批改配置文件
应用 docker cp
命令,把 docker 容器中的配置文件复制到 Linux 主机中来,接着批改完之后再复制回 docker 容器中去,就能够了实现配置文件的回滚了
具体操作(形式二)
1、将 docker 容器内的文件拷贝至 Linux 主机中
docker cp mysql:/etc/mysql/my.cnf .
注:.
代表是当前目录,我操作时当前目录是 /root,且 mysql:/etc/mysql/my.cnf 即为配置文件地址,上述代码操作实现之后 my.cnf
配置文件就会复制到以后操作目录下
2、vim 批改配置文件中出错的中央,从新批改回来
3、复制批改后的配置文件到 docker 容器中去
docker cp my.cnf mysql:/etc/mysql/my.cnf
4、最初重启容器实例,使批改后的配置文件失效
docker restart mysql