mysql的MMM高可用方案

來源:互聯網
上載者:User

標籤:des   blog   http   io   os   使用   ar   for   檔案   

1    MMM高可用mysql方案

1.1  方案簡介

MMM即Master-Master Replication Manager for MySQL(mysql主主複製管理器)關於mysql主主複製配置的監控、容錯移轉和管理的一套可伸縮的指令碼套件(在任何時候只有一個節點可以被寫入),這個套件也能對居於標準的主從配置的任意數量的從伺服器進行讀負載平衡,所以你可以用它來在一組居於複製的伺服器啟動虛擬ip,除此之外,它還有實現資料備份、節點之間重新同步功能的指令碼。MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實現伺服器的容錯移轉,從而實現mysql的高可用。MMM不僅能提供浮動IP的功能,更可貴的是如果當前的主伺服器掛掉後,會將你後端的從伺服器自動轉向新的主伺服器進行同步複製,不用手工更改同步配置。這個方案是目前比較成熟的解決方案。

1.2  方案優缺點

優點:安全性、穩定性高,可擴充性好,高可用,當主伺服器掛掉以後,另一個主立即接管,其他的從伺服器能自動切換,不用人工幹預。

缺點:至少三個節點,對主機的數量有要求,需要實現讀寫分離,對程式來說是個挑戰。

1.3  方案架構圖

 

1.4  適用情境

MMM的適用情境為資料庫訪問量大,業務增長快,並且能實現讀寫分離的情境。

1.5  方案實戰

1.5.1 實戰環境介紹

實戰環境伺服器列表:

伺服器

主機名稱

ip地址

Serverid

系統

Mysql

Monitor

Mon

10.1.1.111

--

Centos 5.5 64bit

--

Master1

db1

10.1.1.113

1

Centos 5.5 64bit

5.1.63

Master2

db2

10.1.1.75

2

Centos 5.5 64bit

5.1.63

Slave1

db3

10.1.1.108

3

Centos 5.5 64bit

5.1.63

實戰環境虛擬IP列表:

VIP

Role

description

10.1.1.176

Read

應用配置的讀取IP,也可以在前端加lvs等,做負載平衡   。三台資料庫每台一個浮動VIP

10.1.1.177

Read

10.1.1.178

Read

10.1.1.179

Write

應用配置的寫入的VIP,單點寫入。

 

1.5.2 MMM的安裝

在安裝mmm之前要安裝epel包,因為Centos的預設源中沒有mmm的安裝包,Epel是企業版Linux附加軟體包(Extra Packages for Enterprise Linux)的縮寫,是一個由特別興趣小組建立、維護並管理的,針對紅帽企業版Linux(RHEL)及其衍生髮行版(比如CentOS、Scientific Linux)的一個高品質附加軟體包項目。

安裝epel:

wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm

rpm -Uvh epel-release-5-3.noarch.rpm

安裝monitor的安裝:

yum -y install mysql-mmm*

各個DB上只需要安裝mysql-mmm-agent

yum -y install mysql-mmm-agent

1.5.3 MMM的配置

1.5.3.1   配置之前的準備

前提是要配置好master1和master2的主主同步,master1和slave1的主從同步,限於篇幅這裡我就不做介紹了。

在配置mmm之前首先要在mysql中建立除複製帳號之外的另外兩個帳號,首先來介紹monitor user帳號,這個帳號是monitor伺服器用來對mysql伺服器做健全狀態檢查的,其次就是agent user,這個帳號是mmm agent(mmm代理)用來變成唯讀模式和同步master等,下面是建立這兩個帳號的語句:

GRANT REPLICATION CLIENT ON *.* TO ‘mmm_monitor‘@‘10.1.1.%‘ IDENTIFIED BY ‘monitor_password‘;

GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent‘@‘10.1.1.%‘   IDENTIFIED BY ‘agent_password‘;

flush privileges;

這兩個語句在每個mysql中都要執行一下。

1.5.3.2   Monitor伺服器的配置

MMM的設定檔在/etc/mysql-mmm目錄下,monitor需要配置的檔案有mmm_common.conf、mmm_mon.conf兩個檔案。mmm_common.conf檔案在mmm的各個節點都是一樣的,因此配置好以後copy到各個DB節點即可。

我mmm_common.conf的配置如下:

vim /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        replication

    replication_password    123456

    agent_user              mmm_agent

    agent_password          agent_password

</host>

 

<host db1>

    ip      10.1.1.113    #這個IP尤其注意是db1的IP

    mode    master

    peer    db2

</host>

 

<host db2>

    ip      10.1.1.75    #這個IP尤其注意是db2的IP

    mode    master

    peer    db1

</host>

 

<host db3>

    ip      10.1.1.108

    mode    slave

</host>

 

<role writer>

    hosts   db1, db2

    ips     10.1.1.179

    mode    exclusive

</role>

 

<role reader>

    hosts   db1, db2, db3

    ips     10.1.1.176, 10.1.1.177, 10.1.1.178

    mode    balanced

</role>

我的mmm_mon.conf配置如下:

vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf

 

<monitor>

    ip                  127.0.0.1

    pid_path            /var/run/mysql-mmm/mmm_mond.pid

    bin_path            /usr/libexec/mysql-mmm

    status_path         /var/lib/mysql-mmm/mmm_mond.status

    ping_ips            10.1.1.1, 10.1.1.113, 10.1.1.75, 10.1.1.108

# ping_ips 監控了網關IP和其他的DB節點IP

    auto_set_online     60

</monitor>

 

<host default>

    monitor_user        mmm_monitor

    monitor_password    monitor_password

</host>

 

debug 0

1.5.3.3   各個DB伺服器的配置

各個DB伺服器要配置的東西比較不多,主要有mmm_common.conf、mmm_agent.conf和/etc/default/mysql-mmm-agent檔案。

  • db1 的配置

mmm_common.conf檔案的配置和前面monitor的一樣,直接copy過來即可使用

mmm_agent.conf的配置:

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db1

mysql-mmm-agent的配置:

vim /etc/default/mysql-mmm-agent

ENABLED=1

  • db2 的配置

mmm_common.conf檔案的配置和前面monitor的一樣,直接copy過來即可使用

mmm_agent.conf的配置:

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db2

mysql-mmm-agent的配置:

vim /etc/default/mysql-mmm-agent

ENABLED=1

 

  • db3 的配置

mmm_common.conf檔案的配置和前面monitor的一樣,直接copy過來即可使用

mmm_agent.conf的配置:

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db3

mysql-mmm-agent的配置:

vim /etc/default/mysql-mmm-agent

ENABLED=1

1.5.4 MMM的管理

1.5.4.1   MMM的啟動和停止

  • MMM的啟動

啟動mmm agent

/etc/init.d/mysql-mmm-agent start

將agent的啟動命令寫入到三個DB的rc.local檔案中

啟動mmm monitor

/etc/init.d/mysql-mmm-monitor start

將monitor的啟動命令寫入到monitor伺服器的rc.local檔案中

  • MMM的停止

停止mmm agent

/etc/init.d/mysql-mmm-agent stop

停止mmm monitor

/etc/init.d/mysql-mmm-monitor stop

1.5.4.2   MMM的基本管理

查看叢集的狀態

mmm_control show

將db1設定成online狀態

mmm_control set_online db1

更多管理命令請使用mmm_control help查看,或者參考:

http://blog.chinaunix.net/uid-20639775-id-154606.html

1.5.5 MMM架構的測試

環境搭建好以後,就需要進行周密的測試,看是否實現了預期的功能:

  • 停掉master1後在monitor端使用mmm_control show看是否能切換。看看slave1是否能正確切換同步。
  • 啟動master1後在monitor端使用mmm_control show看是否能切換。
  • 停掉master2後看看能否正確切換。

1.5.6 MMM架構的監控

為實現高可用,系統的各個層面都需要全面的監控起來,比如agent進程的監控,monitor進程的監控,mysql可用性的監控,資料庫同步的監控等,推薦使用nagios對以上資源進行監控,第一時間發現問題,第一時間處理。

mysql的MMM高可用方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.