mysql镜像可自行拉取
(1)master节点部署
dockers-compose:
version: '3'
services:
mysql:
image: mysql:latest
restart: always
container_name: mysql8-master
privileged: true
#restart: always
environment:
- MYSQL_ROOT_PASSWORD=Nt18NOmjFxsB3_8O40zg
- LANG=C.UTF-8
command:
--max_connections=2000
--max_user_connections=1900
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--server-id=1
network_mode: host
volumes:
- ./data:/var/lib/mysql
- ./my.cnf:/etc/mysql/my.cnf
- /etc/localtime:/etc/localtime
my.conf
#/data/mysql/conf/my.cnf
#预先要创建目录并 提供my.cnf配置文件
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set=utf8mb4
[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
skip-host-cache
skip-name-resolve
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
!includedir /etc/mysql/conf.d/
server-id=1 #id按需修改
log-bin=/var/lib/mysql/mysql-bin
#auto_increment_offset=1
auto_increment_increment=1
skip-slave-start
log-slave-updates=false
secure_file_priv=/var/lib/mysql
#否则会报错
expire_logs_days = 15
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
###优化参数
innodb_log_file_size=1073741824
innodb_log_files_in_group=4
transaction_isolation =read-committed
#优化连接超时时间
interactive_timeout = 600
[mysql]
default-character-set=utf8mb4
(2)master数据库初始化
create user 'slave'@'%' identified by 'daLWhJCgQJ3GmgoEoAPQKchDdi@l__U#';
grant replication slave,replication client on *.* to 'slave'@'%';
#获取binlog位置
show master status;
#记录目前的binlog文件名 以及pos位点
(3)slave节点部署
slave docker-compose
version: '3'
services:
mysql:
image: mysql:latest
restart: always
container_name: mysql8-slave
privileged: true
environment:
- MYSQL_ROOT_PASSWORD=Nt18NOmjFxsB3_8O40zg
- LANG=C.UTF-8
command:
--max_connections=2000
--max_user_connections=1900
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--server-id=2
network_mode: host
volumes:
- ./data:/var/lib/mysql
- ./my.cnf:/etc/mysql/my.cnf
- /etc/localtime:/etc/localtime
slave my.conf
#/data/mysql/conf/my.cnf
#预先要创建目录并 提供my.cnf配置文件
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set=utf8mb4
[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
skip-host-cache
skip-name-resolve
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
!includedir /etc/mysql/conf.d/
server-id=1 #id按需修改
log-bin=/var/lib/mysql/mysql-bin
#auto_increment_offset=1
auto_increment_increment=1
skip-slave-start
log-slave-updates=false
secure_file_priv=/var/lib/mysql
#否则会报错
expire_logs_days = 15
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
###优化参数
innodb_log_file_size=1073741824
innodb_log_files_in_group=4
transaction_isolation =read-committed
#优化连接超时时间
interactive_timeout = 600
[mysql]
default-character-set=utf8mb4
(4) slave节点初始化
#填写binlog位置
change master to master_host='主节点ip',master_port=3306,master_user='slave',master_password='daLWhJCgQJ3GmgoEoAPQKchDdi@l__U#',master_log_file='mysql-bin.0000##',master_log_pos=###;
#启动主从复制
start slave;
#查看从节点主从复制状态
show slave status\G
#若主从信息配置错误 用于清除配置 改命令较危险 务必确定要在从节点执行
reset slave;
出现下列信息为搭建完成