在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;
备注1:
我一开始总是报错:Slave_IO_Running: Connecting;原因是在设置主库链接时我将ip地址设置为localhost;改为实际ip192.168.56.101即可
备注2(从服务器设置):
- master_host:主库地址
- master_user:主库创建的同步账号
- master_password:主库创建的同步密码
- master_log_file:主库产生的日志(File)
- master_log_pos:主库日志记录偏移量(Position)
- master_port:主库使用的端口,默认为3306;我的是29001