在centos虚拟机上做的实验

1、获取mysql镜像

docker pull mysql:5.7

2、设置配置文件

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

log-bin = mysql-bin

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

log-bin = mysql-bin

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

docker run -p 29001:3306 --name master 
    -v /docker/mysql/master/conf:/etc/mysql/conf.d -v /docker/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker run -p 29002:3306 --name slave01 
    -v /docker/mysql/slave01/conf:/etc/mysql/conf.d -v /docker/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

4、mysql主服务器设置:

docker exec -i -t master /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 slave01 /bin/bash

mysql -u root -p

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

//启动从库同步    
start slave; 

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

undefined 这种情况说明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