MySQL-MMM實(shí)現(xiàn)MySQL高可用-創(chuàng)新互聯(lián)

  • MMM (Master-Master replication manager for MySQL,MySQL 主主復(fù)制管理器)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM 使用 Perl 語言開發(fā),主要用來監(jiān)控和管理 MySQL Master-Master(雙主)復(fù)制,雖然也叫雙主復(fù)制,但是業(yè)務(wù)上同一時(shí)刻只允許對(duì)一個(gè)主進(jìn)行寫入,另一臺(tái)備選主上提供部分讀服務(wù),以加速在主主切換時(shí)備選主的預(yù)熱,可以說 MMM 這套腳本程序一方面實(shí)現(xiàn)了故障切換的功能,另一方面其內(nèi)部附加的工具腳本也可以實(shí)現(xiàn)多個(gè) Slave 的 read 負(fù)載均衡。

    龍華網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),龍華網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為龍華1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的龍華做網(wǎng)站的公司定做!
  • MMM提供了自動(dòng)和手動(dòng)兩種方式移除一組服務(wù)器中復(fù)制延遲較高的服務(wù)器的虛擬 ip,同時(shí)它還可以備份數(shù)據(jù),實(shí)現(xiàn)兩節(jié)點(diǎn)之間的數(shù)據(jù)同步等。由于 MMM 無法完全保證數(shù)據(jù)的一致性,所以 MMM 適用于對(duì)數(shù)據(jù)的一致性要求不是很高,但是又想大程度的保證業(yè)務(wù)可用性的場(chǎng)景。對(duì)于那些對(duì)數(shù)據(jù)的一致性要求很高的業(yè)務(wù),非常不建議采用 MMM 這種高可用架構(gòu)。

  • 關(guān)于 MMM 高可用架構(gòu)的說明如下:
    mmm_mon:監(jiān)控進(jìn)程,負(fù)責(zé)所有的監(jiān)控工作,決定和處理所有節(jié)點(diǎn)角色活動(dòng)。此腳本需要在監(jiān)管機(jī)上運(yùn)行。
    mmm_agent:運(yùn)行在每個(gè) MySQL 服務(wù)器上的代理進(jìn)程,完成監(jiān)控的探針工作和執(zhí)行簡(jiǎn)單的遠(yuǎn)端服務(wù)shezhi.cijiaoben需要在被監(jiān)管機(jī)上運(yùn)行。
    mmm_control:一個(gè)簡(jiǎn)單的腳本,提供管理 mmm_mond 進(jìn)程的命令。
    mysql-mmm 的監(jiān)管端會(huì)提供多個(gè)虛擬 IP (VIP),包括一個(gè)可寫 VIP,多個(gè)可讀 VIP,通過監(jiān)管的管理,這些 IP 會(huì)綁定在可用 MySQL 之上,當(dāng)某一臺(tái) MySQL 宕機(jī)時(shí),監(jiān)管會(huì)將 VIP 遷移至其他 MySQL。

部署環(huán)境

主機(jī) 操作系統(tǒng) IP地址 VIP地址
mysql-m1主服務(wù)器CentOS 7.4 x86_64192.168.100.200192.168.100.100(Writer)
mysql-m2主服務(wù)器CentOS 7.4 x86_64192.168.100.201192.168.100.100(Writer)
mysql-monitorCentOS 7.4 x86_64192.168.100.204
mysql-m3從服務(wù)器CentOS 7.4 x86_64192.168.100.202192.168.100.101(Reader)
mysql-m4從服務(wù)器CentOS 7.4 x86_64192.168.100.203192.168.100.102(Reader)

開始部署

  • 安裝所需軟件包,修改配置文件(四臺(tái)MySQL服務(wù)器操作一致)
  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 數(shù)據(jù)庫,開啟服務(wù)(和MySQL同源,搭建步驟相同)

    yum -y install mariadb-server mariadb
    systemctl stop firewalld.service
    setenforce 0
    systemctl start mariadb
  3. 修改數(shù)據(jù)庫主配置文件,發(fā)往其他主機(jī)并啟動(dòng)服務(wù)器
    # vim /etc/my.cnf
    [mysqld]
    log_error=/var/lib/mysql/mysql.err    #錯(cuò)誤日志文件位置
    log=/var/lib/mysql/mysql_log.log    #訪問日志文件位置
    log_slow_queries=/var/lib/mysql_slow_queris.log    #慢日志文件位置
    binlog-ignore-db=mysql,information_schema    #不生成二進(jìn)制文件的庫
    character_set_server=utf8    #使用的字符集
    log_bin=mysql_bin    #二進(jìn)制日志文件功能
    server_id=1
    log_slave_updates=true    #開啟同步
    sync_binlog=1
    auto_increment_increment=2
    auto_increment_offset=1
    # scp /etc/my.cnf root@192.168.100.201:/etc
    # scp /etc/my.cnf root@192.168.100.202:/etc
    # scp /etc/my.cnf root@192.168.100.203:/etc
    # 注:另外三臺(tái)主機(jī)的配置文件里的server_id要做修改,保證不一致即可
  • 配置主主復(fù)制(m1和m2兩臺(tái)主服務(wù)器互相同步)
  • 查看對(duì)方的日志文件名稱和偏移值

    mysql> show master status;
  • 主服務(wù)器互相提升訪問權(quán)限(m1、m2服務(wù)器分別執(zhí)行)

    # mysql-m1
    grant replication slave on *.* to 'replication'@'172.168.100.%' identified by '123456';
    # 使用賬戶為replication 密碼為123456
    change master to master_host='172.168.100.201',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
    # 當(dāng)在MariaDB-m1上執(zhí)行時(shí),master_host地址為MariaDB-m2地址
    ···
    # mysql-m2
    grant 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;
    # 當(dāng)在MariaDB-m2上執(zhí)行時(shí),master_host地址為MariaDB-m1地址
  • 開啟同步,查看服務(wù)器的主從狀態(tài)

    start slave;
    show slave status\G;
    # Slave_IO_Running: Yes
    # Slave_SQL_Running: Yes
  • 配置m3、m4服務(wù)器作為從服務(wù)器

    show master status;
    # 查看m1服務(wù)器的日志文件以及偏移值(注意日志文件和偏移值的改變)
    # m1和m2互相同步,在此只需執(zhí)行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上分別執(zhí)行
  • 分別查看m3和m4的主從狀態(tài)

    start slave;
    show slave status\G;
    # Slave_IO_Running: Yes
    # Slave_SQL_Running: Yes
  • 安裝配置MMM架構(gòu)
    前面我們使用wget配置了ALI云源并簡(jiǎn)易安裝 MariaDB 來代替 MySQL ,并搭建了主主同步,主從復(fù)制以便完成實(shí)驗(yàn),現(xiàn)在我們來完成MMM架構(gòu)

  • 安裝mysql-mmm,修改配置文件(五臺(tái)主機(jī)配置相同)

    # yum -y install mysql-mmm*     //前面我們配置了epel源,直接yum安裝
    # vim /etc/mysql-mmm/mmm_common.conf  //配置如下
    active_master_role      writer
    <host default>
    cluster_interface       ens33
    pid_path                /run/mysql-mmm-agent.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        replication
    replication_password    123456
    agent_user              mmm_agent
    agent_password          123456
    </host>
    <host db1>
    ip      172.168.100.200
    mode    master
    peer    db2
    </host>
    <host db2>
    ip      172.168.100.201
    mode    master
    peer    db1
    </host>
    <host db3>
    ip      172.168.100.202
    mode    slave
    </host>
    <host db4>
    ip      172.168.100.203
    mode    slave
    </host>
    <role writer>
    hosts   db1, db2
    ips     172.168.100.100
    mode    exclusive
    </role>
    <role reader>
    hosts   db3, db4
    ips     172.168.100.101, 172.168.100.102
    mode    balanced
    </role>
  • 快速為其他主機(jī)修改配置文件

    scp mmm_common.conf root@192.168.100.200:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.100.201:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.100.202:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.100.203:/etc/mysql-mmm/
  • 在主機(jī)上修改mmm_agent.conf文件的名稱

    # vim /etc/mysql-mmm/mmm_agent.conf
    this db1  //按照規(guī)劃分別修改為db1、db2、db3、db4
  • 在所有主機(jī)上對(duì)mmm_agent、mmm_moniter進(jìn)行授權(quán)

    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;  //重新加載權(quán)限表
  • 配置監(jiān)控主機(jī)(在mysql-monitor上配置)

    # vim /etc/mysql-mmm/mmm_mon.conf
    include mmm_common.conf
    <monitor>
    ip                  127.0.0.1
    pid_path            /run/mysql-mmm-monitor.pid
    bin_path            /usr/libexec/mysql-mmm
    status_path         /var/lib/mysql-mmm/mmm_mond.status
    ping_ips            172.168.100.200,172.168.100.201,172.168.100.202,172.168.100.203
    auto_set_online     10    #上線時(shí)間修改為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_monitor
    monitor_password    123456
    </host>
    debug 0
  • 關(guān)閉防火墻及增強(qiáng)×××

    systemctl disable firewalld.service
    systemctl stop firewalld.service
    setenforce 0
  • 啟動(dòng)服務(wù),查看各節(jié)點(diǎn)狀態(tài)
    systemctl start mysql-mmm-monitor.service
    # ERROR: Can't connect to monitor daemon!,如若出現(xiàn)報(bào)錯(cuò),可嘗試重啟服務(wù)解決
    mmm_control check all
    # 檢查監(jiān)控服務(wù)器對(duì)所有主機(jī)的監(jiān)控是否完善
    # 檢查結(jié)果全部OK,則部署完成

至此,MySQL-MMM已經(jīng)部署成功,進(jìn)一步的話,我們可以結(jié)合Amoeba實(shí)現(xiàn)讀寫分離,Writer 的虛擬VIP可以寫入數(shù)據(jù)庫,而 Reader 可以用來讀取數(shù)據(jù)。并通過Keepalived對(duì) monitor 服務(wù)器進(jìn)行雙機(jī)熱備。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站標(biāo)題:MySQL-MMM實(shí)現(xiàn)MySQL高可用-創(chuàng)新互聯(lián)
地址分享:http://muchs.cn/article20/dsseco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)品牌網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站建設(shè)做網(wǎng)站、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)