Jaylon

导航

 

提前装好docker,建立网桥 #docker network create --driver bridge --subnet=10.0.0.0/24 --gateway=10.0.0.254 mynet

docker stop mysql8027
docker rm mysql8027
rm -rf /usr/local/docker/mysql8027
mkdir -p \
/usr/local/docker/mysql8027/conf \
/usr/local/docker/mysql8027/data \
/usr/local/docker/mysql8027/logs \
/usr/local/docker/mysql8027/tmp \
/usr/local/docker/mysql8027/logs/general \
/usr/local/docker/mysql8027/logs/error \
/usr/local/docker/mysql8027/logs/redo \
/usr/local/docker/mysql8027/logs/undo \
/usr/local/docker/mysql8027/logs/slow \
/usr/local/docker/mysql8027/logs/mybin \
/usr/local/docker/mysql8027/logs/relay

cat > /usr/local/docker/mysql8027/conf/mysqld.cnf <<EOF
#
## my.cnf for 8.0版本
## 本配置文件主要适用于MySQL 8.0版本
#
[client]
port = 8027
socket = /usr/local/mysql/tmp/mysql8027.sock
[mysql]
#prompt = "\u@audit \R:\m:\s [\d]> "
no_auto_rehash
[mysqld]
user = mysql
port = 8027
#主从复制或MGR集群中,server_id记得要不同
#另外,实例启动时会生成 auto.cnf,里面的 server_uuid 值也要不同
#server_uuid的值还可以自己手动指定,只要符合uuid的格式标准就可以
server_id = 8027
#basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /usr/local/mysql/tmp/mysql8027.sock
pid_file = /usr/local/mysql/tmp/mysql8027.pid
character_set_server = utf8mb4
collation-server = utf8mb4_general_ci
#character_set_server=latin1
#collation_server=latin1_swedish_ci
init_connect = "set names utf8mb4 collate utf8mb4_general_ci"
skip_character_set_client_handshake
skip_name_resolve = 1
#secure_file_priv=/var/lib/mysql
secure_file_priv=/usr/local/mysql/tmp
#若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数
#default_time_zone = "+8:00"
#启用admin_port,连接数爆满等紧急情况下给管理员留个后门
admin_address = '127.0.0.1'
admin_port = 80272
#performance setttings
lock_wait_timeout = 3600
open_files_limit = 65535
back_log = 1024
max_connections = 512
max_connect_errors = 1000000
table_open_cache = 1024
table_definition_cache = 1024
thread_stack = 512K
sort_buffer_size = 4M
join_buffer_size = 4M
read_buffer_size = 8M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64M
thread_cache_size = 768
interactive_timeout = 600
wait_timeout = 600
tmp_table_size = 32M
max_heap_table_size = 32M

#log settings
log_timestamps = SYSTEM
general_log=OFF
general_log_file=/usr/local/mysql/logs/general/gereral.log
log_error = /usr/local/mysql/logs/error/error.log
log_error_verbosity = 3
slow_query_log = 1
log_slow_extra = 1
slow_query_log_file = /usr/local/mysql/logs/slow/slow.log
long_query_time = 3
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 60
min_examined_row_limit = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_bin = /usr/local/mysql/logs/mybin/bin.log
binlog_format = ROW
sync_binlog = 1 #MGR环境中由其他节点提供容错性,可不设置双1以提高本地节点性能
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
binlog_rows_query_log_events = 1
binlog_expire_logs_seconds = 604800
relay_log = /usr/local/mysql/logs/relay/relay.log
#MySQL 8.0.22前,想启用MGR的话,需要设置binlog_checksum=NONE才行
binlog_checksum = CRC32
gtid_mode = ON
enforce_gtid_consistency = TRUE

#myisam settings
key_buffer_size = 32M
myisam_sort_buffer_size = 128M

#replication settings
relay_log_recovery = 1
slave_parallel_type = LOGICAL_CLOCK
slave_parallel_workers = 64 #可以设置为逻辑CPU数量的2倍
binlog_transaction_dependency_tracking = WRITESET
slave_preserve_commit_order = 1
slave_checkpoint_period = 2

#mgr settings
loose-plugin_load_add = 'mysql_clone.so'
loose-plugin_load_add = 'group_replication.so'
loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1"
#MGR本地节点IP:PORT,请自行替换
loose-group_replication_local_address = "10.0.0.27:80271"
#MGR集群所有节点IP:PORT,请自行替换
loose-group_replication_group_seeds = "10.0.0.27:80271,10.0.0.28:80272,10.0.0.29:80273"
loose-group_replication_start_on_boot = OFF
loose-group_replication_bootstrap_group = OFF
loose-group_replication_exit_state_action = READ_ONLY
loose-group_replication_flow_control_mode = "DISABLED"
loose-group_replication_single_primary_mode = ON

#innodb settings
transaction_isolation = REPEATABLE-READ
innodb_buffer_pool_size = 1434M
innodb_buffer_pool_instances = 4
innodb_data_file_path = ibdata1:12M:autoextend
innodb_flush_log_at_trx_commit = 1 #MGR环境中由其他节点提供容错性,可不设置双1以提高本地节点性能
innodb_log_buffer_size = 32M
innodb_log_file_size = 100M #如果线上环境的TPS较高,建议加大至1G以上,如果压力不大可以调小
innodb_log_files_in_group = 3
innodb_max_undo_log_size = 4G
# 根据您的服务器IOPS能力适当调整
# 一般配普通SSD盘的话,可以调整到 10000 - 20000
# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_open_files = 65535
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 4000
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_online_alter_log_max_size = 4G
innodb_print_ddl_logs = 1
innodb_status_file = 1
#注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log_error文件增长较快
innodb_status_output = 0
innodb_status_output_locks = 1
innodb_sort_buffer_size = 67108864
innodb_adaptive_hash_index = OFF

#innodb monitor settings
innodb_monitor_enable = "module_innodb"
innodb_monitor_enable = "module_server"
innodb_monitor_enable = "module_dml"
innodb_monitor_enable = "module_ddl"
innodb_monitor_enable = "module_trx"
innodb_monitor_enable = "module_os"
innodb_monitor_enable = "module_purge"
innodb_monitor_enable = "module_log"
innodb_monitor_enable = "module_lock"
innodb_monitor_enable = "module_buffer"
innodb_monitor_enable = "module_index"
innodb_monitor_enable = "module_ibuf_system"
innodb_monitor_enable = "module_buffer_page"
#innodb_monitor_enable = "module_adaptive_hash"

#pfs settings
performance_schema = 1
#performance_schema_instrument = '%memory%=on'
performance_schema_instrument = '%lock%=on'

[mysqldump]
quick

EOF

chown -R 999:999 /usr/local/docker/mysql8027

docker run -itd \
--name mysql8027 --hostname mysql8027 \
--net mynet --ip=10.0.0.27 -p 8027:8027 \
-v /usr/local/docker/mysql8027/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /usr/local/docker/mysql8027/data:/usr/local/mysql/data \
-v /usr/local/docker/mysql8027/logs:/usr/local/mysql/logs \
-v /usr/local/docker/mysql8027/tmp:/usr/local/mysql/tmp \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=abc \
--restart=always \
--privileged=true \
mysql:8.0.27

posted on 2022-03-01 18:15  Jaylon  阅读(302)  评论(0)    收藏  举报