MYSQL性能優化之Mysql資料庫高可用架構設計之MMM架構設計(上)
高可用性H.A.(High Availability)指的是通過盡量縮短因日常維護操作(計劃)和突發的系統崩潰(非計劃)所導致的停機時間,以提高系統和應用的可用性。它與被認為是不間斷操作的容錯技術有所不同。HA系統是目前企業防止核心計算機系統因故障停機的最有效手段。
使用正常可用時間和全年時間百分比來表示高可用
99999 (365*24*60)*(1-0.99999) = 5.256分鐘
成本和高可用性呈正相關,結合業務和成本來考慮
單點故障的解決
方法1:共享存儲
方法2:DRDB磁碟(推薦)
面臨的問題:主伺服器的單點問題
MMM架構
通過監控伺服器MMM和各個伺服器上的監控代理軟體交互來完成監控和資料庫遷移的
MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)複製。 雖然叫做雙主複製,但是業務上同一時刻只允許對一個主進行寫入,另一台備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡。 可以看上一篇我寫的文章:主備模式的主主複製
MMM提供了自動和手動兩種方式移除一組伺服器中複製延遲較高的伺服器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。由於MMM無法完全的保證數據一致性,所以MMM適用於對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。對於那些對數據的一致性要求很高的業務,非常不建議採用MMM這種高可用架構。
MMM功能
- MMM簡單的找到主庫的當前日誌點,然後使所有的從庫日誌點和該日誌點同步。如果在一個繁忙的系統中,很有可能對數據造成丟失的情況 - 寫虛擬IP只能在兩個主伺服器之間切換,讀虛擬IP可以在任意伺服器之間切換MMM部署所需資源
MMM部署步驟
MMM演示拓撲圖
MMM演示
建立複製賬號
主庫備份(複製到備主伺服器和從伺服器)100
主主同步複製(兩個主都需要複製)
備主伺服器數據複製101
導入資料庫,mysql -uroot -p < all.sql
查看主伺服器二進位日誌名字和時間點 all.sql
主伺服器數據複製100
從伺服器數據複製102
導入資料庫,mysql -uroot -p < all.sql
查看主伺服器二進位日誌名字和時間點 all.sql
各個伺服器優化yum源及工具安裝
下載rpm包
wget http://mirrors.opencas.cn/epel/epel-release-latest-6.noarch.rpm
安裝rpm
rpm -ivh epel-.....rpmrpm -ivh remi-.....rpm
編輯配置文件
vim /etc/yum.repos.d/remi.repo
vim /etc/yum.repos.d/epel.repo
安裝監控服務
yum search mmm
yum install mysql-mmm-agent.noarch -y 每個伺服器都要安裝的代理(3個)
安裝監控伺服器包yum -y install mysql-mmm*
數據賬號主創建->同步到主備,從伺服器
監控用戶
代理用戶(故障轉移,主從切換)
複製用戶(複製集群時已經創建)
MMM資料庫節點配置
vim /etc/mysql-mmm/mmm_common.conf(所有集群節點必須一致)
拷貝到所有其他伺服器
vim /etc/mysql-mmm/mmm_agent.conf 配置各個伺服器名(保證不衝突)
MMM資料庫監控節點配置(監控伺服器102)
vim /etc/mysql-mmm/mmm_mon.conf
What does 「split-brain」 mean?(紅帽文檔的解釋)
「Split brain」 is a condition whereby two or more computers or groups of computers lose contact with one another but still act as if the cluster were intact. This is like having two governments trying to rule the same country. If multiple computers are allowed to write to the same file system without knowledge of what the other nodes are doing, it will quickly lead to data corruption and other serious problems. Split-brain is prevented by enforcing quorum rules (which say that no group of nodes may operate unless they are in contact with a majority of all nodes) and fencing (which makes sure nodes outside of the quorum are prevented from interfering with the cluster). 解決方案:磁碟鎖 仲裁機制 或者冗餘心跳線等方式來解決
MMM啟動
三台伺服器(節點) /etc/init.d/mysql-mmm-agent start監控伺服器啟動監控服務 /etc/init.d/mysql-mmm-monitor start查看當前集群的狀態 mmm_control show
虛擬IP正確配置(監控伺服器)
測試
關閉主伺服器
/etc/init.d/mysqld stop
監控伺服器查看
mmm_control show
主從關係變化(查看配置) show slave master 用於提供有關從屬伺服器線程的關鍵參數的信息
MMM集群優點
MMM集群缺點
推薦閱讀:
※Android 性能篇 - 內存優化
※快速排序演算法的優化思路總結
※【厚積薄發】關於LZMA和LZ4壓縮的疑惑解析
※document.write 的痛
※網頁渲染性能優化 —— 性能優化下