1.拉取mysql,这里使用5.7
docker pull mysql:5.7
2、在本地主机新建两个配置文件:my-master.cnf、my-slave.cnf
my-master.cnf:
[mysqld]
log-bin = mysql-bin
server-id = 1
my-slave.cnf:
[mysqld]
server-id = 2
注意:自己创建文件所在的路径。后面会用到。
3.创建my-master容器,使用本地主机的3307端口映射容器3306,使用my-master.cnf文件。指定mysql的root用户的密码为:123456。
docker run -d -e MYSQL_ROOT_PASSWORD=123456 \
--name mysql-master \
-v /mydata/mysql/my-master.cnf:/etc/mysql/my.cnf \
-p 3307:3306 mysql:5.7
4、连接my-master。
mysql -h127.0.0.1 -P3307 -uroot -p123456
6、创建用户backup,密码:123456(ps:自己随意)并授权,供从主机使用。
创建用户:
CREATE USER 'backup'@'%' IDENTIFIED BY '123456';
授权:
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'backup'@'%';
7、创建my-slave容器,使用本地主机的3308端口映射容器3306,使用my-slave.cnf文件。指定mysql的root用户的密码为:123456。
docker run -d -e MYSQL_ROOT_PASSWORD=123456 \
--name mysql-slave \
-v /mydata/mysql/my-slave.cnf:/etc/mysql/my.cnf \
--link mysql-master \
-p 3308:3306 mysql:5.7
8、查看my-master的binlog信息。需要注意File:mysql-bin.000004,Position:154。
show master status\G;
9、使用docker ps,查看docker正在运行的容器列表,获得my-master的container id: 1deed37027b8 (ps:看你自己的值是什么)
10、获得 my-master对应的ip地址,说明1deed37027b8 是上一步获得的值。
docker inspect --format='{{.NetworkSettings.IPAddress}}' 1deed37027b8
11、 连接my-slave。
mysql -h127.0.0.1 -P3308 -uroot -p123456
12、为my-slave配置my-master。
change master to master_host='172.17.0.2',
master_user='backup',
master_password='123456',
master_port=3306,
master_log_file='mysql-bin.000004',
master_log_pos=154, master_connect_retry=30;
注意:1、master_host是my-master的ip;2、master_log_file='mysql-bin.000004'和master_log_pos=154,来源与第8步骤的值。
13、my-slave开启slave。
start slave;
14.查看slave状态消息;框住两个都是Yes证明配置成功啦。
show slave status\G;