数据库集群系列(十四)docker-compose基础知识及使用其快速部署Mysql 5.7数据库
一、基础知识和场景
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 -vdocker-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 = utf8collation-server = utf8_general_cisql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZEROlower_case_table_names = 1transaction-isolation = READ-COMMITTEDdefault-time_zone = '+8:00'log_timestamps = SYSTEM###############################innodb_buffer_pool_size = 2Ginnodb_log_file_size=128Minnodb_log_files_in_group=4innodb_log_buffer_size=16Minnodb_write_io_threads = 8innodb_read_io_threads = 8innodb_max_dirty_pages_pct = 90innodb_lock_wait_timeout = 120innodb-file-per-table=1 auto_increment_increment=1auto_increment_offset=1connect_timeout=10group_concat_max_len=1024innodb_thread_concurrency=0innodb_thread_sleep_delay=10000innodb_write_io_threads=12interactive_timeout=28800lock_wait_timeout=31536000long_query_time=10.000000low_priority_updates=OFFmax_allowed_packet=500Mmax_connect_errors=999999999max_connections=1600max_length_for_sort_data=1024max_prepared_stmt_count=16382max_user_connections=0net_read_timeout=30net_retry_count=10net_write_timeout=60ngram_token_size=2open_files_limit=102400performance_schema=OFFquery_alloc_block_size=8192query_cache_limit=1048576query_cache_size=0query_cache_type=OFFquery_cache_wlock_invalidate=OFFquery_prealloc_size=8192slow_launch_time=2table_definition_cache=768table_open_cache=512table_open_cache_instances=16thread_cache_size=512tmp_table_size=1073741824wait_timeout=2147483interactive_timeout=31536000explicit_defaults_for_timestamp = truelog-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进程

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 3Server 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 itsaffiliates. Other names may be trademarks of their respectiveowners.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数据库服务成功。