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(从服务器设置):
- master_host:主库地址
- master_user:主库创建的同步账号
- master_password:主库创建的同步密码
- master_log_file:主库产生的日志(File)
- master_log_pos:主库日志记录偏移量(Position)
- master_port:主库使用的端口,默认为3306;我的是29001