1、获取mysql镜像

docker pull mysql:5.7

2、设置配置文件

1、主服务器1:
新建目录:/data/docker/mysql/conf/
新建文件:master.cnf
[mysqld]
server_id = 999  ##mysql服务器的唯一标识,每个都不一样

log-bin = mysql-bin

2、主服务器2:
新建目录:/data/docker/mysql/conf/
新建文件:master.cnf
[mysqld]
server_id = 101  ##mysql服务器的唯一标识,每个都不一样

log-bin = mysql-bin

3、分别创建mysql主从服务器的docker容器

docker run -p 3306:3306 --name mysql-master-01 --network my_net --restart always \
    -v /data/docker/mysql/conf:/etc/mysql/conf.d \
    -v /data/docker/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker run -p 3306:3306 --name mysql-master-02 --network my_net --restart always \
    -v /data/docker/mysql/conf:/etc/mysql/conf.d \
    -v /data/docker/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

4、mysql主服务器设置:

docker exec -i -t mysql-master-01 /bin/bash

mysql -u root -p
//创建一个同步数据的账号
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
//查看状态,记住File、Position的值,在Slaver中将用到
show master status;

5、mysql从服务器设置:

docker exec -i -t mysql-master-02 /bin/bash

mysql -u root -p

//设置主库链接
change master to master_host='mysql-master-01',master_user='backup',
    master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154,master_port=3306;

//启动从库同步    
start slave; 

//查看状态  
show slave status\G;

这种情况说明mysql主从同步配置成功

备注1:

我一开始总是报错:Slave_IO_Running: Connecting;原因是在设置主库链接时我将ip地址设置为localhost;改为实际ip192.168.56.101即可

备注2(从服务器设置):

  1. master_host:主库地址
  2. master_user:主库创建的同步账号
  3. master_password:主库创建的同步密码
  4. master_log_file:主库产生的日志(File)
  5. master_log_pos:主库日志记录偏移量(Position)
  6. master_port:主库使用的端口,默认为3306;我的是29001