MySQL InnoDB ReplicaSet(副本集)簡(jiǎn)單介紹
01 InnoDB ReplicaSet(副本集)介紹
在MySQL8.0引入了InnoDB ReplicaSet,它提供了我們熟悉的復(fù)制特性,如果有mongodb副本集的概念,理解InnoDB ReplicaSet會(huì)比較容易。
InnoDB ReplicaSet使用了下面的技術(shù):
1、MySQL Shell,一個(gè)功能更強(qiáng)大的客戶(hù)端
2、MySQL Router,一個(gè)輕量級(jí)別的中間件,可以類(lèi)比MongoDB中的mongos的角色;
3、MySQL Server,也就是MySQL服務(wù)
InnoDB ReplicaSet,下面簡(jiǎn)稱(chēng) innodb副本集。它采用了MySQL的復(fù)制技術(shù),副本集中擁有一個(gè)primary節(jié)點(diǎn),一個(gè)或者多個(gè)secondary節(jié)點(diǎn),它不像innodb cluster(innodb cluster是另外一種MySQL高可用方案)一樣提供故障自愈和多主模式,但是提供手工的方法添加、移除和配置相關(guān)節(jié)點(diǎn)。
我們通常使用MySQL Shell中的AdminApi來(lái)管理innodb副本集,adminapi有js和python兩種版本,我們可以很方便的去編寫(xiě)腳本來(lái)自動(dòng)部署MySQL,AdminAPI為MySQL實(shí)例集提供了一個(gè)有效的現(xiàn)代接口,使您能夠從一個(gè)中心工具提供、管理和監(jiān)視部署。
innodb副本集支持MySQL Clone組件,我們可以利用克隆插件很方便的搭建起來(lái)一個(gè)副本集。
InnoDB ReplicaSet與MySQL Router緊密集成,可以使用AdminAPI與它們一起工作。MySQL Router可以基于InnoDB ReplicaSet自動(dòng)配置自己,這個(gè)過(guò)程稱(chēng)為bootstrapping,這樣就不需要手動(dòng)配置路由。
02 InnoDB ReplicaSet的限制
上面介紹了innodb 副本集的一些基本知識(shí)和概念,這里我們有必要說(shuō)一下它的局限性,innodb副本集的局限性,主要是對(duì)比innodb cluster來(lái)體現(xiàn)出來(lái)的,下面我們羅列一下:
1、沒(méi)有故障自動(dòng)切換功能。在主庫(kù)不可用的情況下,需要使用AdminApi手動(dòng)觸發(fā)故障轉(zhuǎn)移;
2、無(wú)法防止由于意外或者不可用而導(dǎo)致的數(shù)據(jù)丟失,發(fā)生故障時(shí)候沒(méi)有應(yīng)用的事務(wù)可能有丟失現(xiàn)象;
3、無(wú)法防止意外退出之后的數(shù)據(jù)不一致現(xiàn)象;在主節(jié)點(diǎn)因?yàn)榫W(wǎng)絡(luò)問(wèn)題而短暫失聯(lián)時(shí)候,如果某個(gè)從節(jié)點(diǎn)提升為主節(jié)點(diǎn),則可能發(fā)生腦裂現(xiàn)象;
4、innodb 副本集不支持多主模式,經(jīng)典的多主寫(xiě)入復(fù)制方案無(wú)法保證數(shù)據(jù)一致性;
5、innodb副本集基于異步復(fù)制,不能像MGR那樣進(jìn)行流控,因此讀的擴(kuò)展性會(huì)一定程度上受限;
6、所有secondary都要從primary復(fù)制,因此可能會(huì)對(duì)源實(shí)例產(chǎn)生一定的影響
從上面的描述中不難看出,innodb副本集跟MongoDB的副本集還有很大的差距,但是我們依然有研究的必要,因?yàn)樗荕ySQL官方在高可用之路上邁出的重要一步,后續(xù)隨著版本的迭代,我相信這些問(wèn)題會(huì)得到關(guān)注和解決,有更好的方案進(jìn)一步滿(mǎn)足用戶(hù)的要求。
03 部署前須知
innodb副本集的運(yùn)行環(huán)境有一定的要求,如下:
1、僅支持MySQL8.0及以上版本;
2、僅支持GTID的復(fù)制方法
3、僅支持row格式的binlog,不支持statement格式的binlog
4、不支持復(fù)制過(guò)濾器
5、不允許建立額外的復(fù)制通道
6、副本集primary節(jié)點(diǎn)只有一個(gè),secondary節(jié)點(diǎn)可以有多個(gè),MySQL Router會(huì)對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行監(jiān)控
7、副本集必須完全由MySQL Shell管理,不支持在MySQL Shell之外對(duì)實(shí)例進(jìn)行配置和更改
下一篇文章我將會(huì)從最基本的安裝過(guò)程說(shuō)起,詳細(xì)描述MySQL Shell、MySQL Router的安裝以及innodb 副本集的搭建過(guò)程。
以上就是MySQL InnoDB ReplicaSet(副本集)簡(jiǎn)單介紹的詳細(xì)內(nèi)容,更多關(guān)于MySQL InnoDB ReplicaSet(副本集)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mysql創(chuàng)建的外鍵無(wú)法保存的原因以及處理辦法
這篇文章主要介紹了mysql創(chuàng)建的外鍵無(wú)法保存的原因以及處理辦法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09MySQL多表關(guān)聯(lián)查詢(xún)相關(guān)練習(xí)題
這篇文章主要給大家介紹了關(guān)于MySQL多表關(guān)聯(lián)查詢(xún)的相關(guān)資料,在MySQL中JOIN語(yǔ)句是實(shí)現(xiàn)多表關(guān)聯(lián)查詢(xún)的關(guān)鍵,它可以將多個(gè)表格中符合條件的數(shù)據(jù)連接在一起,從而提供一個(gè)完整的查詢(xún)結(jié)果,需要的朋友可以參考下2023-10-10Mysql 數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)
Mysql數(shù)據(jù)庫(kù)訪問(wèn)類(lèi) 實(shí)現(xiàn)代碼,對(duì)于想學(xué)習(xí)mysql操作類(lèi)的朋友值得一看2009-02-02linux下安裝mysql數(shù)據(jù)庫(kù)5.6源碼安裝,修改登錄用戶(hù)密碼
這篇文章主要介紹了linux下安裝mysql5.6版本并修改登錄用戶(hù)密碼的方法。2017-11-11詳解Mysql如何實(shí)現(xiàn)數(shù)據(jù)同步到Elasticsearch
要通過(guò)Elasticsearch實(shí)現(xiàn)數(shù)據(jù)檢索,首先要將Mysql中的數(shù)據(jù)導(dǎo)入Elasticsearch,并實(shí)現(xiàn)數(shù)據(jù)源與Elasticsearch數(shù)據(jù)同步,這里使用的數(shù)據(jù)源是Mysql數(shù)據(jù)庫(kù)。目前Mysql與Elasticsearch常用的同步機(jī)制大多是基于插件實(shí)現(xiàn)的,希望這篇文章能對(duì)大家有所幫助2021-11-11