docker封装mysql镜像

发布时间:2020-03-13 12:18:07编辑:admin阅读(2808)

    一、概述

    直接使用官方的镜像

    docker pull mysql:5.7

    但是mysqld.cnf并没有优化,还是默认的。

     

    二、封装镜像

    创建目录

    # dockerfile目录
    mkdir -p /opt/dockerfile/mysql
    # 持久化目录
    mkdir -p /data/mysql/data

    /opt/dockerfile/mysql 目录结构如下:

    ./
    ├── dockerfile
    ├── mysqld.cnf
    └── run.sh

     

    dockerfile

    FROM mysql:5.7
    ADD mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf

     

    mysqld.cnf

    [client]
    port=3306
    socket = /var/run/mysqld/mysqld.sock
    [mysql]
    no-auto-rehash
    auto-rehash
    default-character-set=utf8mb4
    [mysqld]
    ###basic settings
    server-id = 2
    pid-file    = /var/run/mysqld/mysqld.pid
    socket        = /var/run/mysqld/mysqld.sock
    datadir        = /var/lib/mysql
    #log-error    = /var/lib/mysql/error.log
    # By default we only accept connections from localhost
    #bind-address    = 127.0.0.1
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    character-set-server = utf8mb4
    sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    default-storage-engine=INNODB
    transaction_isolation = READ-COMMITTED
    auto_increment_offset = 1
    connect_timeout = 20
    max_connections = 3500
    wait_timeout=86400
    interactive_timeout=86400
    interactive_timeout = 7200
    log_bin_trust_function_creators = 1
    wait_timeout = 7200
    sort_buffer_size = 32M
    join_buffer_size = 128M
    max_allowed_packet = 1024M
    tmp_table_size = 2097152
    explicit_defaults_for_timestamp = 1
    read_buffer_size = 16M
    read_rnd_buffer_size = 32M
    query_cache_type = 1
    query_cache_size = 2M
    table_open_cache = 1500
    table_definition_cache = 1000
    thread_cache_size = 768
    back_log = 3000
    open_files_limit = 65536
    skip-name-resolve
    ########log settings########
    log-output=FILE
    general_log = ON
    general_log_file=/var/lib/mysql/general.log
    slow_query_log = ON
    slow_query_log_file=/var/lib/mysql/slowquery.log
    long_query_time=10
    #log-error=/var/lib/mysql/error.log
    log_queries_not_using_indexes = OFF
    log_throttle_queries_not_using_indexes = 0
    #expire_logs_days = 120
    min_examined_row_limit = 100
    ########innodb settings########
    innodb_io_capacity = 4000
    innodb_io_capacity_max = 8000
    innodb_buffer_pool_size = 6144M
    innodb_file_per_table = on
    innodb_buffer_pool_instances = 20
    innodb_buffer_pool_load_at_startup = 1
    innodb_buffer_pool_dump_at_shutdown = 1
    innodb_log_file_size = 300M
    innodb_log_files_in_group = 2 
    innodb_log_buffer_size = 16M
    innodb_undo_logs = 128
    #innodb_undo_tablespaces = 3
    #innodb_undo_log_truncate = 1
    #innodb_max_undo_log_size = 2G
    innodb_flush_method = O_DIRECT
    innodb_flush_neighbors = 1
    innodb_purge_threads = 4
    innodb_large_prefix = 1
    innodb_thread_concurrency = 64
    innodb_print_all_deadlocks = 1
    innodb_strict_mode = 1
    innodb_sort_buffer_size = 64M
    innodb_flush_log_at_trx_commit=1
    innodb_autoextend_increment=64
    innodb_concurrency_tickets=5000
    innodb_old_blocks_time=1000
    innodb_open_files=65536
    innodb_stats_on_metadata=0
    innodb_file_per_table=1
    innodb_checksum_algorithm=0
    #innodb_data_file_path=ibdata1:60M;ibdata2:60M;autoextend:max:1G
    innodb_data_file_path = ibdata1:12M:autoextend
    #innodb_temp_data_file_path = ibtmp1:500M:autoextend:max:20G
    #innodb_buffer_pool_dump_pct = 40
    #innodb_page_cleaners = 4
    #innodb_purge_rseg_truncate_frequency = 128
    binlog_gtid_simple_recovery=1
    #log_timestamps=system
    ##############
    delayed_insert_limit = 100
    delayed_insert_timeout = 300
    delayed_queue_size = 1000
    delay_key_write = ON
    disconnect_on_expired_password = ON
    div_precision_increment = 4
    end_markers_in_json = OFF
    eq_range_index_dive_limit = 10
    innodb_adaptive_flushing = ON
    innodb_adaptive_hash_index = ON
    innodb_adaptive_max_sleep_delay = 150000
    #innodb_additional_mem_pool_size = 2097152
    innodb_autoextend_increment = 64
    innodb_autoinc_lock_mode = 1

     

    run.sh

    #!/bin/bash
    docker run -d --name mysqld_prod --restart=always -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306 -v /data/mysql/data:/var/lib/mysql mysqld_prod:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

     

    生成镜像

    cd /opt/dockerfile/mysql
    docker build -t mysqld_prod:5.7 .

     

    启动镜像

    bash run.sh

     

    三、测试连接

    1.png

     

    连接测试

    1.png

     


关键字

上一篇: docker封装redis镜像

下一篇: CentOS修改ulimit