Docker部署mysql详细步骤及避坑

1.拉取镜像

sudo docker pull mysql

不指定版本号默认拉取最新版本,指定版本号示例如下

sudo docker pull mysql:5.7

可去dockerHub官网 https://registry.hub.docker.com/ 查找所需的镜像,无需登录,直接搜索

 找到mysql后选择Tags页面,查找所需版本,复制拉取命令

2.创建实例

sudo docker run -d -p 3306:3306
 -v /usr/local/mysql/conf:/etc/mysql/conf.d
 -v /usr/local/mysql/data:/var/lib/mysql
 -e MYSQL_ROOT_PASSWORD=123456
 --name  mysql mysql:latest

-p 3306:3306
映射端口
-v /usr/local/mysql/conf:/etc/mysql/conf.d
挂载目录,冒号(:)前为宿主机目录,后为docker内部目录
-e MYSQL_ROOT_PASSWORD=123456
设置root用户密码
--name  mysql
指定容器名称
mysql:latest
指定镜像及版本

3.检查部署是否成功

docker ps

看到运行实例表示部署成功

4.调整时区

docker部署mysql会出现时区不正确问题,调整时区后问题解决

docker cp /usr/share/zoneinfo/Asia/Shanghai 47799179873e:/etc/localtime

 47799179873e为容器ID,替换为你的容器ID,可用docker ps查看容器ID

5.建立链接慢

mySql会对连接的客户端进行DNS解析,导致链接慢,可通过配置关闭DNS解析。

修改容器内/etc/mysql/conf.d/mysqld.cnf文件,在最后一行添加skip-name-resolve,修改完重启容器,问题解决。

修改方式:
(1)进入docker容器,直接用vi命令修改,若docker没有安装vi命令可采用方法2或3
进入容器

docker exec -it 容器ID /bin/bash

修改文件

vi /etc/mysql/conf.d/mysqld.cnf


(2)将容器内文件复制到本地,修改,再将修改过的文件复制回docker容器
复制docker内文件到本地,$PWD代表当前目录

docker cp 容器ID:/etc/mysql/conf.d/mysqld.cnf $PWD

修改本地文件

vi mysqld.cnf

复制修改后的文件到docker内部

docker cp $PWD/mysqld.cnf 容器ID:/etc/mysql/conf.d/mysqld.cnf


(3)直接修改本地挂载文件
查看挂载目录

docker inspect 容器ID | grep Binds -A 4

我的挂载目录如下,直接修改

至此,所有的修改方法介绍完成,重启容器,问题解决。

6.Navicat客户端连接mySql,长时间无操作后再次查询非常慢

我安装了最新版mysql,测试过程中发现Navicat客户端10分钟无操作会断开连接,再次操作重新连接非常慢。查阅资料得知新版mysql会定期清理长时间无操作的连接以保证性能。

很多网友提供解决方案修改wait_timeout,测试无效。

解决方案:

编辑连接>高级>勾选保持连接间隔

Navicat会根据配置的时间给服务器发送心跳以保持连接,亲测有效,问题解决。

猜你喜欢

转载自blog.csdn.net/secretdaixin/article/details/128116127