• 一句话使用docker迅速部署MYSQL,同时挂载数据卷和配置文件


    cker安装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 3307:3307 -e MYSQL_ROOT_PASSWORD=12345 --name mysql_test2 mysql:5.7.23

    进入容器

    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 3306:3306 -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysql.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql_test mysql:5.7.23

    这样启动的容器中,/etc/mysql/conf.d/mysql.cnf中的内容将被/etc/mysql.my.cnf中文件内容覆盖

    第二种启动方式

    docker run -d -p 3306:3306 -v /etc/mysql/:/etc/mysql/conf.d/ -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql_test mysql:5.7.23

    这种方式将会把/etc/mysql/conf.d/下面的三个文件替换为外部挂载的my.cnf文件,也就是说,这种方式挂载了目录,容器中的目录与外部文件目录内容一致

    第三种启动方式

    docker run -d -p 3306:3306 -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 --name mysql_test mysql:5.7.23

    登录都容器中,可以发现/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 3306:3306 -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 --name mysql_test mysql

    如果使用虚拟机,内存比较小时,注意max_connections和innodb_buffer_pool_size不要设置太大,否则启动会非常慢,本例中分别配置了2000和1200M,但当前虚拟机才给分配了1G内存,故启动的时候非常慢,一般前者调整为512 ~1000,后者为物理内存的60%~70%,但本虚拟机不止mysql,还有其他程序,故将两个参数分别改为200和100M,启动速度比之前快了好多倍

  • 相关阅读:
    口语详解|为什么“how to say”是错的?
    9 tips to improve spoken english
    splash 安装
    ubuntu 安装NVIDIA驱动过程
    【Python数据分析】时间模块datetime
    【Python数据分析】Pandas模块下的Series与DataFrame
    【Python】文件
    博客园Markdown样式美化
    【Python】异常处理
    【Python】eval函数
  • 原文地址:https://www.cnblogs.com/hushuning/p/12629945.html
Copyright © 2020-2023  润新知