Docker下搭建MySQL主從復(fù)制(一主一從)
實現(xiàn)Mycat讀寫分離
1、通過docker exec -it 627a2368c865 /bin/bash
命令進入到Master容器內(nèi)部
2、cd /etc/mysql
切換到/etc/mysql目錄下,然后vi my.cnf
對my.cnf進行編輯
此時會報出
bash: vi: command not found
,需要我們在docker容器內(nèi)部自行安裝vim。執(zhí)行
apt-get update
,然后再次執(zhí)行apt-get install vim
即可成功安裝vim
3、使用vim編輯my.cnf,在my.cnf下添加如下配置:
[mysqld]
server-id=1 #主服務(wù)器唯一ID
log-bin=mysql-bin #啟用二進制日志
binlog-ignore-db=mysql # 設(shè)置不要復(fù)制的數(shù)據(jù)庫(可設(shè)置多個)
binlog-ignore-db=information_schema
binlog-do-db=testdb #設(shè)置需要復(fù)制的數(shù)據(jù)庫
binlog_format=STATEMENT #設(shè)置logbin格式
4、同理,編輯slave從機的my.cnf文件,添加如下:
[mysqld]
server-id=2 #從服務(wù)器唯一ID
relay-log=mysql-relay #啟用中繼日志
5、注意,由于MySQL通過如下命令啟動,所以可以直接在docker主機的/usr/local/docker/mysql/conf位置直接編寫my.cnf文件同樣生效,則不需要在容器內(nèi)安裝vim等;
docker run -p 3306:3306 --name mysql1 -v /usr/local/docker/mysql/conf1:/etc/mysql -v /usr/local/docker/mysql/logs1:/var/log/mysql -v /usr/local/docker/mysql/data1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
6、重啟主從 mysql的容器,
7、驗證主機從機都關(guān)閉防火墻
8、在主機上建立帳戶并授權(quán) slave
#在主機MySQL里執(zhí)行授權(quán)命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123';
# 查詢master的狀態(tài)
show master status;
9、查詢主機狀態(tài),找到如下File和Position的值;
10、在從機上配置需要復(fù)制的主機
#復(fù)制主機的命令
CHANGE MASTER TO MASTER_HOST='主機的IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.具體數(shù)字',MASTER_LOG_POS=具體值;
#啟動從服務(wù)器復(fù)制功能
start slave;
#查看從服務(wù)器狀態(tài)
show slave status;
注意:如果需要停用slave,命令為:stop slave;
11、查看從機狀態(tài),如果這個兩個參數(shù)為Yes,則表示配置成功。
12、然后在主機新建庫、新建表、insert 記錄,從機復(fù)制測試。
13、主從復(fù)制排錯:
14、如何重新配置主從
stop slave;
reset master;
本文摘自 :https://www.cnblogs.com/