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

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

如何使用"MySQL-Proxy"實(shí)現(xiàn)讀寫分離

2024-07-24 12:40:39
字體:
供稿:網(wǎng)友
MySQL-Proxy處在MySQL數(shù)據(jù)庫客戶和服務(wù)端之間的程序,它支持嵌入性腳本語言Lua。這個(gè)代理可以用來分析、監(jiān)控和變換(transform)通信數(shù)據(jù),它支持非常廣泛的使用場(chǎng)景: ·負(fù)載平衡和故障轉(zhuǎn)移處理   ·查詢分析和日志   ·SQL宏(SQL macros)   ·查詢重寫(query rewriting)   ·執(zhí)行shell命令   MySQL Proxy最強(qiáng)大的一項(xiàng)功能是實(shí)現(xiàn)“讀寫分離(Read/Write Splitting)”。基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性查詢,而從數(shù)據(jù)庫處理SELECT查詢。數(shù)據(jù)庫復(fù)制被用來把事務(wù)性查詢導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫。   如何使用"MySQL-Proxy"實(shí)現(xiàn)讀寫分離   Jan Kneschke在《MySQL Proxy learns R/W Splitting》中詳細(xì)的介紹了這種技巧以及連接池問題:   為了實(shí)現(xiàn)讀寫分離我們需要連接池。我們僅在已打開了到一個(gè)后端的一條經(jīng)過認(rèn)證的連接的情況下,才切換到該后端。MySQL協(xié)議首先進(jìn)行握手。當(dāng)進(jìn)入到查詢/返回結(jié)果的階段再認(rèn)證新連接就太晚了。我們必須保證擁有足夠的打開的連接才能保持運(yùn)作正常。   實(shí)現(xiàn)讀寫分離的LUA腳本:   -- 讀寫分離       以下為引用的內(nèi)容:  --  -- 發(fā)送所有的非事務(wù)性Select到一個(gè)從數(shù)據(jù)庫  if is_in_transaction == 0 and    packet:byte() == proxy.COM_QUERY and    packet:sub(2, 7) == "SELECT" then   local max_conns = -1   local max_conns_ndx = 0   for i = 1, #proxy.servers do    local s = proxy.servers[i]    -- 需要選擇一個(gè)擁有空閑連接的從數(shù)據(jù)庫    if s.type == proxy.BACKEND_TYPE_RO and      s.idling_connections > 0 then     if max_conns == -1 or       s.connected_clients < max_conns then      max_conns = s.connected_clients      max_conns_ndx = i     end    end   end   -- 至此,我們找到了一個(gè)擁有空閑連接的從數(shù)據(jù)庫   if max_conns_ndx > 0 then    proxy.connection.backend_ndx = max_conns_ndx   end  else   -- 發(fā)送到主數(shù)據(jù)庫  end  return proxy.PROXY_SEND_QUERY     注釋:此技巧還可以用來實(shí)現(xiàn)其他的數(shù)據(jù)分布策略,例如分片(Sharding)。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 三台县| 广州市| 榆树市| 玉屏| 河间市| 海盐县| 龙里县| 手游| 庐江县| 临沧市| 将乐县| 惠东县| 阿合奇县| 江城| 旬邑县| 德令哈市| 杭锦后旗| 虹口区| 鲁甸县| 岳阳市| 尚义县| 湖北省| 武威市| 涡阳县| 封丘县| 富宁县| 汉阴县| 双城市| 玉山县| 监利县| 繁昌县| 莱西市| 南皮县| 河曲县| 台东县| 海晏县| 齐河县| 卢龙县| 富阳市| 晋江市| 阿巴嘎旗|