Centos7下安裝ProxySQL實現Mysql5.7讀寫分離集群環境虛擬機下載

本博主配置好的Centos7下安裝ProxySQL實現Mysql讀寫分離集群環境虛擬機下載,鏈接:https://pan.baidu.com/s/1ThGBrosAB0I7Bp4pIJhx2g
提取碼:j26m 下載後,用Vmware workstaion打開,即可以使用

ProxySQL是一個高性能的MySQL中間件,擁有強大的規則引擎。ProxySQL是用C++語言開發的,也是percona推的一款中間件,雖然也是一個輕量級產品,但性能很好(據測試,能處理千億級的數據),功能也足夠,能滿足中間件所需的絕大多數功能。

ProxySQL具備了很多優質特性,具體總結如下:
-> 連接池,而且是multiplexing
-> 主機和用戶的最大連接數限制
-> 自動下線後端DB
 -> 延遲超過閥值
->  ping 延遲超過閥值
->  網絡不通或宕機
-> 強大的規則路由引擎
-> 實現讀寫分離
-> 查詢重寫
-> sql流量鏡像
-> 支持prepared statement
-> 支持Query Cache
-> 支持負載均衡,與gelera結合自動failover
-> 可定製基於用戶、基於schema、基於語句的規則對SQL語句進行路由。換句話說,規則很靈活。基於schema和與語句級的規則,可以實現簡單的sharding。
-> 可緩存查詢結果。雖然ProxySQL的緩存策略比較簡陋,但實現了基本的緩存功能,絕大多數時候也夠用了。此外,作者已經打算實現更豐富的緩存策略。
-> 監控後端節點。ProxySQL可以監控後端節點的多個指標,包括:ProxySQL和後端的心跳信息,後端節點的read-only/read-write,slave和master的數據同步延遲性(replication lag)。

ProxySQL是一個能實實在在用在生產環境的MySQL中間件,可以實現讀寫分離,支持 Query 路由功能,支持動態指定某個 SQL 進行 cache,支持動態加載配置、故障切換和一些 SQL的過濾功能。還有一些同類產品比如 DBproxy、MyCAT、OneProxy 等。但經過反覆對比和測試之後,還是覺得ProxySQL是一款性能不諳,靠譜穩定的MySQL 中間件產品 !

ProxySQL是靈活強大的MySQL代理層, 是一個能實實在在用在生產環境的MySQL中間件,可以實現讀寫分離,支持 Query 路由功能,支持動態指定某個 SQL 進行 cache,支持動態加載配置、故障切換和一些 SQL的過濾功能。還有一些同類產品比如 DBproxy、MyCAT、OneProxy 等。但經過反覆對比和測試之後,還是覺得ProxySQL是一款性能不諳,靠譜穩定的MySQL 中間件產品 !

ProxySQL的亮點所在

–  幾乎所有的配置均可在線更改(其配置數據基於SQLite存儲),無需重啟proxysql
–  基於正則和client_addr的強大和靈活的路由規則
–  詳細的狀態統計,統計結果和pt-query-digest對慢日誌的分析結果類似,相當於有了統一的查看sql性能和sql語句統計的入口(Designed by a DBA for DBAs)
–  自動重連和重新執行機制(auto-reconnect and automatic re-execution of queries using it』s Connections Pool ): 若一個請求在鏈接或執行過程中意外中斷,proxysql會根據其內部機制重新執行該操作
–  query cache功能:比mysql自帶QC更靈活,可在mysql_query_rules表中依據digest,match_pattern,client_addr等維度控制哪類語句可以緩存
–  支持連接池(connection pool)並且支持multiplexing,區別於atlas之流的連接池實現。

本博主配置好的Centos7下安裝ProxySQL實現Mysql讀寫分離集群環境虛擬機下載,鏈接:https://pan.baidu.com/s/1ThGBrosAB0I7Bp4pIJhx2g
提取碼:j26m 下載後,用Vmware workstaion打開,即可以使用

ProxySQL的特點

ProxySQL是一個高性能的MySQL中間件,擁有強大的規則引擎。具有以下特性:
–  連接池,而且是 multiplexing;
–  主機和用戶的最大連接數限制;
–  自動下線後端DB;
–  延遲超過閥值
–  ping 延遲超過閥值
–  網絡不通或宕機
–  強大的規則路由引擎;
–  實現讀寫分離
–  查詢重寫
–  sql流量鏡像
–  支持prepared statement;
–  支持Query Cache;
–  支持負載均衡,與gelera結合自動failover;
–  將所有配置保存寫入到SQLit表中。
–  支持動態加載配置,即一般可以在線修改配置,但有少部分參數還是需要重啟來生效。
–  支持query cache。
–  支持對query的路由,可以針對某個語句進行分配去哪個實例執行。
–  不支持分表,可以分庫,但是利用規則配置實現分表。

如上可知,ProxySQL集合了很多優秀特性於一身,那麼它的缺點呢就是項目不夠成熟,好在官方網站一直在及時更新,並且受到 Percona 官方的支持。

ProxySQL多層管理配置設計 (有三層配置)

–  runtime:運行中使用的配置文件
–  memory:提供用戶動態修改配置文件
–  disk:將修改的配置保存到磁盤SQLit表中(即:proxysql.db)
–  config:一般不使用它(即:proxysql.cnf)

ProxySQL運行機制草圖如下:
ProxySQL有一個完備的配置系統,配置ProxySQL是基於sql命令的方式完成的。ProxySQL支持配置修改之後的在線保存、應用,不需要重啟即可生效。整個配置系統分三層設計。
整個配置系統分為三層,如下圖所示:

ProxySQL配置系統分為三層的目的:
1) 自動更新;
2) 儘可能的不重啟proxysql就可以修改配置;
3) 方便回滾錯誤配置;

簡單說就是配置proxysql分為三個級別,RUNTIME是即時生效的,MEMORY是保存在內存中但並不立即生效的,DISK|CONFIG FILE是持久化或寫在配置文件中的。

這三個級別的配置文件互不干擾,在某個層級修改了配置文件,想要加載或保存到另一個層級,需要額外的LOAD或SAVE操作:”LOAD xx_config FROM xx_level | LOAD xx_config TO xx_level | SAVE xx_config TO xx_level | SAVE xx_config FROM xx_level”,達到加載配置或者持久化配置的目的。這三層中每層的功能與含義如下:

本博主配置好的Centos7下安裝ProxySQL實現Mysql讀寫分離集群環境虛擬機下載,鏈接:https://pan.baidu.com/s/1ThGBrosAB0I7Bp4pIJhx2g
提取碼:j26m 下載後,用Vmware workstaion打開,即可以使用
–  RUNTIME層
代表的是ProxySQL當前生效的配置,包括 global_variables, mysql_servers, mysql_users, mysql_query_rules。無法直接修改這裡的配置,必須要從下一層load進來。該層級的配置時在proxysql管理庫(sqlite)的main庫中以runtime_開頭的表,這些表的數據庫無法直接修改,只能從其他層級加載;該層代表的是ProxySQL當前生效的正在使用的配置,包括global_variables, mysql_servers, mysql_users, mysql_query_rules表。無法直接修改這裡的配置,必須要從下一層load進來。也就是說RUNTIME這個頂級層,是proxysql運行過程中實際使用的那一份配置,這一份配置會直接影響到生產環境的,所以要將配置加載進RUNTIME層時需要三思而行。

–  MEMORY層
是平時在mysql命令行修改的 main 裡頭配置,可以認為是SQLite數據庫在內存的鏡像。該層級的配置在main庫中以mysql_開頭的表以及global_variables表,這些表的數據可以直接修改;用戶可以通過MySQL客戶端連接到此接口(admin接口),然後可以在mysql命令行查詢不同的表和數據庫,並修改各種配置,可以認為是SQLite數據庫在內存的鏡像。也就是說MEMORY這個中間層,上面接着生產環境層RUNTIME,下面接着持久化層DISK和CONFIG FILE。MEMORY層是我們修改proxysql的唯一正常入口。一般來說在修改一個配置時,首先修改Memory層,確認無誤後再接入RUNTIME層,最後持久化到DISK和CONFIG FILE層。也就是說memeory層裏面的配置隨便改,不影響生產,也不影響磁盤中保存的數據。通過admin接口可以修改mysql_servers、mysql_users、mysql_query_rules、global_variables等表的數據。

–  DISK|CONFIG FILR層
持久存儲的那份配置,一般在$(DATADIR)/proxysql.db,在重啟的時候會從硬盤裡加載。 /etc/proxysql.cnf文件只在第一次初始化的時候用到,完了後,如果要修改監聽端口,還是需要在管理命令行里修改,再 save 到硬盤。該層級的配置在磁盤上的sqlite庫或配置文件里。DISK/CONFIG FILE層表示持久存儲的那份配置,持久層對應的磁盤文件是$(DATADIR)/proxysql.db,在重啟ProxySQL的時候,會從proxysql.db文件中加載信息。而 /etc/proxysql.cnf文件只在第一次初始化的時候使用,之後如果要修改配置,就需要在管理端口的SQL命令行里進行修改,然後再save到硬盤。 也就是說DISK和CONFIG FILE這一層是持久化層,我們做的任何配置更改,如果不持久化下來,重啟後,配置都將丟失。

                                      需要注意                                       
1) ProxySQL每一個配置項在三層中都存在,但是這三層是互相獨立的,也就是說proxysql可以同時擁有三份配置,每層都是獨立的,可能三份配置都不一樣,也可能三份都一樣。
2) RUNTIME層代表 ProxySQL 當前生效的正在使用的配置,無法直接修改這裡的配置,必須要從下一層 “load” 進來。
3) MEMORY這一層上面連接 RUNTIME 層,下面連接持久化層。在這層可以正常操作 ProxySQL 配置,隨便修改,不會影響生產環境。修改一個配置一般都是先在 MEMORY 層完成,然後確認正常之後再加載到 RUNTIME 和持久化到磁盤上。
4) DISK 和 CONFIG FILE層持久化配置信息,重啟後內存中的配置信息會丟失,所以需要將配置信息保留在磁盤中。重啟時,可以從磁盤快速加載回來。

ProxySQL配置文件的修改流程一般是:
– 啟動時:先修改必要的CONFIG FILE配置,比如管理端口,然後啟動;
– 其他配置:修改MEMORY中的表,然後加載到RUNTIME並持久化。

ProxySQL具有一個複雜但易於使用的配置系統,可以滿足以下需求:
–  允許輕鬆動態更新配置(這是為了讓ProxySQL用戶可以在需要零宕機時間配置的大型基礎架構中使用它)。與MySQL兼容的管理界面可用於此目的。
–  允許儘可能多的配置項目動態修改,而不需要重新啟動ProxySQL進程
–  可以毫不費力地回滾無效配置
–  這是通過多級配置系統實現的,其中設置從運行時移到內存,並根據需要持久保存到磁盤。

一般,修改的配置都是在memory層。可以load到runtime,使配置在不用重啟proxysql的情況下也可以生效,也可以save到disk,將對配置的修改持久化!

本博主配置好的Centos7下安裝ProxySQL實現Mysql讀寫分離集群環境虛擬機下載,鏈接:https://pan.baidu.com/s/1ThGBrosAB0I7Bp4pIJhx2g
提取碼:j26m 下載後,用Vmware workstaion打開,即可以使用

 

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營

發表評論

您的電子郵箱地址不會被公開。 必填項已用*標註