1、使用mysql-proxy 快速實現mysql 集羣 讀寫分離html
一、有兩種方法:mysql
a)程序代碼內部實現,對select操做分發到從庫,其餘到主庫,再生產環境中應用比較普遍,比較知名的有DISCUZX2,優勢性能好,成本低,缺點是須要開發人員維護。git
b)代理實現,用中間件mysql-proxy來實現讀寫分離。mysql-proxy是Mysql官方開源產品。缺點是有單點故障:爲了不mysql-proxy單點隱患有兩種方法,一種方法是mysql-proxy配合keepalived作雙機,另外一種方法是將mysql-proxy和應用服務安裝到同一臺服務器上;爲了不mysql-master單點故障可使用DRBD+heartbear作雙機;避免mysql-slave單點故障增長多臺mysql-slave便可,由於mysql-proxy會自動屏蔽後端發生故障的mysql-slave。github
二、環境搭建;sql
一、須要最少3臺服務器,主從各一臺,mysql-proxy一臺,數據庫
二、在mysql-proxy服務器上安裝所需的包並進行配置。後端
三、需注意要在主從機器/etc/my.cnf中開啓log=query.log功能。服務器
四、具體操做可參考:https://my.oschina.net/barter/blog/93354負載均衡
2、mycat實現MySQL讀寫分離性能
一、Mycat是數據庫中間件,對數據進行交互和處理,可對數據進行分片處理,全部分片數據庫構成一個完整的數據存儲庫,藉助mycat的分表能力,能有效提升數據處理能力和效率。
二、主要應用場景:
a)單純的讀寫分離,此時配置最爲簡單,支持讀寫分離,主從切換;
b)分表分庫,對錶進行分庫;
c)多租戶應用,每一個應用一個庫,但應用程序只鏈接Mycat,從而不改造程序自己,實現多租戶化;
d)表系統,藉助於Mycat的分表能力,處理大規模報表的統計;
三、環境搭建與配置:
a)安裝mycat,須要安裝JDK
b)配置schema.xml,該表主要用來配置數據庫節點,邏輯表等等東西的
c)須要設置防火牆,設置端口。
四、具體操做可參考:http://www.th7.cn/db/mysql/201708/250280.shtml https://blog.csdn.net/u011325787/article/details/51423424
3、atlas相關
一、atlas是Qihoo 360的相關團隊在Mysql官方的 MySQL-Proxy 0.8.2版本的基礎上修改的一箇中間件。優化了鎖機制,提升了性能。
二、主要功能有:
a)實現主從的讀寫分離
b)從庫負載均衡
c)能夠設置對IP過濾
d)自動識別SQL語句黑白名單
e)自動分表
三、安裝與配置:可參考一下連接,Atlas官網配置的註釋寫的蠻詳細的,都是中文。
Atlas官方連接: https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
Atlas下載連接:https://github.com/Qihoo360/Atlas/releases
https://www.cnblogs.com/alex-note/p/6835965.html
https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E5%AE%89%E8%A3%85
https://www.oschina.net/p/atlas