最近在學習分庫分表,使用sharding jdbc ,所以需要在單機部署MySQL主從集群,并且選擇docker作為集群容器。
第一步 拉取鏡像
docker pull mysql:5.7
第二步 創(chuàng)建容器
docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
創(chuàng)建名字是master的容器,作為主庫對外暴露3306端口
docker run --name slave -p 3308:3306 --link master:master -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
創(chuàng)建名字是slave的容器,作為從庫對外暴露3308端口,使用--link參數(shù),保證與主庫master之間的通信
第三步 docker主從配置
修改mysql默認my.cnf文件。
master 的my.cnf 配置修改如下:
# 唯一標志id
server-id=1
#開啟二進制日志
log-bin=mysql-bin
把配置文件拷貝到master鏡像中
docker cp my.cnf master:/etc/mysql/my.cnf
slave 的my.cnf 配置如下:
# 唯一標志id
server-id=2
#開啟二進制日志
log-bin=mysql-bin
把配置文件拷貝到slave鏡像中
docker cp my.cnf slave:/etc/mysql/my.cnf
第四步 創(chuàng)建用于同步的用戶賬號
重啟master
docker restart master
使用sequel pro 連接master,并創(chuàng)建同步賬號slave,密碼為slave
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by 'slave';
show grants for 'slave'@'%';

重啟slave
docker restart slave
使用sequel pro 連接slave,執(zhí)行以下腳本
這里MASTER_HOST設置為master,因為我們之前建立slave鏡像是使用了 --link master:master
CHANGE MASTER TO
MASTER_HOST='master',
MASTER_PORT=3306,
MASTER_USER='slave',
MASTER_PASSWORD='slave';
START SLAVE;
show slave status;

可以看到slave已經(jīng)正常啟動了。
第五步 驗證
在master庫中新建test數(shù)據(jù)庫,可以看到slave庫中也同樣會自動創(chuàng)建test數(shù)據(jù)庫,當我們在master的test庫中新建users表,并且插入數(shù)據(jù)后,刷新slave的test庫,可以看到users表,以及相同的表數(shù)據(jù)

