MySQL主從複製

2022-08-04 17:45:20 字數 2012 閱讀 3156

引用:1、

2、3、

mysql主從複製是mysql「水平擴充套件」架構的一種,主從複製可以使資料從乙個資料庫伺服器複製到多個其他伺服器上,多個資料備份可實現高可用、高擴充套件、容災恢復等,通過讀寫分離還能提高資料庫的負載效能。

在一主多從的資料庫體系中,多個從伺服器採用非同步的方式更新主資料庫的變化,業務伺服器在執行或者相關修改資料庫的操作是在主伺服器上進行的,操作則是在各從伺服器上進行。

從上圖,我們可以知道,mysql複製主要有三個步驟:

在主庫上把資料更改記錄到二級制日誌(binary log)中(二進位制日誌事件)。

從庫將主庫上的日誌複製到自己的中繼日誌(relay log)中。

從庫讀取中繼日誌中的事件,將其重放到從庫資料之上。

細說:

第一步是在主庫上記錄二進位制日誌。在每次mysql準備提交事務完成資料更新前,主庫將資料更新的事件記錄到二進位制日誌中。mysql會按事務提交的順序而非每條語句的執行順序來記錄二進位制日誌。在記錄二進位制日誌後,主庫會告訴儲存引擎可以提交事務了。

第二步,從庫會啟動乙個工作執行緒,稱為i/o執行緒,i/o執行緒跟主庫建立乙個普通的客戶端連線,然後在主庫上啟動乙個特殊的二進位制轉儲(binlog

dump)執行緒,這個二進位制轉儲執行緒會讀取主庫上二進位制日誌中的事件。它不會對事件進行輪詢。如果該執行緒追趕上主庫,它將進入休眠狀態,直到主庫傳送訊號量通知其有新的事件產生時才會被喚醒,從庫i/o執行緒會將接收到的事件記錄到中繼日誌中。

第三步,從庫sql執行緒執行最後一步,該執行緒從中繼日誌中讀取事件並在從庫執行,從而實現從庫資料的更新。當sql執行緒追趕上i/o執行緒時,中繼日誌通常已經全部在系統快取中,所以中繼日誌的開銷很低。sql執行緒執行的事件也可以通過配置選項來決定是否寫入其自己的二進位制日誌中。

這種架構實現了獲取事件和重放事件的解耦,但是也限制了整個複製過程只能序列化執行,因為只有乙個sql執行緒來重放中繼日誌中的事件。

總而言之

mysql複製功能可以實現mysql的「水平擴充套件」。

所謂複製簡單來說 就是讓一台伺服器的資料變更同步到其他伺服器。

現有mysql主從複製方式都是通過在主庫上記錄binlog,在從庫上重放的方式來實現的。

主從間資料同步可以有助於mysql的高可用、災後資料恢復、資料倉儲等工作。

非同步複製的方式,會導致在某個時間點上產生主從資料不一致性。(從庫缺失資料)

資料分布:異地資料儲存。

負載均衡:讀寫分離,多台從庫之間可以通過硬編碼或使用dns輪詢(將乙個機器名指向多個ip位址)再或者linux虛擬伺服器(linux virtual server , lvs)實現負載均衡。

備份: 資料備份。

高可用性和故障切換:避免單點故障,故障切換。

mysql公升級測試:這種做法比較普遍,使用乙個更高版本的mysql作為備庫,保證公升級全部例項前,查詢能夠在備庫按照預期執行。

1、基於sql語句的複製

主伺服器會把影響資料變更的sql語句寫入到日誌中,然後從伺服器會執行該日誌。

:簡單、方便審計、日誌檔案更小(更新好幾兆資料的語句在二進位制日誌裡可能只佔幾十個位元組)

2、基於行的複製

將實際增刪改資料記錄在二進位制日誌中。

:可以正確地複製每一行

:日誌會很大(變更的每一行資料都會被記錄到二進位制日誌)

3、混合型複製

預設情況下使用的是基於語句的複製方式,但如果發現語句無法被正確地複製,就切換到基於行的複製模式。

mysql主從複製

罪過啊,博主最近好久沒有更新部落格了,轉有道雲筆記了,筆記裡還有些乾貨,最近慢慢分享出來吧。博主最近發現有好多想學,但是發現精力有限啊,博主本來是搞個開發的,但是偏偏想把運維,dba的技術全都學了 mysql集群,nginx等等等 但是發現精力有限,所以簡單了解一下,mysql的主從複製,後面還有m...

MySQL 主從複製

1.概念 將主伺服器的資料複製到另外一台或多台伺服器的過程。也即將主資料庫的ddl和dml操作通過二進位制日誌傳到復 務器上,然後在從伺服器上對這些日誌進行重新執行,從而 保持資料同步。2.作用 降低主伺服器的訪問壓力 避免主伺服器因故障導致資料丟失。3.操作步驟 1 主伺服器將資料的改變記錄到二進...

MySQL 主從複製

資料分布。負載均衡 備份高可用性和故障切換 mysql公升級測試 mysql實現複製可以看做是三個步驟 在主庫上把資料更改記錄到二進位制日誌 binary log 中 這些記錄被稱為二進位制日誌事件 在每次準備提交事務完成資料更新前,主庫將資料更新的事件記錄到二進位制日誌中,在記錄二進位制日誌後,主...