MariaDB On Docker

mariadb on docker

docker-compose.yml

  • 최대한 심플
service:
  db:
    image: mariadb
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: example

Dockerfile

FROM mariadb:11.2

RUN mkdir /data
RUN mkdir /data/mysql

RUN mkdir /home/mysql
RUN mkdir /home/mysql/log
RUN mkdir /home/mysql/log/binary
RUN mkdir /home/mysql/log/error
RUN mkdir /home/mysql/log/relay
RUN mkdir /home/mysql/log/general

RUN chmod -R 777 /data
RUN chmod -R 777 /home/mysql

my.cnf

  • 펌인데 어디서 퍼왔는지 기억나지 않음
[mysql]
database=ws

[client]
port                            = 3306
socket                          = /data/mysql/mysql.sock

[mysqld]
bind-address = 0.0.0.0
port                            = 3306
socket                          = /data/mysql/mysql.sock

## config server and data path
#datadir                         = /data/mysql/mysql-data
#tmpdir                          = /home/mysql/tmpdir
#innodb_data_home_dir           = /data/mysql/mysql-data
#innodb_log_group_home_dir       = /home/mysql/log

# Log Config
binlog_format                   = mixed
expire_logs_days                = 7
long_query_time                 = 10
max_binlog_size                 = 1G
sync_binlog                     = 1
slow_query_log                  = 1
log-bin                         = /home/mysql/log/binary/mysql-bin
log-error                       = /home/mysql/log/error/mysql.err
relay-log                       = /home/mysql/log/relay/relay-log
slow_query_log_file             = /home/mysql/log/mysql-slow-query.log
general_log_file                = /home/mysql/log/general/mysql_general.log
log-warnings                    = 2

# Character set Config (utf8mb4)
character_set-client-handshake  = FALSE
character-set-server            = utf8mb4
collation_server                = utf8mb4_general_ci
init_connect                    = set collation_connection=utf8mb4_general_ci
init_connect                    = set names utf8mb4

# Common Config
back_log                        = 1024
binlog_cache_size               = 1M
ft_min_word_len                 = 4
interactive_timeout             = 600
join_buffer_size                = 2M
max_allowed_packet              = 1G
max_connections                 = 8196
max_heap_table_size             = 4096M
max_length_for_sort_data        = 1024
open_files_limit                = 8192
performance_schema
read_buffer_size                = 1M
read_rnd_buffer_size            = 8M
skip_external_locking
skip-name-resolve               = 1
sort_buffer_size                = 1M
key_buffer_size                 = 8388608
table_open_cache                = 10240
tmp_table_size                  = 4096M
transaction_isolation           = READ-COMMITTED
slave_skip_errors               = all

# Query Cache Disable
query_cache_type                = 0
query_cache_size                = 0

# Innodb config
#innodb_additional_mem_pool_size = 16M
innodb_autoinc_lock_mode        = 1
innodb_buffer_pool_size         = 16G # 현재 서버 사양의 70~80%를 설정한다.
innodb_fast_shutdown            = 1
innodb_file_per_table           = 1
innodb_flush_log_at_trx_commit  = 2
#innodb_flush_method             = ALL_O_DIRECT
innodb_lock_wait_timeout        = 72000
innodb_log_buffer_size          = 64M
innodb_log_file_size            = 512M
innodb_log_files_in_group       = 8
#innodb_mirrored_log_groups      = 1
innodb_open_files               = 8192
innodb_read_io_threads          = 8
innodb_thread_concurrency       = 0
innodb_thread_sleep_delay       = 0
innodb_write_io_threads         = 8

#Thread Pool
thread_handling=pool-of-threads
thread_pool_idle_timeout        = 120
thread_pool_stall_limit         = 60

# Replication related settings
log_bin_trust_function_creators = 1

server-id                       = 1 

[mysqldump]
quick
max_allowed_packet              = 512M