国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫(kù) > MySQL > 正文

運(yùn)用Amoeba實(shí)現(xiàn)MySQL主從復(fù)制和讀寫分離

2024-07-24 12:35:01
字體:
供稿:網(wǎng)友
  在實(shí)際生產(chǎn)環(huán)境中,如果對(duì)數(shù)據(jù)庫(kù)的讀和寫都在同一個(gè)數(shù)據(jù)庫(kù)服務(wù)器中操作,無論是在安全性、高可用性,還是高并發(fā)等各個(gè)方面都是完全不能滿足實(shí)際需求的,因此,一般來說都是通過主從復(fù)制(Master-Slave)的方式來同步數(shù)據(jù),再通過讀寫分離來提升數(shù)據(jù)庫(kù)的并發(fā)負(fù)載能力這樣的方案來進(jìn)行部署和實(shí)施。
 
  1、 MySQL主從復(fù)制原理
  MySQL的主從復(fù)制和MySQL的讀寫分離兩者有著緊密聯(lián)系,首先要部署主從復(fù)制,只有主從復(fù)制完成了,才能在此基礎(chǔ)上進(jìn)行數(shù)據(jù)的讀寫分離。
 
  (1) MySQL支持的復(fù)制類型
  1) 基于語句的復(fù)制。在主服務(wù)器上執(zhí)行的SQL語句,在從服務(wù)器上執(zhí)行同樣的語句。MySQL默認(rèn)采用基于語句的復(fù)制,效率比較高。
  2) 基于行的復(fù)制。把改變的內(nèi)容復(fù)制過去,而不是把命令在從服務(wù)器上執(zhí)行以便。
  3) 混合類型的復(fù)制。默認(rèn)采用基于語句的復(fù)制,一旦發(fā)現(xiàn)基于語句無法精確復(fù)制時(shí),就會(huì)采用基于行的復(fù)制。
  (2)  SQL slave thread(SQL從線程)處理該過程的最后一步。SQL線程從中繼日志讀取事件,并重放其中的事件而更新Slave的數(shù)據(jù),使其與Master中的數(shù)據(jù)一致。只要該線程與I/O線程保持一致,中繼日志通常會(huì)位于OS的緩存中,所以中繼日志的開銷很小。
  復(fù)制過程有一個(gè)很重要的限制,即復(fù)制在Slave上是串行化的,也就是說Master上的并行更新操作不能在Slave上并行操作。
  2、 MySQL讀寫分離的原理
  簡(jiǎn)單來說,讀寫分離就是只在主服務(wù)器上寫,只在從服務(wù)器上讀。基本原理是讓主數(shù)據(jù)庫(kù)處理事務(wù)性查詢,而從數(shù)據(jù)庫(kù)處理select查詢。數(shù)據(jù)庫(kù)復(fù)制被用來把事務(wù)性查詢導(dǎo)致的變更同步到群集中的從數(shù)據(jù)庫(kù)。
  基于中間代理層實(shí)現(xiàn):代理一般位于客戶端和服務(wù)器之間,代理服務(wù)器接到客戶端請(qǐng)求通過判斷后轉(zhuǎn)發(fā)到后端數(shù)據(jù)庫(kù),有兩個(gè)代表性程序。
  (1)MySQL-Proxy。MySQL-Proxy為MySQL開源項(xiàng)目,通過其自帶的lua腳本進(jìn)行SQL判斷,雖然是MySQL官方產(chǎn)品,但是MySQL官方并不建議將MySQL用到生產(chǎn)環(huán)境。
  (2)Amoeba。由陳思儒開發(fā),作者曾就職于阿里巴巴。該程序由Java語言進(jìn)行開發(fā),阿里巴巴將其用于生產(chǎn)環(huán)境。它不支持事務(wù)和存儲(chǔ)過程。
  -經(jīng)過上述簡(jiǎn)單的比較,通過程序代碼實(shí)現(xiàn)MySQL讀寫分離自然是一個(gè)不錯(cuò)的選擇,但是并不是所有的應(yīng)用都適合在程序代碼中實(shí)現(xiàn)讀寫分離,像一些大型復(fù)雜的Java應(yīng)用,如果在程序代碼中實(shí)現(xiàn)讀寫分離對(duì)代碼改動(dòng)就較大。所以,像這種應(yīng)用一般會(huì)考慮使用代理層來實(shí)現(xiàn)。

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 工布江达县| 突泉县| 井研县| 碌曲县| 朔州市| 沈丘县| 洛扎县| 桂平市| 屯昌县| 深圳市| 噶尔县| 博湖县| 汉阴县| 乌恰县| 丹东市| 昆明市| 常德市| 行唐县| 宝兴县| 宁武县| 巴林右旗| 肇东市| 循化| 兰坪| 清苑县| 洪雅县| 靖边县| 土默特左旗| 鄂尔多斯市| 禹城市| 郸城县| 巴彦县| 固安县| 江城| 阳山县| 镇宁| 扶沟县| 龙川县| 玛多县| 将乐县| 象山县|