1. 拉取mysql鏡像
docker pull mysql:5.7
2. 創(chuàng)建掛載目錄
mkdir -p /home/mysql/mysql01/data
mkdir -p /home/mysql/mysql01/conf.d
將附件中的 mysqld.cnf 分別拷貝至conf.d中置尔,如果是單主機docker虛擬仨個容器厉亏,需改端口port和server-id
mkdir -p /home/mysql/data
mkdir -p /home/mysql/conf.d
3. 使用鏡像創(chuàng)建容器東側(cè)可讓
docker run --name mysql01 --net=host --privileged=true -v /home/mysql/mysql01/data:/var/lib/mysql -v /home/mysql/mysql01/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root111 -d mysql:5.7
docker run --name mysql02 --net=host --privileged=true -v /home/mysql/mysql02/data:/var/lib/mysql -v /home/mysql/mysql02/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root222 -d mysql:5.7
docker run --name mysql03 --net=host --privileged=true -v /home/mysql/mysql03/data:/var/lib/mysql -v /home/mysql/mysql03/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root333 -d mysql:5.7
# --net=host 單主機docker容器間聯(lián)系需開放端口
-p 3306:3306 多主機直接開放防火墻端口
docker run --name mysql252 --net=host --privileged=true -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root123 -d mysql:5.7
4. 創(chuàng)建 mysql-master(mysql01)
###進入容器 docker exec -i -t mysql-master /bin/bash
4.1 進入mysql
mysql -p3306 -uroot -p
4.2 創(chuàng)建一個具有slave復(fù)制權(quán)限的用戶:atlp
GRANT REPLICATION SLAVE ON *.* to 'atlp'@'%' identified by 'atlp123';
4.3 刷新權(quán)限
flush privileges;
4.4 顯示 master 狀態(tài),如下圖:
show master status;
mysql-bin.000007 15734
mysql-bin.000008 1549476
5. 創(chuàng)建 mysql-slave(mysql02)
###進入容器 docker exec -i -t mysql-slave137 /bin/bash
5.1 進入mysql
mysql -p3306 -uroot -p
5.2 重置slave
stop slave;
reset slave;
change master to master_host='IP地址',master_user='atlp',master_password='atlp123',master_log_file='mysql-bin.000007',master_log_pos=15734;
#master_host:mysql-master 的 ip 地址西壮;
#master_user:在 4.2 中設(shè)置的擁有 slave 復(fù)制權(quán)限的用戶:atlp偶垮;
#master_password:用戶密碼张咳;
#master_log_file:在 4.4 圖例中的第一列“File”的值;
#master_log_pos: 在 4.4 圖例中的第二列“Position”的值似舵;
5.3 啟動slave
start slave;
5.4 查看slave狀態(tài)
show slave status \G
# --Slave_IO_Running和Slave_SQL_Running 即成功
6. 創(chuàng)建mysql-slave(mysql03)
同上
###查看mysql服務(wù)器id
show variables like '%server_id%';
###查看docker日志
docker logs -f -t --since="2019-01-17" --tail=100 mysql02
7. 防火墻設(shè)置
#添加(--permanent永久生效脚猾,沒有此參數(shù)重啟后失效)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3307/tcp --permanent
firewall-cmd --zone=public --add-port=3308/tcp --permanent
#重新載入
firewall-cmd --reload
#查看
firewall-cmd --list-ports
#刪除(如果添加錯誤可以刪除)
firewall-cmd --zone= public --remove-port=80/tcp --permanent