Mysql8.4.4-docker双主部署

步骤 1:准备工作

1. 服务器要求:

   - 两台服务器(假设 IP 为 10.10.10.13 和 10.10.10.14)。

   - 确保两台服务器之间网络互通(开放 `3306` 端口)。

   - 安装 Docker 和 Docker Compose。

   - 服务器存在mysql8的docker镜像(不存在的话需要有镜像源)。

Mysql8.4.4-docker双主部署_第1张图片

2. 创建本地目录:

   # 在每台服务器上执行

   mkdir -p /data/mysql/{data,conf,logs}

Mysql8.4.4-docker双主部署_第2张图片

步骤 2:编写 MySQL 配置文件

在每台服务器上创建 MySQL 配置文件 /data/mysql/conf/my.cnf,注意区分 server-id 和 auto-increment-offset。

服务器 1 的配置(10.10.10.13):

[mysqld]
character_set_server                    = utf8mb4
datadir                                 = /var/lib/mysql/data
default_storage_engine                  = InnoDB
explicit_defaults_for_timestamp         = 1
init_connect                            = 'set names utf8mb4'    
log_bin                                 = /var/lib/mysql/logs/bin_log
log_bin_trust_function_creators         = 1
lower_case_table_names                  = 1   
max_connect_errors                      = 10
port                                    = 3306    
skip_name_resolve                       = 1
group_concat_max_len                    = 102400
default-time_zone                       = '+8:00'
innodb_buffer_pool_size                 = 12G
innodb_redo_log_capacity                = 256M
innodb_file_per_table                   = 1
innodb_flush_log_at_trx_commit          = 2
innodb_flush_method                     = fsync
innodb_lock_wait_timeout                = 30
innodb_log_buffer_size                  = 32M
innodb_online_alter_log_max_size        = 1G
innodb_print_all_deadlocks              = 1
innodb_rollback_on_timeout              = 1
innodb_sort_buffer_size                 = 32M
log_error                               = /var/lib/mysql/logs/error.log
long_query_time                         = 3
slow_query_log                          = ON
slow_query_log_file                     = /var/lib/mysql/logs/slow.log
max_connections                         = 20000 
binlog_format                           = ROW 
log_replica_updates                         = 1
relay_log = /var/lib/mysql/logs/relay-log
relay_log_index = /var/lib/mysql/logs/relay-log.index
server_id                               = 1 
auto_increment_increment=2
auto_increment_offset=1
sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

服务器 2 的配置(10.10.10.14):

[mysqld]
character_set_server                    = utf8mb4
datadir                                 = /var/lib/mysql/data
default_storage_engine                  = InnoDB
explicit_defaults_for_timestamp         = 1
init_connect                            = 'set names utf8mb4'    
log_bin                                 = /var/lib/mysql/logs/bin_log
log_bin_trust_function_creators         = 1
lower_case_table_names                  = 1   
max_connect_errors                      = 10
port                                    = 3306    
skip_name_resolve                       = 1
group_concat_max_len                    = 102400
default-time_zone                       = '+8:00'
innodb_buffer_pool_size                 = 12G
innodb_redo_log_capacity                = 256M
innodb_file_per_table                   = 1
innodb_flush_log_at_trx_commit          = 2
innodb_flush_method                     = fsync
innodb_lock_wait_timeout                = 30
innodb_log_buffer_size                  = 32M
innodb_online_alter_log_max_size        = 1G
innodb_print_all_deadlocks              = 1
innodb_rollback_on_timeout              = 1
innodb_sort_buffer_size                 = 32M
log_error                               = /var/lib/mysql/logs/error.log
long_query_time                         = 3
slow_query_log                          = ON
slow_query_log_file                     = /var/lib/mysql/logs/slow.log
binlog_format                           = ROW 
relay_log = /var/lib/mysql/logs/relay-log
relay_log_index = /var/lib/mysql/logs/relay-log.index
server_id                               = 2
auto_increment_increment=2
auto_increment_offset=2
sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

注意:

配置文件里面需要特别提醒的参数

datadir= /var/lib/mysql/data   #持久化数据,映射出到data目录

log_bin= /var/lib/mysql/logs/bin_log #二进制文件,映射到logs目录

log_error= /var/lib/mysql/logs/error.log #错误日志,映射到logs目录

slow_query_log_file= /var/lib/mysql/logs/slow.log #慢日志,映射到logs目录

relay_log = /var/lib/mysql/logs/relay-log  #中继日志,用于主从同步,映射到logs目录

relay_log_index = /var/lib/mysql/logs/relay-log.index #中继日志,用于主从同步,映射到logs目录

server_id = 1  #

你可能感兴趣的:(docker,容器,运维,mysql)