docker-compose容器化构建mysql服务

yml文件

cat mysql.yml

version: '3.1'

services:

  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root账户密码
      TZ: Asia/Shanghai
    volumes:
      - /data/mysql/mydata:/var/lib/mysql
      - /data/mysql/conf.d:/etc/mysql/conf.d
    ports:
      - "3306:3306"

创建需要挂载的目录

mkdir /data/mysql/mydata
mkdir /data/mysql/conf.d

mysql的配置,放在/data/mysql/conf.d/my.cnf

cat my.cnf
[client]
port = 3306
#socket   = /var/run/mysqld.sock
default-character-set = utf8mb4

[mysqld]
port = 3306
#socket  = /var/run/mysqld.sock
back_log = 80
basedir = /usr/local/mysql
tmpdir = /tmp
datadir = /var/lib/mysql
character_set_server = utf8mb4
log_timestamps = SYSTEM
slow-query-log = on
slow_query_log_file = /var/lib/mysql/slow.log

#-------------------gobal variables------------#
slave-parallel-type = LOGICAL_CLOCK
slave-parallel-workers = 16
slave_preserve_commit_order= on
gtid_mode = ON
relay_log_info_repository = TABLE
master_info_repository    = TABLE
relay_log_recovery        = on
enforce_gtid_consistency = ON
binlog_checksum = NONE
log_slave_updates = ON
log-bin = /var/lib/mysql/mysql-bin
max_connect_errors = 20000
max_connections = 2000
wait_timeout = 3600
interactive_timeout = 3600
net_read_timeout = 3600
net_write_timeout = 3600
table_open_cache = 1024
table_definition_cache = 1024
thread_cache_size = 256
query_cache_limit = 4M
open_files_limit = 10000
#collation_server = utf8mb4_unicode_ci
skip_external_locking
performance_schema = 1
user = mysql
myisam_recover_options = DEFAULT
skip-name-resolve
local_infile = 0
lower_case_table_names = 1

#--------------------innoDB------------#
default-storage-engine = INNODB
innodb_buffer_pool_size = 1024M
innodb_data_file_path = ibdata1:200M:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 600
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 80
innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_support_xa = 1
innodb_thread_concurrency = 32
innodb_file_per_table
innodb_rollback_on_timeout
innodb_purge_threads = 2
innodb_doublewrite = ON
innodb_flush_method = O_DIRECT

#------------session variables-------#
join_buffer_size = 8M
key_buffer_size = 256M
bulk_insert_buffer_size = 8M
max_heap_table_size = 96M
tmp_table_size = 128M
read_buffer_size = 16M
sort_buffer_size = 16M
max_allowed_packet = 64M
read_rnd_buffer_size = 32M

#------------MySQL Log----------------#
log-bin = my3306-bin
binlog_format = row
sync_binlog = 1
expire_logs_days = 15
max_binlog_cache_size = 128M
max_binlog_size = 500M
binlog_cache_size = 64k
log-slow-admin-statements
log_warnings = 1
long_query_time = 0.25

#---------------replicate--------------#
relay-log-index = relay3306.index
relay-log = relay3306
server-id = 1
init_slave = 'set sql_mode=STRICT_TRANS_TABLES'
log-slave-updates
[myisamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysql]
prompt=MySQL [\u@\h :\d\r:\m:\s]>
#default-character-set = utf8
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192

启动mysql

docker-compose -f mysql.yaml up -d
原文地址:https://www.cnblogs.com/zoujiaojiao/p/14072238.html