您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何理解MySQL Replication線程,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Replication 線程
Mysql 的Replication 是一個異步的復制過程,從一個Mysql instace(我們稱之為Master)復制到另一個Mysql instance(我們稱之Slave)。在Master 與Slave 之間的實現整個復制過程主要由三個線程來完成,其中兩個線程(Sql 線程和IO 線程)在Slave 端,另外一個線程(IO 線程)在Master 端。
要實現MySQL 的Replication ,首先必須打開Master 端的Binary Log(mysqlbin.xxxxxx)功能,否則無法實現。因為整個復制過程實際上就是Slave 從Master 端獲取該日志然后再在自己身上完全順序的執行日志中所記錄的各種操作
MySQL 復制的基本過程如下:
1. Slave 上面的IO 線程連接上Master,并請求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內容;
2. Master 接收到來自Slave 的IO 線程的請求后,通過負責復制的IO 線程根據請求信息讀取指定日志指定位置之后的日志信息,返回給Slave 端的IO 線程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息在Master 端的Binary Log文件的名稱以及在Binary Log 中的位置;
3. Slave 的IO 線程接收到信息后,將接收到的日志內容依次寫入到Slave 端的Relay Log 文件(mysql-relay-bin.xxxxxx)的最末端,并將讀取到的Master 端的binlog的文件名和位置記錄到master-info 文件中,以便在下一次讀取的時候能夠清楚的高速Master“我需要從某個bin-log 的哪個位置開始往后的日志內容,請發給我”
4. Slave 的SQL 線程檢測到Relay Log 中新增加了內容后,會馬上解析該Log 文件中的內容成為在Master 端真實執行時候的那些可執行的Query 語句,并在自身執行這些Query。這樣,實際上就是在Master 端和Slave 端執行了同樣的Query,所以兩端的數據是完全一樣的。
復制實現級別
Row Level
Statement Level
1.常規復制架構(Master - Slaves)
www.2cto.com
2.Dual Master 復制架構(Master - Master)
可能有些讀者朋友會有一個擔心,這樣搭建復制環境之后,難道不會造成兩臺MySQL 之間的循環復制么?實際上MySQL 自己早就想到了這一點,所以在MySQL 的Binary Log 中記錄了當前MySQL 的server-id,而且這個參數也是我們搭建MySQL Replication 的時候必須明確指定,而且Master 和Slave 的server-id 參數值比需要不一致才能使MySQLReplication 搭建成功。一旦有了server-id 的值之后,MySQL 就很容易判斷某個變更是從哪一個MySQL Server 最初產生的,所以就很容易避免出現循環復制的情況。而且,如果我們不打開記錄Slave 的Binary Log 的選項(--log-slave-update)的時候,MySQL 根本就不會記錄復制過程中的變更到Binary Log 中,就更不用擔心可能會出現循環復制的情形了。
3.級聯復制架構(Master - Slaves - Slaves ...)
4.Dual Master 與級聯復制結合架構(Master - Master - Slaves)
MySQL Replication 環境的搭建實現比較簡單,總的來說其實就是四步,
第一步是做好Master 端的準備工作。
1.MySQL 記錄Binary Log 的選項打開;
2.GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.2';
第二步是取得Master 端數據的“快照”備份。
測試dump example 下的group_message 表:
dump --master-data -usky -p example group_message > group_message.sql
www.2cto.com
第三步則是在Slave 端恢復Master 的備份“快照”。
第四步就是在Slave 端設置Master 相關配置,然后啟動復制
CHANGE MASTER TO 命令總共需要設置5 項內容,分別為:
MASTER_HOST:Master 的主機名(或者IP 地址);
MASTER_USER:Slave 連接Master 的用戶名,實際上就是之前所創建的repl 用戶;
MASTER_PASSWORD:Slave 連接Master 的用戶的密碼;
MASTER_LOG_FILE:開始復制的日志文件名稱;
MASTER_LOG_POS:開始復制的日志文件的位置,也就是在之前介紹備份集過程中一致提到的Log Position。
關于如何理解MySQL Replication線程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。