1、拉取镜像:
docker pull mysql:5.7.28
2、创建文件夹:(主库mysql-master,从库mysql-slave)
mkdir mysql-master
cd mysql-master
mkdir {conf,data,logs}
3、修改my.conf配置文件,主库端口10000,从库10001
主库my.cnf配置:开启binlog
[mysqld]
server-id=1
#开启binlog
log-bin=master-bin
log-bin-index=master-bin.index
skip-name-resolve
# 设置连接端口
port=10000
#服务端使用的字符集默认为UTF8
character-set-server=utf8
collation-server=utf8_general_ci
#允许最大连接数
max_connections=151
[client]
default-character-set=utf8
从库my.cnf配置:开启中继日志relay-log
[mysqld]
server-id=2
# 设置端口
port=10001
# 设置服务端字符集UTF8
character-set-server=utf8
collation-server=utf8_general_ci
# 设置最大连接数
max_connections=151
# 开启中继日志
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
# 打开从服务二级制日志
log-bin=mysql-bin
# 使得更新的数据写进二进制日志中
log-slave-updates=1
[client]
default-character-set=utf8
4、启动容器
主库:
docker run --name mysql-master -p 10000:10000 -v /bdl/docker/mysql-master/conf:/etc/mysql/conf.d -v /bdl/docker/mysql-master/logs:/var/log/mysql -v /bdl/docker/mysql-master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.28
从库:
docker run --name mysql-slave -p 10001:10001 -v /bdl/docker/mysql-slave/conf:/etc/mysql/conf.d -v /bdl/docker/mysql-slave/logs:/var/log/mysql -v /bdl/docker/mysql-slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.28
5、配置
主库:
# 进入mysql容器内部
docker exec -it mysql-master /bin/bash
# 登录mysql
mysql -uroot -p
# 授权
grant replication slave on *.* to 'root'@'%';
flush privileges;
# 查看主节点同步状态
show master status \G;
show master status; 记录此处File名称及Position位置,后续作为依据配置从库
mysql-master/data/目录下文件
从库:
# 进入mysql容器内部
docker exec -it mysql-slave /bin/bash
# 登录mysql
mysql -uroot -p
# 设置主同步节点
CHANGE MASTER TO
MASTER_HOST='116.62.207.266',
MASTER_PORT=10000,
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master-bin.000003',
MASTER_LOG_POS=498;
# 开启slave
start slave;
# 查看主从同步状态
show slave status \G;
从节点此处两个配置,Master_Log_File和Read_Master_Log_Pos等于步骤5,主库的File名称及Position位置;