本篇內(nèi)容主要講解“MySQL組復(fù)制的要求和限制”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“MySQL組復(fù)制的要求和限制”吧!
成都創(chuàng)新互聯(lián)公司的客戶來自各行各業(yè),為了共同目標(biāo),我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計、成都網(wǎng)站制作、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。
組復(fù)制的要求:
1).InnoDB存儲引擎:數(shù)據(jù)必須存儲在事務(wù)型的InnoDB存儲引擎中。事務(wù)以樂觀形式執(zhí)行,然后在提交前會檢測沖突問題。如果有沖突,為了維護組中一致性,有些事務(wù)必須回滾。這意味著需要事務(wù)型的存儲引擎。此外,InnoDB 存儲引擎提供了一些額外的功能,它們結(jié)合組復(fù)制時能更好地管理和處理沖突。
2).Primary Keys:每張需要被組復(fù)制的表都必須顯式定義一個主鍵。主鍵在判斷事務(wù)是否沖突扮演極其重要的角色:通過主鍵來準(zhǔn)確識別每個事務(wù)中修改了表中的哪些行。(實際上是將主機hash成寫集,然后由certifier來并發(fā)事務(wù)之間的檢測沖突性)
3).使用IPv4 地址:MySQL組復(fù)制使用的組通信引擎組件只支持 IPv4。因此,必須使用IPv4的網(wǎng)絡(luò)。
4).良好的網(wǎng)絡(luò)性能:組復(fù)制設(shè)計的初衷是部署在集群環(huán)境中,集群中的節(jié)點相互之間都非常近,因此除了網(wǎng)絡(luò)延遲,網(wǎng)絡(luò)帶寬也會影響組復(fù)制。
組復(fù)制的限制:
1).Replication Event Checksums:由于對復(fù)制事件校驗的設(shè)計缺陷,目前組復(fù)制不能使用它們。因此,需要設(shè)置--binlog-checksum=NONE。
2).Gap Locks:在驗證階段中(certification process),不會考慮 Gap Locks,因此在 InnoDB 的外部無法獲取任何關(guān)于Gap 鎖的信息。
注意:除非你的應(yīng)用程序或業(yè)務(wù)需求依賴于REPEATABLE READ(MySQL默認(rèn)該隔離級別),否則建議在組復(fù)制中使用READ COMMITTED隔離級別。在READ COMMITTED隔離級別中,InnoDB基本上不會使用Gap Locks,這將使得InnoDB自帶的沖突探測能和組復(fù)制的沖突探測相互對齊從而保持一致。
3).Table Locks and Named Locks:驗證階段(certification process)中不考慮表鎖和命名鎖(見get_lock())。
4).不支持 SERIALIZABLE 隔離級別:在多主模型下,默認(rèn)不支持該隔離級別。如果在多主模型下設(shè)置了該隔離級別,將拒絕提交事務(wù)。
5).不支持并發(fā)的 DDL 和 DML 操作:不支持在多主模型下不同節(jié)點上同時執(zhí)行DDL和DML修改同一對象。在某節(jié)點上對某對象執(zhí)行DDL語句時,如果在其他節(jié)點同時執(zhí)行DML修改該對象,將有一定風(fēng)險探測到?jīng)_突。(譯注:是 DDL+DML 的并發(fā),DDL+DDL 的并發(fā)也不允許。這是因為MySQL中沒有DDL事務(wù),不能保證DDL的原子性,當(dāng)DDL和DML同時操作某一個對象,可能DDL修改后,DML將因為對象結(jié)構(gòu)的改變而無法執(zhí)行,繼而回滾)
6).不支持級聯(lián)的外鍵約束:多主模型的組(所有節(jié)點都配置了group_replication_single_primary_mode=OFF)不支持多級外鍵依賴,特別是表上定義了級聯(lián)的外鍵約束(CASCADING foreign key constraints)。這是因為多主模型下執(zhí)行外鍵約束的級聯(lián)操作可能會出現(xiàn)未檢測到的沖突,從而導(dǎo)致組內(nèi)成員間數(shù)據(jù)不一致。因此,我們推薦在使用多主模型時,在每個節(jié)點上都設(shè)置group_replication_enforce_update_everywhere_checks=ON以避免出現(xiàn)未檢測到的沖突。在單主模型下沒有這種問題,因為沒有并發(fā)寫操作,從而不可能會出現(xiàn)未被探測到的沖突。
7).大事務(wù)可能會錯誤:如果一個事務(wù)非常大,導(dǎo)致GTID的內(nèi)容非常多,以至于無法在 5 秒內(nèi)通過網(wǎng)絡(luò)傳輸完成,這時組成員間的通信將失敗。要避免該問題,可以盡可能地限制事務(wù)的大小。例如,將LOAD DATA INFILE的文件切割為多個小塊。
8).多主模型可能出現(xiàn)死鎖:在多主模型下,SELECT ... FOR UPDATE語句可能會導(dǎo)致死鎖。這是因為組內(nèi)成員之間不會共享鎖資源(譯注:share nothing),因此這樣的語句可能達不到預(yù)期的結(jié)果。
到此,相信大家對“MySQL組復(fù)制的要求和限制”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章標(biāo)題:MySQL組復(fù)制的要求和限制
文章路徑:http://jinyejixie.com/article20/ggedjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站維護、定制網(wǎng)站、響應(yīng)式網(wǎng)站、虛擬主機、網(wǎng)站導(dǎo)航
聲明:本網(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)