Mysq-MMM讀寫分離實操(簡單易懂版)

1,環境介紹,系統均爲CentOS6.5 64位

nameip角色須安裝的軟件DB
node2172.16.251.22agentmysql-mmm-agentmariaDB10
node3172.16.251.23agentmysql-mmm-agentmariaDB10
node4172.16.251.24agentmysql-mmm-agentmariaDB10
node5172.16.251.25monitormysql-mmm-monitormysql-client


2,簡單概述mysql-mmm

   MMM即Master-Master Replication Manager for MySQL(mysql主主複製管理器)關於mysql主主複製配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任何時候只有一個節點可以被寫入),這個套件也能對居於標準的主從配置的任意數量的從服務器進行讀負載均衡,原理是:在一組複製的服務器啓動虛擬ip,由於虛擬IP的存在,某一節點的故障,並不會影響正常的讀寫操作。(位於同一組的讀或寫服務器會有相同的虛擬IP對外提供服務)


3,具體實現

   1)主主複製的具體配置實現(node2與node3)

   2)主從複製的具體配置實現(node3主與node4從)

   詳細請查看:http://onlywyn.blog.51cto.com/204565/1395992

4,軟件安裝

   1)在node2,node3,node4上面分別安裝 mysql-mmm-agent

       yum install -y mysql-mmm-agent

   2)node5上安裝 mysql-mmm-monitor

       yuminstall -y mysql-mmm-monitor

5,配置文件的設置及詳解

   編輯node2上的/etc/mysql-mmm/mmm_common.conf,具體配置如下描述:


active_master_role      writer
<host default>
    cluster_interface       eth0 #集羣節點間通信依賴的網卡
    pid_path                /var/run/mysql-mmm/mmm_agentd.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        admin
    replication_password    admin
    agent_user              admin
    agent_password          admin
     ##方便實現操作使用的用戶名和密碼一樣
</host>
<host node2> #主機名
    ip      172.16.251.22 #node2主機ip
    mode    master #此節點的角色
    peer    node3  #與node3爲主-主複製架構
</host>
<host node3>  #主機名
    ip      172.16.251.23 #node3主機ip
    mode    master #此節點的角色
    peer    node2  #與node2爲主-主複製架構
</host>
<host node4> #主機名
    ip      172.16.251.24  #node4主機ip
    mode    slave  #此節點的角色
</host>
<role writer> #定義mysql寫服務器
     hosts      node3,node2  #定義mysql寫服務器,所包括的主機
     ips        172.16.251.35 #對外提供服務的VIP
     mode       exclusive  #工作模式
</role>
<role reader> #定義mysql寫服務器
    hosts   node4,node3  #定義mysql讀服務器,所包括的主機
    ips     172.16.251.5,172.16.251.15  #對外提供服務的VIP
    mode    balanced  #工作模式
</role>


   配置/etc/mysql-mmm/mysql-mmm-agent.conf

wKioL1NZH0KRdreTAAE9bf9Fso4912.jpg

   配置/etc/mysql-mmm/mysql-mmm-mon.conf文件詳解,在節點node5上

wKioL1NZIMbTjcuSAAJjJ0zrbDc077.jpg

6,測試

   1)分別在node2,node3,node4啓動 agent

       service mysql-mmm-agent start

   2)在node5上啓動monitor,並安裝mysql客戶端程序(不用安裝服務器端)

       service mysql-mmm-monitor start

       yum install -y mysql

      查看monitor連接狀態

[root@node5 mysql-mmm]# mmm_control show
  node2(172.16.251.22) master/ONLINE. Roles:
  node3(172.16.251.23) master/ONLINE. Roles: reader(172.16.251.15), writer(172.16.251.35)
  node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.5)

   可以看三臺mysql服務器已經在線,node2、node3爲主主複製,node3、node4爲主從複製,對外提供服務的虛擬讀IP爲172.16.251.15、172.16.251.5,虛擬寫IP爲172.16.251.35

   測試:停止node3上的mysql服務器

       再查看三臺服務器的狀態,如下

[root@node5 mysql-mmm]# mmm_control show
  node2(172.16.251.22) master/ONLINE. Roles: writer(172.16.251.35)
  node3(172.16.251.23) master/HARD_OFFLINE. Roles:
  node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.15), reader(172.16.251.5)

   可以發現,讀服務器已經自動切換至node2上面。再次啓動node3上的mysql服務器,如下:

       

[root@node5 mysql-mmm]# mmm_control show
  node2(172.16.251.22) master/ONLINE. Roles: writer(172.16.251.35)
  node3(172.16.251.23) master/AWAITING_RECOVERY. Roles:
  node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.15), reader(172.16.251.5)

   此時node3處理等待發現(恢復)狀態,在監控端使用命令:mmm_control set_online node3

   

[root@node5 mysql-mmm]# mmm_control show
  node2(172.16.251.22) master/ONLINE. Roles:
  node3(172.16.251.23) master/ONLINE. Roles: reader(172.16.251.15), writer(172.16.251.35)
  node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.5)

   後記:此次實驗過程中,對於虛擬出來的讀IP地址,在監控端是可以登陸進行正常的查訊操作(172.16.251.5、172.16.251.25),但是對於虛擬出來的寫IP(172.16.251.35),對外提供服務

   須依賴真實的IP地址,顯然是不妥的地方,下次再續(^_^!!)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章