例二:定制化my.cnf与挂载卷
提前安装好docker
拉取官方镜像(我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版)
docker pull mysql:5.7 # 拉取 mysql 5.7最新版本
docker pull mysql # 拉取最新版mysql镜像
可以pull的版本根据官方版本号指定 可以参考https://hub.docker.com/_/mysql/
[root@A2 mysql5736]# docker pull mysql:5.7.34
[root@A2 mysql5736]# docker network create --driver bridge --subnet=10.0.0.0/24 --gateway=10.0.0.254 mynet
##直接pull的官方版镜像 都是rpm安装的;其镜像的默认mysql的gid与uid是999;docker安装后999的gid、uid已被其他用户占据;宿主机的挂载卷必须为999才具备权限
docker stop mysql5734
docker rm mysql5734
rm -rf /usr/local/docker/mysql5734
mkdir -p \
/usr/local/docker/mysql5734/conf \
/usr/local/docker/mysql5734/data \
/usr/local/docker/mysql5734/logs \
/usr/local/docker/mysql5734/tmp \
/usr/local/docker/mysql5734/logs/general \
/usr/local/docker/mysql5734/logs/error \
/usr/local/docker/mysql5734/logs/redo \
/usr/local/docker/mysql5734/logs/undo \
/usr/local/docker/mysql5734/logs/slow \
/usr/local/docker/mysql5734/logs/mybin \
/usr/local/docker/mysql5734/logs/relay
cat > /usr/local/docker/mysql5734/conf/mysqld.cnf <<EOF
[client]
socket = /usr/local/mysql/tmp/mysql.sock
port=5734
[mysqld]
########basic settings########
server-id = 5734
port = 5734
user = mysql
#bind_address = 172.18.237.232
autocommit = 0
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 800
max_connect_errors = 1000
datadir = /usr/local/mysql/data
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728
tmp_table_size = 67108864
tmpdir = /usr/local/mysql/tmp
socket = /usr/local/mysql/tmp/mysql.sock
pid_file = /usr/local/mysql/tmp/mysql.pid
max_allowed_packet = 16777216
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800
wait_timeout = 1800
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
########log settings########
general_log=OFF
general_log_file=/usr/local/mysql/logs/general/gereral.log
#log_output="TABLE,FILE"
log_error = /usr/local/mysql/logs/error/error.log
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/logs/slow/slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
long_query_time = 1
min_examined_row_limit = 100
########replication settings########
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = /usr/local/mysql/logs/mybin/bin.log
#log_bin_index = /usr/local/mysql/logs/mybin/bin.log.index
sync_binlog = 1
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
binlog_format = row
relay_log = /usr/local/mysql/logs/relay/relay.log
relay_log_recovery = 1
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
#innodb_data_home_dir = /usr/local/mysql/data/innodb
#innodb_log_group_home_dir=/usr/local/mysql/data/innodb
#innodb_data_file_path = ibdata1:512M:autoextend
innodb_page_size = 8192
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 4
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_log_group_home_dir = /usr/local/mysql/logs/redo/
innodb_undo_directory = /usr/local/mysql/logs/undo/
innodb_undo_logs = 128
innodb_undo_tablespaces = 3
innodb_flush_neighbors = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 1024M
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 = 67108864
########semi sync replication settings########
#plugin_dir=/usr/lib/mysql/plugin
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000
[mysqld-5.7]
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on
EOF
chown -R 999:999 /usr/local/docker/mysql5734
docker run -itd \
--name mysql5734 --hostname mysql5734 \
--net mynet --ip=10.0.0.34 -p 5734:5734 \
-v /usr/local/docker/mysql5734/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /usr/local/docker/mysql5734/data:/usr/local/mysql/data \
-v /usr/local/docker/mysql5734/logs:/usr/local/mysql/logs \
-v /usr/local/docker/mysql5734/tmp:/usr/local/mysql/tmp \
--restart=always \
--privileged=true \
--env MYSQL_ROOT_HOST=% \
-v /etc/localtime:/etc/localtime \
mysql:5.7.34
#官方rpm镜像 默认登陆root密码为空 不需要- e MYSQL_ROOT_PASSWORD=xxxxxx
浙公网安备 33010602011771号