MySQL傳統的同步複製的概念和要點

來源:互聯網
上載者:User

標籤:

Mysql Classic Replication

一、傳統複製的組成:

1、master server:

使用者寫資料。

產生binlog。

2、slave server:

接收master傳來的binlog。

應用這些binlog從而達到重現master的使用者操作。

 

二、傳統複製的原理:

1、master跟新的資料,要寫binlog。

2、slave在master註冊一個i/o_thread進程,來捕獲binlog日誌的變更。

3、i/o_thread截取日誌變更之後寫入到本地的relay log裡。

4、然後通過sql_thread到relay log 裡進行解析執行到slave端。

5、在解析的過程中會判斷是否存在主鍵,如果沒有,在查看是否有二級索引,如果沒有,就直接全表掃描。

 

 

三、binlog的主要作用:

1、記錄master變更的記錄檔。

2、記錄的格式分為statement(SBR)、ROW(RBR)、MIXED格式。

3、Event是binlog的最小單位。

4、transaction是由多event組成。

5、binlog由兩種檔案組成:一種是binary log file;另一種是binary log index

 

 

四、binlog的三種日誌格式:

1、STATEMENT:記錄的是邏輯操作,即使用者執行過的sql。

2、ROW:記錄的是物理操作,即使用者實際修改的資料。

3、MIXED:預設使用statement記錄,當遇見不確定的資料時,自動幻化為ROW格式。

注意:

所有的DCL和DDL都是用statement格式記錄。

statement是一個sql對應一個event。

row是一個sql對應多個event。

 

 

五、statement和row格式的優缺點:

(一)、statement格式:

優點:

1、binlog檔案較小。

2、包含所有使用者執行的原始sql,方便統計和審計。

3、可以認為聽過binlog資料還原某些操作。

4、主從的binlog 版本協議相容性較好。

 

缺點:

1、存在安全隱患,可能導致主從不一致。(非常嚴重了,一般不適用生產環境)

2、對一些特殊函數賦值不準確或者不能複製。

例如:

LOAD_FILE()

UUID()

USER()

FOUND_ROWS()SYSDATA()

 

 

(二)、row格式:

優點:

1、相比statement更加安全的複製格式。(選row模式的更大原因)

2、在某些情況下複製速度更快。(複雜sql,表有主鍵)

3、產生比statement更少的鎖。

4、所有特殊函數都能複製。

 

缺點:

1、binlog檔案較大。在MySQL-5.6新特性參數binlog_row_image解決此問題。

2、單sql全表更新會產生大量binlog。

3、無法從binlog看見使用者執行的sql。MySQL-5.6新特性參數binlog_rows_query_log_event解決此問題。

4、由於binlog太大,容易造成主從複製端的延遲。

 

 

六、搭建傳統方式必要的參數:(一個是資料file,一個是位置pos)

(一)、master端:

1、擷取master當前的資料快照,並擷取當前的binlog號和pos號。

2、資料快照可以通過mysqldump或者Xtrabackup擷取。

3、也可以停機考配資料檔案。(此功能在5.6已經不能使用)

 

(二)、slave端:

1、通過擷取資料快照搭建一個mysql伺服器。

2、然後通過快照的master的binlog檔案和pos來開啟複製。

 

 

七、傳統複製日誌補齊的方式:

問題:(一主兩從結構)

當master1掛掉了,需要slave1專程master,但是發現slave1的binlog記錄已經到了100,而slave2記錄的binlog只到90,基於傳統日誌怎麼樣進行補齊?

 

解決方案:

1、如果沒有用到mha,就會選擇slave1作為主庫。

2、並在slave1上做show master status得到master的log便宜量。

3、然後在slave2上執行change語句。掛在到slave1上。

 

注意:

1、按照傳統的方式很容易出現資料不一致,因為slave2上的90~100之間的資料已經不能同步到slave2上了。

2、這個時候可以利用mha來補救之間的資料。

3、但是在GTID出現之後,MHA已經沒有價值了,因為GTID會在master_auto_postion=1;然後自己去匹配GTID的斷點,進行資料的不救。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MySQL傳統的同步複製的概念和要點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.