mysql-proxy 讀寫分離

mysql-proxy 讀寫分離

 

主從複製

MySQL Replication能夠將master的數據複製分佈到多個slave上,而後利用slave來分擔master的讀壓力。mysql

 

 

 

 

 

讀寫分離

MySQL-Proxy 是處在MySQL數據庫客戶端和服務端之間的程序,它支持嵌入Lua。這個代理能夠用來分析、監控和變換通訊數據,支持很是普遍的使用場景:sql

  • 負載均衡和故障轉移處理;
  • 查詢分析和日誌;
  • SQL宏;
  • query rewriting;
  • 執行shell命令;
  • 讀寫分離(master處理事務性查詢;slave處理select查詢);

  

mysql-proxy 命令的選項設置:shell

--admin-address=host:port            # mysql-proxy管理端口(缺省端口是4041)
--proxy-address=host:port            # mysql-proxy 監聽端口(缺省端口是4040)
--proxy-backend-addresses=host:port  # 遠程MySQL服務器地址和端口,能夠設置多個
--proxy-read-only-backend-addresses=host:port          # 遠程只讀Slave服務器的地址和端口
--proxy-skip-profiling             # 關閉查詢分析功能,默認是打開的
--proxy-lua-script=file            # 指定一個Lua腳原本控制mysql-proxy的運行和設置
--daemon                             # 以守護進程方式運行
--pid-file=file                      # pid文件路徑

 

MySQL Proxy做爲一個鏈接池,負責將client的鏈接請求轉發給後臺的數據庫。經過Lua腳本,能夠實現複雜的鏈接控制和過濾,從而實現讀寫分離和負載均衡。數據庫

對於client來講,MySQL Proxy是徹底透明的,client只須要鏈接到MySQL Proxy的監聽端口便可。服務器

 

 

 

經過下面的lua腳本實現讀寫分離: 負載均衡

-- mysql-proxy/scripts/rw-splitting.lua
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
  min_idle_connections = 1,   -- 默認爲4
  max_idle_connections = 1,   -- 默認爲8
  is_debug = false
}
end

 

 

 

 

 

參考文檔:lua

http://jan.kneschke.de/2007/8/1/mysql-proxy-learns-r-w-splitting/spa

相關文章
相關標籤/搜索