CENTOS6.6下mysql MMM架構搭建

來源:互聯網
上載者:User

標籤:

本文來自我的github pages部落格http://galengao.github.io/ 即www.gaohuirong.cn

MMM(Master-Master replication manager for MySQL)是一套支援雙主故障切換和雙主日常管理的指令碼程式。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)複製,雖然叫做雙主複製,但是業務上同一時刻只允許對一個主進行寫入,另一台備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套指令碼程式一方面實現了故障切換的功能,另一方面其內部附加的工具指令碼也可以實現多個slave的read負載平衡。

MMM提供了自動和手動兩種方式移除一組伺服器中複寫延遲較高的伺服器的虛擬ip,同時它還可以備份資料,實現兩節點之間的資料同步等。由於MMM無法完全的保證資料一致性,所以MMM適用於對資料的一致性要求不是很高,但是又想最大程度的保證業務可用性的情境。對於那些對資料的一致性要求很高的業務,非常不建議採用MMM這種高可用架構。

實現原理

兩台master互為主從,一台為唯讀,做為備份,應急時可做為寫master.其中mmm_mond進程定時心跳檢測,失敗則將write ip 浮動到另外一台master。

MySQL-MMM優缺點
  1. 優點:高可用性,擴充性好,出現故障自動切換,對於主主同步,在同一時間只提供一台資料庫寫操作。
  2. 缺點:Monitor節點是單點,可以結合Keepalived實現高可用
  3. 由於MMM無法完全的保證資料一致性,所以MMM適用於對資料的一致性要求不是很高,但是又想最大程度的保證業務可用性的情境。對於那些對資料的一致性要求很高的業務,非常不建議採用MMM這種高可用架構。
安裝mysql軟體

在每台伺服器上安裝mysql軟體,安裝參照《linux 6 源碼安裝mysql5.6》 在每台伺服器上關閉selinux,關閉防火牆 在設定檔my.cnf裡增加如下內容:

[mysqld]datadir=/usr/local/mysql/datasocket=/var/lib/mysql/mysql.sockuser=mysql #下面為新添加的內容default-storage-engine = innodb replicate-ignore-db = mysqlbinlog-ignore-db= mysql server-id   = 1log-bin = /usr/local/mysql/logs/mysql-bin.loglog_bin_index   = /usr/local/mysql/logs/mysql-bin.log.indexrelay_log   = /usr/local/mysql/logs/mysql-bin.relayrelay_log_index = /usr/local/mysql/logs/mysql-bin.relay.indexexpire_logs_days= 10max_binlog_size = 100Mlog_slave_updates sync-binlog = 1 
在/etc/hosts裡配上所有主機資訊
192.168.10.131 db1192.168.10.132 db2192.168.10.133 db3192.168.10.134 db4192.168.10.135 db5
配置主主複製

即兩個主master(db1、db2)互為主從,與主從類似,只是需要逆向配置一下。
a、先查看db1 db2 binlog日誌和pos值
db1

db2

b、在db1執行:

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘replication‘@‘192.168.10.%‘ IDENTIFIED BY ‘replication‘;mysql> flush privileges;mysql> change master to master_host=‘192.168.10.132‘, master_user=‘replication‘,master_password=‘replication‘, master_log_file=‘mysql-bin.000003‘,master_log_pos=120; mysql> start slave; #啟動同步  

c、在db2執行:

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘replication‘@‘192.168.10.%‘ IDENTIFIED BY ‘replication‘;mysql> flush privileges;mysql> change master to master_host=‘192.168.10.131‘, master_user=‘replication‘,master_password=‘replication‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=120; mysql> start slave; #啟動同步
db3、db4作為db1的從庫slave

在db3、db4上執行

mysql> change master to master_host=‘192.168.10.131‘, master_user=‘replication‘,master_password=‘replication‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=120; mysql> start slave; #啟動同步
MYSQL-MMM的安裝

(1)epel源安裝
CentOS 預設沒有 mysql-mmm 軟體包,官方推薦使用 epel 的網路源,五台都安裝epel:

wget http://mirrors.hustunique.com/epel/6/x86_64/epel-release-6-8.noarch.rpm   wget http://mirrors.hustunique.com/epel/RPM-GPG-KEY-EPEL-6   rpm --import RPM-GPG-KEY-EPEL-6  rpm -ivh epel-release-6-8.noarch.rpm 

(2)monitor節點安裝db5
在db5上執行

yum -y install mysql-mmm-monitor  

(3)四台db節點上安裝agent
在db1 db2 db3 db4上執行

yum -y install mysql-mmm-agent

(4)四台db節點上授權monitor訪問
在db1 db2 db3 db4執行

mysql -uroot -pmysql> GRANT REPLICATION CLIENT ON *.* TO ‘mmm_monitor‘@‘192.168.10.%‘ IDENTIFIED BY ‘monitor‘;                  mysql> GRANT SUPER,REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent‘@‘192.168.10.%‘ IDENTIFIED BY‘agent‘;  

(5)在db1上修改mmm_common.conf檔案(5台相同)

vi /etc/mysql-mmm/mmm_common.confactive_master_role  writer<host default>cluster_interface   eth0pid_path/var/run/mysql-mmm/mmm_agentd.pidbin_path/usr/libexec/mysql-mmm/replication_userreplicationreplication_passwordreplicationagent_user  mmm_agentagent_password  agent</host><host db1>ip  192.168.10.131modemasterpeerdb2</host><host db2>ip  192.168.10.132modemasterpeerdb1</host><host db3>ip  192.168.10.133modeslave</host><host db4>ip  192.168.10.134modeslave</host><role writer>hosts   db1, db2ips 192.168.10.128modeexclusive #只有一個虛擬IP可以寫</role><role reader>hosts   db3, db4ips 192.168.10.129, 192.168.10.130modebalanced #多個虛擬ip可以讀</role>

傳到其它4個節點

scp /etc/mysql-mmm/mmm_common.conf [email protected]192.168.10.132:/etc/mysql-mmm/scp /etc/mysql-mmm/mmm_common.conf [email protected]192.168.10.133:/etc/mysql-mmm/scp /etc/mysql-mmm/mmm_common.conf [email protected]192.168.10.134:/etc/mysql-mmm/scp /etc/mysql-mmm/mmm_common.conf [email protected]192.168.10.135:/etc/mysql-mmm/

若無scp命令,安裝一下包

yum install openssh-clients

(6)修改四台db代理端 mmm_agent.conf 檔案
在db1 db2 db3 db4上修改

vi /etc/mysql-mmm/mmm_agent.confinclude mmm_common.confthis db1   #分別修改為原生主機名稱,即db1、db2、db3和db4

(7)修改管理端的mmm_mon.conf檔案
在db5上執行

vi /etc/mysql-mmm/mmm_mon.confinclude mmm_common.conf<monitor>ip  127.0.0.1pid_path/var/run/mysql-mmm/mmm_mond.pidbin_path/usr/libexec/mysql-mmmstatus_path /var/lib/mysql-mmm/mmm_mond.statusping_ips192.168.10.131,192.168.10.132,192.168.10.133,192.168.10.133,192.168.10.134 #真實資料庫IP,來檢測網路是否正常auto_set_online 10  #恢複後自動化佈建線上的時間</monitor><host default>monitor_usermmm_monitormonitor_passwordmonitor</host>debug 0
啟動MYSQL-MMM

(1)db代理端啟動db1 db2 db3 db4

[[email protected] ~]# /etc/init.d/mysql-mmm-agent start[[email protected] ~]# chkconfig mysql-mmm-agent on

(2)monitor管理端啟動 db5

[[email protected] ~]# /etc/init.d/mysql-mmm-monitor start[[email protected] ~]# chkconfig mysql-mmm-monitor on
測試叢集

(1)查看叢集狀態db5
mmm_control show

(2)容錯移轉
類比停掉db1資料庫後
 

看它的狀態變了

CENTOS6.6下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.