数据库集群系列(十四)docker-compose基础知识及使用其快速部署Mysql 5.7数据库

2024年 7月 23日 28.4k 0

一、基础知识和场景

    Docker-Compose是Docker官方的开源项目,用于实现对Docker容器集群的快速编排。它通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。

    Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

    Docker-Compose的应用场景,由于其可以快速编排Docker容器集群,因此适用于需要快速部署、管理和扩展多个容器的应用场景,例如微服务架构、Web应用、移动应用后端等。

    与Docker Swarm相比,Docker-Compose更注重于单个应用的容器编排和管理,而Docker Swarm则是一个为IT运维提供集群和调度能力的编排工具。运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点 (node)。节点分为管理 (manager) 节点和工作 (worker) 节点。管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点执行(节点退出集群命令docker swarm leave可以在工作节点执行)。一个Swarm集群可以有多个管理节点,但只有一个管理节点可以成为leader,leader通过raft协议实现。工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。

二、安装docker-compose

     yum -y install docker-compose

    [root@DB-Master mysql]# docker-compose -v
    docker-compose version 1.18.0, build 8dd22a9

    三、配置docker-compose 的yml文件

    1、创建工作目录

            mkdir -p mysql/test/{mydir,datadir,conf,source}

    2、编写yaml配置文件

          vim  docker-compose.yaml

      version: '3'
      services:
      mysql:
      restart: always
      image: mysql:5.7.34
      container_name: mysql-lable
      volumes:
      - /mysql/test/mydir:/mydir
      - /mysql/test/datadir:/var/lib/mysql
      - /mysql/test/conf/my.cnf:/etc/my.cnf
      environment:
      - "MYSQL_ROOT_PASSWORD=123456"
      - "TZ=Asia/Shanghai"
      ports:
            - 3306:3306

      3、编写MySQL配置文件

         vim test/conf/my.cnf

        [mysqld]
        character-set-server = utf8
        collation-server = utf8_general_ci
        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
        lower_case_table_names = 1
        transaction-isolation = READ-COMMITTED
        default-time_zone = '+8:00'
        log_timestamps = SYSTEM
        ###############################
        innodb_buffer_pool_size = 2G
        innodb_log_file_size=128M
        innodb_log_files_in_group=4
        innodb_log_buffer_size=16M
        innodb_write_io_threads = 8
        innodb_read_io_threads = 8
        innodb_max_dirty_pages_pct = 90
        innodb_lock_wait_timeout = 120
        innodb-file-per-table=1
        auto_increment_increment=1
        auto_increment_offset=1
        connect_timeout=10
        group_concat_max_len=1024
        innodb_thread_concurrency=0
        innodb_thread_sleep_delay=10000
        innodb_write_io_threads=12
        interactive_timeout=28800
        lock_wait_timeout=31536000
        long_query_time=10.000000
        low_priority_updates=OFF
        max_allowed_packet=500M
        max_connect_errors=999999999
        max_connections=1600
        max_length_for_sort_data=1024
        max_prepared_stmt_count=16382
        max_user_connections=0
        net_read_timeout=30
        net_retry_count=10
        net_write_timeout=60
        ngram_token_size=2
        open_files_limit=102400
        performance_schema=OFF
        query_alloc_block_size=8192
        query_cache_limit=1048576
        query_cache_size=0
        query_cache_type=OFF
        query_cache_wlock_invalidate=OFF
        query_prealloc_size=8192
        slow_launch_time=2
        table_definition_cache=768
        table_open_cache=512
        table_open_cache_instances=16
        thread_cache_size=512
        tmp_table_size=1073741824
        wait_timeout=2147483
        interactive_timeout=31536000
        explicit_defaults_for_timestamp = true
        log-bin-trust-function-creators = 1
        [client]
        default-character-set=utf8
        [mysql]
        default-character-set=utf8

        4、启动容器

            docker-compose up        #非后台运行

            docker-compose up -d    #后台运行

            docker-compose down     #停止服务

            docker-compose ps        #查看 docker-compose进程

        数据库集群系列(十四)docker-compose基础知识及使用其快速部署Mysql 5.7数据库-1

        5、登陆验证

            # mysql -uroot -p123456 -h127.0.0.1

          mysql: [Warning] Using a password on the command line interface can be insecure.
          Welcome to the MySQL monitor. Commands end with ; or \g.
          Your MySQL connection id is 3
          Server version: 5.7.34 MySQL Community Server (GPL)


          Copyright (c) 2000, 2023, Oracle and/or its affiliates.


          Oracle is a registered trademark of Oracle Corporation and/or its
          affiliates. Other names may be trademarks of their respective
          owners.


          Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


          mysql> SELECT @@lower_case_table_names;
          +--------------------------+
          | @@lower_case_table_names |
          +--------------------------+
          | 1 |
          +--------------------------+
          1 row in set (0.00 sec)


          mysql> SHOW VARIABLES LIKE 'lower_case_table_names';
          +------------------------+-------+
          | Variable_name | Value |
          +------------------------+-------+
          | lower_case_table_names | 1 |
          +------------------------+-------+
          1 row in set (0.00 sec)

              可知,配置文件已经生效,使用 docker-compose部署MySQL数据库服务成功。

          相关文章

          Oracle如何使用授予和撤销权限的语法和示例
          Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
          下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
          社区版oceanbase安装
          Oracle 导出CSV工具-sqluldr2
          ETL数据集成丨快速将MySQL数据迁移至Doris数据库

          发布评论