使用 Docker 部署 MySQL 8

06-01 1237阅读

使用 Docker 部署 MySQL 8 详细指南

MySQL 是一个广泛使用的开源关系型数据库管理系统。通过 Docker 部署 MySQL 8 可以快速搭建一个可移植、可扩展的数据库环境。本文将详细介绍如何使用 Docker 部署 MySQL 8,并讲解如何根据需求配置 MySQL。


从拉取镜像开始的详细步骤

1. 拉取 MySQL 8 镜像

首先,从 Docker Hub 拉取 MySQL 8 的官方镜像。

docker pull mysql:8.0
  • mysql:8.0:指定拉取 MySQL 8 的镜像。

    2. 启动一个临时 MySQL 容器

    启动一个临时的 MySQL 容器,目的是生成默认的配置文件。

    docker run -d --name temp-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:8.0
    
    • -d:后台运行容器。
    • --name temp-mysql:指定容器名称为 temp-mysql。
    • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL root 用户的密码。

      3. 从容器中复制配置文件

      MySQL 的配置文件通常位于 /etc/mysql 目录中。我们可以使用 docker cp 命令将配置文件复制到主机。

      复制整个配置文件目录
      docker cp temp-mysql:/etc/mysql /path/to/mysql-config
      
      • temp-mysql:/etc/mysql:从容器中复制 /etc/mysql 目录。
      • /path/to/mysql-config:将配置文件复制到主机的 /path/to/mysql-config 目录。
        检查复制的文件

        复制完成后,检查主机上的 /path/to/mysql-config 目录,确保文件已成功复制:

        ls /path/to/mysql-config
        

        4. 删除临时容器

        配置文件已经复制到主机,现在可以删除临时容器了。

        docker stop temp-mysql
        docker rm temp-mysql
        

        5. 基于自定义配置文件启动新的 MySQL 容器

        现在,我们可以基于自定义配置文件启动一个新的 MySQL 容器,并将配置文件挂载到容器中。

        启动容器
        docker run -d \
          --name my-mysql \
          -p 3306:3306 \
          -e MYSQL_ROOT_PASSWORD=my-secret-pw \
          -v /path/to/mysql-config:/etc/mysql \
          -v /path/to/mysql-data:/var/lib/mysql \
          mysql:8.0
        
        • -d:后台运行容器。
        • --name my-mysql:指定容器名称为 my-mysql。
        • -p 3306:3306:将主机的 3306 端口映射到容器的 3306 端口。
        • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL root 用户的密码。
        • -v /path/to/mysql-config:/etc/mysql:将主机的配置文件目录挂载到容器的 /etc/mysql 目录。
        • -v /path/to/mysql-data:/var/lib/mysql:将主机的数据目录挂载到容器的 /var/lib/mysql 目录。

          6. 验证 MySQL 容器

          检查容器状态
          docker ps
          
          进入 MySQL 容器
          docker exec -it my-mysql mysql -uroot -pmy-secret-pw
          
          查看配置文件是否生效

          在 MySQL 客户端中运行以下命令,检查配置文件是否生效:

          SHOW VARIABLES LIKE 'max_connections';
          SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
          

          自定义配置文件详解

          默认配置文件结构

          MySQL 8 的默认配置文件通常包括以下几个文件:

          • my.cnf:主配置文件。
          • conf.d/:额外的配置文件目录。
          • mysql.conf.d/:MySQL 服务器的配置文件目录。
            示例 my.cnf

            以下是一个简单的 my.cnf 配置文件示例:

            [mysqld]
            # 绑定 IP
            bind-address = 0.0.0.0
            # 监听端口
            port = 3306
            # 数据目录
            datadir = /var/lib/mysql
            # 最大连接数
            max_connections = 200
            # InnoDB 缓冲池大小
            innodb_buffer_pool_size = 256M
            # 错误日志
            log_error = /var/log/mysql/error.log
            # 慢查询日志
            slow_query_log = 1
            slow_query_log_file = /var/log/mysql/slow.log
            long_query_time = 2
            # 字符集
            character-set-server = utf8mb4
            collation-server = utf8mb4_unicode_ci
            # 禁用符号链接
            symbolic-links = 0
            # 禁用 DNS 解析
            skip-name-resolve
            

            高级配置与优化

            1. 调整缓冲池大小

            [mysqld]
            innodb_buffer_pool_size = 1G
            

            2. 启用查询缓存

            [mysqld]
            query_cache_type = 1
            query_cache_size = 64M
            

            3. 优化连接数

            [mysqld]
            max_connections = 500
            

            案例实战

            部署 MySQL 数据库服务

            1. 修改配置文件

            在 /path/to/mysql-config/my.cnf 中添加以下内容:

            [mysqld]
            bind-address = 0.0.0.0
            port = 3306
            datadir = /var/lib/mysql
            max_connections = 200
            innodb_buffer_pool_size = 256M
            log_error = /var/log/mysql/error.log
            slow_query_log = 1
            slow_query_log_file = /var/log/mysql/slow.log
            long_query_time = 2
            character-set-server = utf8mb4
            collation-server = utf8mb4_unicode_ci
            symbolic-links = 0
            skip-name-resolve
            
            2. 启动容器
            docker run -d \
              --name my-mysql \
              -p 3306:3306 \
              -e MYSQL_ROOT_PASSWORD=my-secret-pw \
              -v /path/to/mysql-config:/etc/mysql \
              -v /path/to/mysql-data:/var/lib/mysql \
              mysql:8.0
            

            部署 MySQL 主从复制

            1. 配置主节点

            在主节点的 my.cnf 中添加以下内容:

            [mysqld]
            server-id = 1
            log_bin = /var/log/mysql/mysql-bin.log
            binlog_do_db = mydatabase
            
            2. 配置从节点

            在从节点的 my.cnf 中添加以下内容:

            [mysqld]
            server-id = 2
            relay_log = /var/log/mysql/mysql-relay-bin.log
            log_bin = /var/log/mysql/mysql-bin.log
            binlog_do_db = mydatabase
            
            3. 启动主从复制

            在主节点上创建复制用户,在从节点上配置主节点信息并启动复制。


            通过以上步骤,你可以灵活地配置和管理 MySQL 8 容器,同时保留默认配置文件的模板。继续实践和探索,你将能够更高效地使用 MySQL 构建高性能的数据库服务!

            使用 Docker 部署 MySQL 8
            (图片来源网络,侵删)
            使用 Docker 部署 MySQL 8
            (图片来源网络,侵删)
            使用 Docker 部署 MySQL 8
            (图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码