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/),那只要找到這個配置文件,修改后就可以重新啟動了
方式二
使用docker cp命令,把docker容器中的配置文件復制到主機中來,然后修改完后再復制到docker容器中去,就可以了
具體操作
經過實操,方式一的方式可能會比較麻煩,這里只介紹方式二。
1、將docker容器內的文件拷貝至宿主機中
docker cp mysql:/etc/mysql/my.cnf .
注:.代表是當前目錄,我操作時當前目錄是/opt
2、vim修改配置文件中出錯的地方,重新修改回來
3、復制修改后的配置文件到docker容器中去
docker cp my.cnf mysql:/etc/mysql/my.cnf
4、重啟容器實例
docker restart db002