docker安装mysql挂载外部配置和数据目录
从docker hub上可以找到mysql外挂配置和数据目录的一些文档说明
https://hub.docker.com/_/mysql
从该文档中可以了解到,mysql的默认配置为/etc/mysql/my.cnf,该文件中包含了一个额外的数据目录/etc/mysql/conf.d
或者/etc/mysql/mysql.conf.d
先启动一个不带任何挂载的mysql容器
docker run -d -p : -e MYSQL_ROOT_PASSWORD= --name mysql_test2 mysql:5.7.
进入容器
docker exec -it mysql_test2 bash
根据上述docker hub上描述,可以发现/etc/mysql/conf.d/中存在三个文件,分别为docker.cnf,mysql.cnf和mysqldump.cnf,/etc/mysql/mysql.conf.d/下只存在一个文件mysqld.cnf
第一种启动方式
docker run -d -p : -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysql.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= --name mysql_test mysql:5.7.
这样启动的容器中,/etc/mysql/conf.d/mysql.cnf中的内容将被/etc/mysql.my.cnf中文件内容覆盖
第二种启动方式
docker run -d -p : -v /etc/mysql/:/etc/mysql/conf.d/ -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= --name mysql_test mysql:5.7.
这种方式将会把/etc/mysql/conf.d/下面的三个文件替换为外部挂载的my.cnf文件,也就是说,这种方式挂载了目录,容器中的目录与外部文件目录内容一致
第三种启动方式
docker run -d -p : -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= --name mysql_test mysql:5.7.
登录都容器中,可以发现/etc/mysql/conf.d/中的文件多了一个mysqld.cnf,且该文件即是我们外挂的my.cnf,而/etc/mysql/mysql.conf.d/mysqld.cnf中的内容依然是之前的
以上三种方式都可以实现外挂配置和数据目录,但首先配置中的文件路径在容器中需要存在,否则mysql容器将无法正常启动。个人觉得第二种看着顺眼点。:)
MYSQL8
mysql8中,/etc/mysql/my.cnf只依赖了/etc/mysql/conf.d/目录,所以上述的第三种方式就行不通了,另外如果配置文件中设置有socket,则client和mysqld设置的socket应该一致,如果去掉,就全部去掉,其他再有错误,根据mysql中错误日志查找下原因,一般都是因为配置
docker run -d -p : -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= --name mysql_test mysql
如果使用虚拟机,内存比较小时,注意max_connections和innodb_buffer_pool_size不要设置太大,否则启动会非常慢,本例中分别配置了2000和1200M,但当前虚拟机才给分配了1G内存,故启动的时候非常慢,一般前者调整为512 ~1000,后者为物理内存的60%~70%,但本虚拟机不止mysql,还有其他程序,故将两个参数分别改为200和100M,启动速度比之前快了好多倍
最新文章
- PHP-- 获取http请求头信息
- BZOJ2584 : [Wc2012]memory
- 归档 Archive、解档Unchive、 XML(一)
- 网站注册(css)
- JavaScript学习——内置属性
- JavaScript中===与==的区别
- HTTP分段下载
- Override ListView getAdapter造成的后果
- A Practical Guide to Distributed Scrum - 分布式Scrum的实用指南 - 读书笔记
- [Java] Map / HashMap - 源代码学习笔记
- Coursera获取中文字幕(如果有的话)
- Sublime 学习记录(二) package control 组件
- hdu1044
- Linux背背背(6)
- java应用,直接请求没问题,通过nginx跳转状态吗400
- 无线渗透wpa加密路由器
- 使用Fiddler查看APP的请求接口、接口参数和返回值的方法
- JS 点击元素发ajax请求 打开一个新窗口
- JS高级程序设计 表单部分
- spring boot 2.0 源码分析(三)
热门文章
- swoole| swoole 协程初体验 转
- Cannot determine value type from string 'xxxxxx'
- linux cenos开放端口
- 深度学习_1_Tensorflow_2_数据_文件读取
- idou老师教你学Istio06: 如何用istio实现流量迁移
- Kinect for Windows SDK开发入门(二):基础知识 上
- PHP中将二维数组 转换成字符串
- 使用Tampermonkey,实现Gitlab禁用自我Merge的功能
- nginx中ngx_http_access_module模块
- Lua 学习之基础篇六<;Lua IO 库>;