Docker版MYSQL主从复制

新建主服务器容器实例3307

docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

##这里前提是你的镜像不能有原版的,不然可能会使容器起不来

 进入/mydata/mysql-master/conf目录下新建my.cnf

cd /mydata/mysql-master/conf/

vim my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mail-mysql-bin
## 设置二进制日志适用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间,默认值为0,表示不自动清理
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
slave_skip_errors=1062

修改完配置之后重启master实例

docker restart mysql-master

进入mysql-master容器

# 查看正在运行的容器

 docker ps

#进入mysql-master容器

docker exec -it  mysql-master  /bin/bash

#登录数据库

mysql -proot

 master容器实例内创建数据同步用户

create user 'xcl'@'%' identified by '123456';

grant replication slave,replication client on *.*to'xcl'@'%';

新建从服务器容器实例3308

docker run -p 3308:3306 --name mysql-slave -v /mydata/mysql-slave/log:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v  /mydata/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

进入/mydata/mysql-slave/conf目录下新建my.cnf

cd /mydata/mysql-slave/conf/

vim my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mail-mysql-slave1-bin
## 设置二进制日志适用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间,默认值为0,表示不自动清理
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
slave_skip_errors=1062
## 配置中继日志
relay_log=mall-mysql-relay-bin
## 表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读
read_only=1

修改完配置后重启slave实例

docker restart mysql-slave

在主数据库中查看主从同步状态

show master status;

进入mysql-slave容器

docker exec   -it  mysql-slave   /bin/bash

mysql -proot

在从数据库中配置主从复制 

CHANGE MASTER TO MASTER_HOST='172.17.0.2',MASTER_USER='xcl',MASTER__PASSWORD='123456',MASTER_LOG_FILE='mail-mysql-bin.000001',MASTER_LOG_POS==613;

flush privileges

start slave

在从数据库中查看主从同步状态

show slave status\G

Docker版MYSQL主从复制_第1张图片 测试

在主库创建库 T1   创建表t1

create database T1;

use T1

create table t1(id int,name char(10),age int);

show databases;

 Docker版MYSQL主从复制_第2张图片

 use T1

show tables;

 Docker版MYSQL主从复制_第3张图片

同理再去从库查看是否同步

Docker版MYSQL主从复制_第4张图片

主从复制完成

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