我在解決方案團隊工作多年,發(fā)現(xiàn)數(shù)據(jù)庫復制總是被誤解,甚至有些人根本完全不理解,所以本文將來回顧一下MySQL環(huán)境中的復制概念,并且澄清一些大家對于復制的誤解。
創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、金口河網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、成都做商城網(wǎng)站、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為金口河等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。什么是復制?
復制:保證信息被復制并有目的地填充到另一個環(huán)境中,而不是僅存儲在一個位置(基于源環(huán)境的事務(wù))。如果更白話一點來說就是在您的基礎(chǔ)架構(gòu)上使用輔助服務(wù)器來讀取或使用其他管理解決方案。
下圖展示了MySQL復制環(huán)境的示例。
如果我們把范圍縮小到MySQL中,那么在復制時我們有幾種選擇呢?
標準異步復制
異步復制意味著事務(wù)完全在本地環(huán)境中完成,并且不受復制從屬本身的影響。完成更改后,主服務(wù)器將使用數(shù)據(jù)修改或?qū)嶋H語句(基于行的復制或基于語句的復制之間的差異會在之后講)填充二進制日志。此轉(zhuǎn)儲線程讀取二進制日志并將其發(fā)送到從IO線程。從站使用其IO線程將其置于自己的預處理隊列(稱為中繼日志)中。從站使用SQL線程執(zhí)行從站數(shù)據(jù)庫上的每個更改。
半同步復制
半同步復制意味著從設(shè)備和主設(shè)備相互通信以保證事務(wù)的正確傳輸。主設(shè)備僅填充binlog并繼續(xù)其會話,其中一個從設(shè)備確認事務(wù)已正確放置在從設(shè)備的中繼日志中。
半同步復制可確保正確復制事務(wù),但不保證實際發(fā)生從設(shè)備上的提交。
需要注意的是,半同步復制可確保主服務(wù)器等待繼續(xù)處理特定會話中的事務(wù),直到至少有一個從服務(wù)器確認接收到事務(wù)(或達到超時)。這與異步復制不同,因為半同步允許額外的數(shù)據(jù)完整性。
請記住,半同步復制會影響性能,因為它需要等待來自從站的實際ACK的往返。
組復制
這是MySQL Community Edition 5.7中引入的新概念,并且在MySQL 5.7.17中進行了GA。這是一個用于虛擬同步復制的新插件。
每當在節(jié)點上執(zhí)行事務(wù)時,插件都會嘗試與其他節(jié)點達成共識,然后再將其返回給客戶端。 雖然與標準MySQL復制相比,該解決方案是完全不同的概念,但它基于使用binlog生成和處理日志事件。
以下是組復制的示例體系結(jié)構(gòu)。
如果對Group Replication感興趣,請參考以下文章:
http://mysqlhighavailability.com/mysql-group-replication-its-in-5-7-17-ga/
http://mysqlhighavailability.com/performance-evaluation-mysql-5-7-group-replication/
Percona XtraDB Cluster/ Galera Cluster
另一種允許將信息復制到其他節(jié)點的解決方案是Percona XtraDB Cluster。此解決方案側(cè)重于提供一致性,使用認證過程來保證事務(wù)避免沖突并正確執(zhí)行。在這種情況下,我們討論的是集群解決方案,每個環(huán)境都受相同數(shù)據(jù)的約束,并且節(jié)點之間存在通信以保證一致性。
Percona XtraDB Cluster有多個組件:
Percona Server for MySQL
Percona XtraBackup用于執(zhí)行正在運行的集群的快照(正在恢復或添加節(jié)點)。
wsrep patches/Galera Library
該解決方案幾乎是同步的,可與組復制相媲美。但是,它還具有使用多主復制的功能。像Percona XtraDB Cluster這樣的解決方案是提高數(shù)據(jù)庫基礎(chǔ)架構(gòu)可用性的一個組件。
基于行的復制與基于語句的復制
使用基于語句的復制,SQL查詢本身將寫入二進制日志。例如,從站執(zhí)行完全相同的INSERT / UPDATE / DELETE語句。
該方法有很多優(yōu)缺點:
由于實際語句記錄在二進制日志中,因此審核數(shù)據(jù)庫要容易得多
通過線路傳輸?shù)臄?shù)據(jù)更少
非確定性查詢可能會在從屬環(huán)境中造成實際破壞
某些查詢存在性能劣勢,例如基于SELECT的INSERT
由于SQL優(yōu)化和執(zhí)行,基于語句的復制速度較慢
基于行的復制是自MySQL 5.7.7以來的默認選擇,具有許多優(yōu)點。行更改記錄在二進制日志中,并且不需要上下文信息,消除了非確定性查詢的影響。
其它優(yōu)點包括:
包含少量行更改的高并發(fā)查詢的性能改進
顯著的數(shù)據(jù)一致性改進
其缺點包括:
如果有修改大量行的查詢,那么網(wǎng)絡(luò)流量可能會大得多
審核數(shù)據(jù)庫的更改更加困難
在某些情況下,基于行的復制可能比基于語句的復制慢
關(guān)于復制的誤解
復制是集群
標準異步復制不是同步集群。請記住,標準和半同步復制不保證環(huán)境服務(wù)于同一數(shù)據(jù)集。使用Percona XtraDB Cluster時,每個服務(wù)器實際上需要分別處理每個更改。如果不是,則從群集中刪除受影響的節(jié)點。異步復制不具有此故障安全性,在不一致的情況下,仍然可以接受讀操作。
從理論上講,環(huán)境應(yīng)具有可比性。但是,有許多參數(shù)會影響數(shù)據(jù)傳輸?shù)男屎鸵恢滦?。只要使用異步復制,就無法保證事務(wù)正確發(fā)生。使用者可以通過增強配置的持久性來避免這種情況,但這會帶來性能損失。
使用pt - table - checksum工具驗證主服務(wù)器和從服務(wù)器的一致性 。
有復制就不需要備份了
沒錯,復制是一個很好的解決方案,可以獲得數(shù)據(jù)集的可訪問副本(例如報告問題,讀取查詢,生成備份)。但其并不能替代備份解決方案。通過異地備份,可以在發(fā)生重大災(zāi)難、用戶錯誤或其他原因時可以重建環(huán)境。有些人使用 delayed slaves ,但它也不能取代適當?shù)臑?zāi)難恢復程序。
有復制,所以環(huán)境將負載平衡事務(wù)
雖然通過使用相同數(shù)據(jù)集運行輔助實例可能會提高環(huán)境的可用性,但仍可能需要將讀取查詢指向從屬服務(wù)器,而將寫查詢指向主服務(wù)器。你可以使用代理工具或在自己的應(yīng)用程序中定義此功能。
復制會顯著減慢速度
復制對主服務(wù)器的性能影響很小。 Peter Zaitsev在一篇文章中曾討論過從服務(wù)器對主服務(wù)器的潛在影響。請記住,寫入二進制日志可能會影響性能,尤其是當您有許多小事務(wù),然后被多個從服務(wù)器轉(zhuǎn)儲和接收時。
當然,除此之外還有許多其他參數(shù)都可能會影響實際主從設(shè)置的性能。
網(wǎng)站標題:關(guān)于不同的MySQL復制解決方案概述-創(chuàng)新互聯(lián)
文章URL:http://aaarwkj.com/article24/ccdjje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站策劃、關(guān)鍵詞優(yōu)化、用戶體驗、面包屑導航、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容