欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何搭建基于Docker的MySQL主從復(fù)制

下文主要給大家?guī)?lái)如何搭建基于Docker的MySQL主從復(fù)制,希望這些內(nèi)容能夠帶給大家實(shí)際用處,這也是我編輯如何搭建基于Docker的MySQL主從復(fù)制這篇文章的主要目的。好了,廢話不多說(shuō),大家直接看下文吧。                                                           如何搭建基于Docker的MySQL主從復(fù)制

公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)推出曹縣免費(fèi)做網(wǎng)站回饋大家。

為什么基于Docker搭建?

  • 資源有限
  • 虛擬機(jī)搭建對(duì)機(jī)器配置有要求,并且安裝mysql步驟繁瑣
  • 一臺(tái)機(jī)器上可以運(yùn)行多個(gè)Docker容器
  • Docker容器之間相互獨(dú)立,有獨(dú)立ip,互不沖突
  • Docker使用步驟簡(jiǎn)便,啟動(dòng)容器在秒級(jí)別

利用Docker搭建主從云服務(wù)器

首先拉取docker鏡像,我們這里使用5.7版本的mysql:
docker pull mysql:5.7
然后使用此鏡像啟動(dòng)容器,這里需要分別啟動(dòng)主從兩個(gè)容器

Master(主):

docker run -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Slave(從)

docker run -p 3340:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
Master對(duì)外映射的端口是3339,Slave對(duì)外映射的端口是3340。因?yàn)閐ocker容器是相互獨(dú)立的,每個(gè)容器有其獨(dú)立的ip,所以不同容器使用相同的端口并不會(huì)沖突。這里我們應(yīng)該盡量使用mysql默認(rèn)的3306端口,否則可能會(huì)出現(xiàn)無(wú)法通過(guò)ip連接docker容器內(nèi)mysql的問(wèn)題。
使用docker ps命令查看正在運(yùn)行的容器:

如何搭建基于Docker的MySQL主從復(fù)制

此時(shí)可以使用Navicat等工具測(cè)試連接mysql

如何搭建基于Docker的MySQL主從復(fù)制

配置Master(主)

通過(guò)docker exec -it 5ddad8c2f368 /bin/bash命令進(jìn)入到Master容器內(nèi)部,也可以通過(guò)docker exec -it mysql-master /bin/bash命令進(jìn)入。5ddad8c2f368是容器的id,而mysql-master是容器的名稱(chēng)。
cd /etc/mysql/mysql.conf.d切換到/etc/mysql/mysql.conf.d目錄下,然后vim mysqld.cnf對(duì)my.cnf進(jìn)行編輯。此時(shí)會(huì)報(bào)出bash: vim: command not found,需要我們?cè)赿ocker容器內(nèi)部自行安裝vim。使用apt-get install vim命令安裝vim
會(huì)出現(xiàn)如下問(wèn)題:

如何搭建基于Docker的MySQL主從復(fù)制

執(zhí)行apt-get update,然后再次執(zhí)行apt-get install vim即可成功安裝vim。然后我們就可以使用vim編輯my.cnf,在my.cnf中添加如下配置:

[mysqld]
## 同一局域網(wǎng)內(nèi)注意要唯一
server-id=100  
## 開(kāi)啟二進(jìn)制日志功能,可以隨便?。P(guān)鍵)
log-bin=mysql-bin

配置完成之后,需要重啟mysql服務(wù)使配置生效。使用service mysql restart完成重啟。重啟mysql服務(wù)時(shí)會(huì)使得docker容器停止,我們還需要docker start mysql-master啟動(dòng)容器。
下一步在Master數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)同步用戶(hù),授予用戶(hù) slave REPLICATION SLAVE權(quán)限和REPLICATION CLIENT權(quán)限,用于在主從庫(kù)之間同步數(shù)據(jù)。
首先連接mysql數(shù)據(jù)庫(kù)
root@5ddad8c2f368:/# mysql -uroot -p123456
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

授予復(fù)制賬號(hào)REPLICATION CLIENT權(quán)限,復(fù)制用戶(hù)可以使用SHOW MASTER STATUS, SHOW SLAVE STATUS和 SHOW BINARY LOGS來(lái)確定復(fù)制狀態(tài)。
授予復(fù)制賬號(hào)REPLICATION SLAVE權(quán)限,復(fù)制才能真正地工作。

如何搭建基于Docker的MySQL主從復(fù)制

配置Slave(從)

和配置Master(主)一樣,在Slave配置文件my.cnf中添加如下配置:

[mysqld]  
## 設(shè)置server_id,注意要唯一  server-id=101 
## 開(kāi)啟二進(jìn)制日志功能,以備Slave作為其它Slave的Master時(shí)使用  
log-bin=mysql-slave-bin 
## relay_log配置中繼日志  
relay_log=edu-mysql-relay-bin

配置完成后也需要重啟mysql服務(wù)和docker容器,操作和配置Master(主)一致。

relay log很多方面都跟binary log差不多。區(qū)別是:從云服務(wù)器I/O線程將主云服務(wù)器的二進(jìn)制日志讀取過(guò)來(lái)記錄到從云服務(wù)器本地文件,然后SQL線程會(huì)讀取relay-log日志的內(nèi)容并應(yīng)用到從云服務(wù)器,從而使從云服務(wù)器和主云服務(wù)器的數(shù)據(jù)保持一致。

如何搭建基于Docker的MySQL主從復(fù)制

鏈接Master(主)和Slave(從)

在Master進(jìn)入mysql,執(zhí)行show master status;
如何搭建基于Docker的MySQL主從復(fù)制

File和Position字段的值后面將會(huì)用到,在后面的操作完成之前,需要保證Master庫(kù)不能做任何操作,否則將會(huì)引起狀態(tài)變化,F(xiàn)ile和Position字段的值變化。
在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 = 617,
master_connect_retry = 30;

命令說(shuō)明:
master_host :Master的地址,指的是容器的獨(dú)立ip,可以通過(guò)docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱(chēng)|容器id查詢(xún)?nèi)萜鞯膇p

如何搭建基于Docker的MySQL主從復(fù)制

master_port:Master的端口號(hào),指的是容器的端口號(hào)
master_user:用于數(shù)據(jù)同步的用戶(hù)
master_password:用于同步的用戶(hù)的密碼
master_log_file:指定 Slave 從哪個(gè)日志文件開(kāi)始復(fù)制數(shù)據(jù),即上文中提到的 File 字段的值
master_log_pos:從哪個(gè) Position 開(kāi)始讀,即上文中提到的 Position 字段的值
master_connect_retry:如果連接失敗,重試的時(shí)間間隔,單位是秒,默認(rèn)是60秒
在Slave 中的mysql終端執(zhí)行show slave status \G;用于查看主從同步狀態(tài)。
如何搭建基于Docker的MySQL主從復(fù)制

正常情況下,SlaveIORunning 和 SlaveSQLRunning 都是No,因?yàn)槲覀冞€沒(méi)有開(kāi)啟主從復(fù)制過(guò)程。使用start slave開(kāi)啟主從復(fù)制過(guò)程,然后再次查詢(xún)主從同步狀態(tài)show slave status \G;。
如何搭建基于Docker的MySQL主從復(fù)制

SlaveIORunning 和 SlaveSQLRunning 都是Yes,說(shuō)明主從復(fù)制已經(jīng)開(kāi)啟。此時(shí)可以測(cè)試數(shù)據(jù)同步是否成功。
主從復(fù)制排錯(cuò):
如何搭建基于Docker的MySQL主從復(fù)制

使用start slave開(kāi)啟主從復(fù)制過(guò)程后,如果SlaveIORunning一直是Connecting,則說(shuō)明主從復(fù)制一直處于連接狀態(tài),這種情況一般是下面幾種原因造成的,我們可以根據(jù) Last_IO_Error提示予以排除。

  • 網(wǎng)絡(luò)不通
    檢查ip,端口
  • 密碼不對(duì)
    檢查是否創(chuàng)建用于同步的用戶(hù)和用戶(hù)密碼是否正確
  • pos不對(duì)
    檢查Master的 Position

測(cè)試主從復(fù)制

測(cè)試主從復(fù)制方式就十分多了,最簡(jiǎn)單的是在Master創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),然后檢查Slave是否存在此數(shù)據(jù)庫(kù)。
Master:
如何搭建基于Docker的MySQL主從復(fù)制

Slave:
如何搭建基于Docker的MySQL主從復(fù)制

完整的主備流程圖

最后讓我們來(lái)看一下,一個(gè) update 語(yǔ)句在節(jié)點(diǎn) A 執(zhí)行,然后同步到節(jié)點(diǎn) B的完整流程圖。
如何搭建基于Docker的MySQL主從復(fù)制

可以看到:主庫(kù)接收到客戶(hù)端的更新請(qǐng)求后,執(zhí)行內(nèi)部事務(wù)的更新邏輯,同時(shí)寫(xiě)入binlog。
備庫(kù)B跟主庫(kù)A之間維持了一個(gè)長(zhǎng)連接。主庫(kù)A內(nèi)部有一個(gè)線程,專(zhuān)門(mén)用于服務(wù)備庫(kù)B的這個(gè)長(zhǎng)連接。
一個(gè)事務(wù)日志同步的完整過(guò)程是這樣的:

  • 1、在備庫(kù)B上通過(guò)change master命令,設(shè)置主庫(kù)A的IP、端口、用戶(hù)名、密碼、以及要從哪個(gè)位置開(kāi)始請(qǐng)求binlog,這個(gè)位置包含文件名和日志偏移量。
  • 2、在備庫(kù)B上執(zhí)行start slave命令,這時(shí)侯備庫(kù)會(huì)啟動(dòng)兩個(gè)線程,io_thread 和 sql_thread。其中, io_thread負(fù)責(zé)與主庫(kù)建立連接。
  • 3、主庫(kù)A校驗(yàn)完用戶(hù)名、密碼后,開(kāi)始按照備庫(kù)B傳過(guò)來(lái)的位置,從本地讀取binlog,發(fā)給B。
  • 4、備庫(kù)B拿到binlog后,寫(xiě)到本地文件,稱(chēng)為中轉(zhuǎn)日志(relay log)。
  • 5、sql_thread讀取中轉(zhuǎn)日志,解析日志里的命令,并執(zhí)行。

對(duì)于以上關(guān)于如何搭建基于Docker的MySQL主從復(fù)制,大家是不是覺(jué)得非常有幫助。如果需要了解更多內(nèi)容,請(qǐng)繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會(huì)喜歡上這些內(nèi)容的。

分享名稱(chēng):如何搭建基于Docker的MySQL主從復(fù)制
URL地址:http://chinadenli.net/article42/joeiec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、小程序開(kāi)發(fā)、網(wǎng)站排名、響應(yīng)式網(wǎng)站、定制開(kāi)發(fā)、App開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
欧美成人精品一区二区久久| 九九热精品视频在线观看| 欧美日韩国产自拍亚洲| 日本加勒比在线播放一区| 日韩精品一区二区亚洲| 麻豆剧果冻传媒一二三区| 日本人妻丰满熟妇久久| 国产精品人妻熟女毛片av久| 欧美国产日韩在线综合| 高清免费在线不卡视频| 欧美av人人妻av人人爽蜜桃| 97人妻人人揉人人躁人人| 欧美日韩一区二区午夜| 国产成人精品视频一区二区三区| 免费在线成人午夜视频| 亚洲av专区在线观看| 欧美乱视频一区二区三区| 亚洲欧美日本成人在线| 日韩亚洲精品国产第二页| 日韩一级免费中文字幕视频| 伊人网免费在线观看高清版| 欧美日本亚欧在线观看| 国产欧美精品对白性色| 国产一级特黄在线观看| 老熟妇2久久国内精品| 亚洲天堂有码中文字幕视频| 男人和女人干逼的视频| 亚洲熟女熟妇乱色一区| 麻豆视传媒短视频在线看| 91插插插外国一区二区| 国产一区二区三区草莓av| 欧美人妻少妇精品久久性色| 中文字幕亚洲精品乱码加勒比 | 日韩欧美国产精品中文字幕| 最近的中文字幕一区二区| 国产精品久久熟女吞精| 欧美日韩国产黑人一区| av一区二区三区天堂| 国产成人精品国产成人亚洲| 久久精品国产熟女精品| 日韩中文字幕免费在线视频|