MySQL - MMM 實現 MySQL 高可用

來源:互聯網
上載者:User

標籤:mysql伺服器   for   檔案名稱   table   block   bin   架構   vip   雙主複製   

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

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

  • 關於 MMM 高可用架構的說明如下:
    mmm_mon:監控進程,負責所有的監控工作,決定和處理所有節點角色活動。此指令碼需要在監管機上運行。
    mmm_agent:運行在每個 MySQL 伺服器上的代理進程,完成監控的探針工作和執行簡單的遠端服務shezhi.cijiaoben需要在被監管機上運行。
    mmm_control:一個簡單的指令碼,提供管理 mmm_mond 進程的命令。
    mysql-mmm 的監管端會提供多個虛擬 IP (VIP),包括一個可寫 VIP,多個可讀 VIP,通過監管的管理,這些 IP 會綁定在可用 MySQL 之上,當某一台 MySQL 宕機時,監管會將 VIP 遷移至其他 MySQL。
部署環境
主機 作業系統 IP地址 VIP地址
mysql-m1主伺服器 CentOS 7.4 x86_64 192.168.100.200 192.168.100.100(Writer)
mysql-m2主伺服器 CentOS 7.4 x86_64 192.168.100.201 192.168.100.100(Writer)
mysql-monitor CentOS 7.4 x86_64 192.168.100.204
mysql-m3從伺服器 CentOS 7.4 x86_64 192.168.100.202 192.168.100.101(Reader)
mysql-m4從伺服器 CentOS 7.4 x86_64 192.168.100.203 192.168.100.102(Reader)
開始部署
  • 安裝所需軟體包,修改設定檔(四台MySQL伺服器操作一致)
  1. 搭建ALI雲源,安裝epel-release源。

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo    #下載ALI雲源yum -y install epel-release    #安裝epel-release源yum clean all && yum makecache    #清空緩衝,產生新的快取檔案
  2. 安裝 MariaDB 資料庫,開啟服務(和MySQL同源,搭建步驟相同)

    yum -y install mariadb-server mariadbsystemctl stop firewalld.servicesetenforce 0systemctl start mariadb
  3. 修改資料庫主設定檔,發往其他主機並啟動伺服器
    # vim /etc/my.cnf[mysqld]log_error=/var/lib/mysql/mysql.err    #錯誤記錄檔檔案位置log=/var/lib/mysql/mysql_log.log    #訪問記錄檔位置log_slow_queries=/var/lib/mysql_slow_queris.log    #慢記錄檔位置binlog-ignore-db=mysql,information_schema    #不產生二進位檔案的庫character_set_server=utf8    #使用的字元集log_bin=mysql_bin    #二進位記錄檔功能server_id=1log_slave_updates=true    #開啟同步sync_binlog=1auto_increment_increment=2auto_increment_offset=1# scp /etc/my.cnf [email protected]:/etc# scp /etc/my.cnf [email protected]:/etc# scp /etc/my.cnf [email protected]:/etc# 註:另外三台主機的設定檔裡的server_id要做修改,保證不一致即可
  • 配置主主複製(m1和m2兩台主伺服器互相同步)
  • 查看對方的記錄檔名稱和位移值

    mysql> show master status;
  • 主伺服器互相提升存取權限(m1、m2伺服器分別執行)

    # mysql-m1grant replication slave on *.* to ‘replication‘@‘172.168.100.%‘ identified by ‘123456‘;# 使用賬戶為replication 密碼為123456change master to master_host=‘172.168.100.201‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000003‘,master_log_pos=245;# 當在MariaDB-m1上執行時,master_host地址為MariaDB-m2地址···# mysql-m2grant replication slave on *.* to ‘replication‘@‘172.168.100.%‘ identified by ‘123456‘;change master to master_host=‘172.168.100.200‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000003‘,master_log_pos=245;# 當在MariaDB-m2上執行時,master_host地址為MariaDB-m1地址
  • 開啟同步,查看伺服器的主從狀態

    start slave;show slave status\G;# Slave_IO_Running: Yes# Slave_SQL_Running: Yes
  • 配置m3、m4伺服器作為從伺服器

    show master status;# 查看m1伺服器的記錄檔以及位移值(注意記錄檔和位移值的改變)# m1和m2互相同步,在此只需執行m1即可change master to master_host=‘172.168.100.200‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000004‘,master_log_pos=245;# m3和m4上分別執行
  • 分別查看m3和m4的主從狀態

    start slave;show slave status\G;# Slave_IO_Running: Yes# Slave_SQL_Running: Yes
  • 安裝配置MMM架構
    前面我們使用wget配置了ALI雲源並簡易安裝 MariaDB 來代替 MySQL ,並搭建了主主同步,主從複製以便完成實驗,現在我們來完成MMM架構

  • 安裝mysql-mmm,修改設定檔(五台主機配置相同)

    # yum -y install mysql-mmm*     //前面我們配置了epel源,直接yum安裝# vim /etc/mysql-mmm/mmm_common.conf  //配置如下active_master_role      writer<host default>cluster_interface       ens33pid_path                /run/mysql-mmm-agent.pidbin_path                /usr/libexec/mysql-mmm/replication_user        replicationreplication_password    123456agent_user              mmm_agentagent_password          123456</host><host db1>ip      172.168.100.200mode    masterpeer    db2</host><host db2>ip      172.168.100.201mode    masterpeer    db1</host><host db3>ip      172.168.100.202mode    slave</host><host db4>ip      172.168.100.203mode    slave</host><role writer>hosts   db1, db2ips     172.168.100.100mode    exclusive</role><role reader>hosts   db3, db4ips     172.168.100.101, 172.168.100.102mode    balanced</role>
  • 快速為其他主機修改設定檔

    scp mmm_common.conf [email protected]:/etc/mysql-mmm/scp mmm_common.conf [email protected]:/etc/mysql-mmm/scp mmm_common.conf [email protected]:/etc/mysql-mmm/scp mmm_common.conf [email protected]:/etc/mysql-mmm/
  • 在主機上修改mmm_agent.conf檔案的名稱

    # vim /etc/mysql-mmm/mmm_agent.confthis db1  //按照規劃分別修改為db1、db2、db3、db4
  • 在所有主機上對mmm_agent、mmm_moniter進行授權

    mysql> grant super, replication client, process on *.* to ‘mmm_agent‘@‘192.168.100.%‘ identified by ‘123456‘;mysql> grant replication client on *.* to ‘mmm_monitor‘@‘192.168.100.%‘ identified by ‘123456‘;# flush privileges;  //重新載入許可權表
  • 配置監控主機(在mysql-monitor上配置)

    # vim /etc/mysql-mmm/mmm_mon.confinclude mmm_common.conf<monitor>ip                  127.0.0.1pid_path            /run/mysql-mmm-monitor.pidbin_path            /usr/libexec/mysql-mmmstatus_path         /var/lib/mysql-mmm/mmm_mond.statusping_ips            172.168.100.200,172.168.100.201,172.168.100.202,172.168.100.203auto_set_online     10    #上線時間修改為10s# The kill_host_bin does not exist by default, though the monitor will# throw a warning about it missing.  See the section 5.10 "Kill Host# Functionality" in the PDF documentation.## kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host#</monitor><host default>monitor_user        mmm_monitormonitor_password    123456</host>debug 0
  • 關閉防火牆及增強×××

    systemctl disable firewalld.servicesystemctl stop firewalld.servicesetenforce 0
  • 啟動服務,查看各節點狀態
    systemctl start mysql-mmm-monitor.service# ERROR: Can‘t connect to monitor daemon!,如若出現報錯,可嘗試重啟服務解決mmm_control check all# 檢查監控伺服器對所有主機的監控是否完善# 檢查結果全部OK,則部署完成

至此,MySQL-MMM已經部署成功,進一步的話,我們可以結合Amoeba實現讀寫分離,Writer 的虛擬VIP可以寫入資料庫,而 Reader 可以用來讀取資料。並通過Keepalived對 monitor 伺服器進行雙機熱備。

MySQL - MMM 實現 MySQL 高可用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.