今天就跟大家聊聊有關(guān)docker中怎么搭建MySQL主從復(fù)制,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有馬村免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
一、通過docker安裝mysql,我在這里選擇是的5.6版本
1)搜索從docker啦取mysql鏡像
docker pull mysql:5.6
2)使用本鏡像啟動(dòng)兩個(gè)mysql容器(主、從容器)
master(主)
docker run -p 3316:3306 --name master-mysql -eMYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
slave(從)
docker run -p 3317:3306 --name slave-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
參數(shù)解析:
-p 將容器的 3306 端口映射到主機(jī)的 3306 端口。
--name 使用docker鏡像mysql:5.6,將容器命名為mastermysql。
-e -e MYSQL_ROOT_PASSWORD=123456 初始化密碼。
-d 后臺(tái)運(yùn)行容器,并返回容器ID。
查看容器是否正常運(yùn)行:docker ps
二、配置mysql主服務(wù)器(Master)
1)進(jìn)入mysql主服務(wù)器內(nèi)部
docker exec -it e8355163bbbc /bin/bash
2)編輯my.cnf
cd /etc/mysql
編輯 my.cnf(vim my.cnf)
注意:可能會(huì)提示vim沒有安裝,可以運(yùn)行 apt-get install vim 安裝,然后再執(zhí)行vim my.cnf
在末尾處添加
[mysqld]
server-id=100
log-bin=mysql-bin
配置完成后需要重啟mysql,重啟過程中docker鏡像也會(huì)停止,所以也需要重啟一下鏡像
service mysql restart
docker start mysql-master
3)下一步在Master數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)同步用戶,授予用戶 slave REPLICATION SLAVE權(quán)限和REPLICATION CLIENT權(quán)限,用于在主從庫(kù)之間同步數(shù)據(jù)。
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
三、配置mysql從服務(wù)器(Slave)
1)進(jìn)入mysql從服務(wù)器內(nèi)部
docker exec -it 從服務(wù)器id /bin/bash
2)編輯my.cnf
cd /etc/mysql
編輯 my.cnf(vim my.cnf)
注意:可能會(huì)提示vim沒有安裝,可以運(yùn)行 apt-get install vim 安裝,然后再執(zhí)行vim my.cnf
在末尾處添加
[mysqld]
server-id=101
log-bin=mysql-slave-bin
relay_log=edu-mysql-relay-bin
配置完成后需要重啟mysql,重啟過程中docker鏡像也會(huì)停止,所以也需要重啟一下鏡像
service mysql restart
docker start mysql-slave
四、其他設(shè)置
1)鏈接Master(主)和Slave(從)
在Master進(jìn)入mysql,執(zhí)行show master status;
File和Position字段的值后面將會(huì)用到,在后面的操作完成之前,需要保證Master庫(kù)不能做任何操作,否則將會(huì)引起狀態(tài)變化,F(xiàn)ile和Position字段的值變化。
2)在Slave中進(jìn)入mysql,執(zhí)行
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 433, master_connect_retry=30;
命令說明:
master_host:Master的地址,指的是容器的獨(dú)立ip,可以通過docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱|容器id查詢?nèi)萜鞯膇p
master_port:Master的端口號(hào),指的是容器的端口號(hào)
master_user:用于數(shù)據(jù)同步的用戶
master_password:用于同步的用戶的密碼
master_log_file:指定 Slave 從哪個(gè)日志文件開始復(fù)制數(shù)據(jù),即上文中提到的 File 字段的值
master_log_pos:從哪個(gè) Position 開始讀,即上文中提到的 Position 字段的值
master_connect_retry:如果連接失敗,重試的時(shí)間間隔,單位是秒,默認(rèn)是60秒
3)在Slave 中的mysql終端執(zhí)行 show slave status \G;用于查看主從同步狀態(tài)。
正常情況下,SlaveIORunning 和 SlaveSQLRunning 都是No,因?yàn)槲覀冞€沒有開啟主從復(fù)制過程。使用start slave;開啟主從復(fù)制過程,然后再次查詢主從同步狀態(tài)show slave status \G;。
看完上述內(nèi)容,你們對(duì)docker中怎么搭建mysql主從復(fù)制有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。