CentOS7 下面安裝Mysql MMM

來源:互聯網
上載者:User

標籤:blank   target   border   style   title   

參考文檔 
參考1
參考2

650) this.width=650;" title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; padding-right: 0px" border="0" alt="image" src="http://s3.51cto.com/wyfs02/M00/80/5F/wKioL1c-3ZXzdCnkAAEf2ignc0k532.png" "325" height="462" />

  • 二. 安裝作業系統

    迷你安裝CentOS7(64位)

  • 三. 配置作業系統

    • 1.關閉 selinux

      cat /etc/selinux/config SELINUX=disabled 
    • 2.關閉防火牆

      systemctl stop firewalldsystemctl disable firewalld
    • 3.配置NTP ,同步時間

    yum -y install ntpvi /etc/ntp.conf增加3個時間伺服器server s2d.time.edu.cn iburst #西南地區網路中心server s2e.time.edu.cn iburst #西北地區網路中心server s2f.time.edu.cn iburst #東北地區網路中心啟動ntp服務 systemctl start ntpd systemctl enable ntpd 查看狀態ntpq -p
  • 四. 安裝MySQL 5.6 (不是MariaDB)

    • 1.安裝 MySQL Repository

      rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
    • 2.安裝 MySQL Server, MySQL client

      yum install mysql-community-server
    • 3.開機自動啟動 MySQL

      systemctl enable mysqld
    • 4.啟動MySQL

      systemctl start mysqld
    • 5.MySQL 預設為空白密碼, 執行以下指令修改

      mysql_secure_installationmysql -u root -p #進入mysql 控制台,增加root使用者遠程登入的許可權GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY ‘GDkyUDJM6gr2Dx‘ WITH GRANT OPTION;flush privileges;
    • 6.修改mysql的儲存目錄

      • a. 停止mysql

        systemctl stop mysql
      • b. 遷移資料庫儲存目錄

        mkdir /opt/mysqlchown mysql:mysql /opt/mysqlmv /var/lib/mysql /opt/mysqlcd /opt/mysqlmv mysql data
      • c. 修改設定檔

        vim /etc/my.cnf#修改datadir和socket指向datadir=/opt/mysql/datasocket=/opt/mysql/mysql.sock#同時增加下面的代碼,這個是為了讓mysql client能夠連上mysql,避免Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock錯誤![mysql]socket=/opt/mysql/mysql.sock
      • d. 啟動mysql

        systemctl start mysql
    • 7.配置MySQL Relication

      • a. 要將添加的內容放在設定檔/etc/my.cnf的[mysqld]部分,如下:

        [mysqld]datadir=/opt/mysql/datasocket=/opt/mysql/mysql.sockuser=mysql#下面為新添加的內容read_only=1default-storage-engine=innodbreplicate-ignore-db=mysql,information_schema #不同步的資料庫,多個寫多行replicate-do-db=meerkat        #同步的資料庫,多個寫多行binlog-ignore-db=mysql,information_schema  #不需要記錄二進位日誌的資料庫,多個用逗號隔開binlog-do-db=meerkat           #需要記錄二進位日誌的資料庫,多個用逗號隔開log_slave_updates           #當一個主故障,另一個立即接管sync-binlog=1               #每條自動更新,安全性高,預設是0server-id           = 1 #server-id在每台伺服器上的值都是不一樣,在這裡依次為1、2、3、4。#這裡的記錄檔命名也每台機器不一樣,比如(mysql-master-001-bin.log,mysql-master-002-bin.log,mysql-slave-001-bin.log,mysql-slave-002-bin.log)log-bin             = /opt/mysql/log/mysql-master-001-bin.loglog_bin_index       = /opt/mysql/log/mysql-master-001-bin.log.indexrelay_log           = /opt/mysql/log/mysql-master-001-bin.relayrelay_log_index     = /opt/mysql/log/mysql-master-001-bin.relay.index# 記錄檔指定結束expire_logs_days    = 10max_binlog_size     = 100Mlog_slave_updates   = 1
      • b. 在/opt/mysql下增加log目錄

        cd /opt/mysqlmkdir logchown mysql:mysql log
      • d. 重新啟動mysql

        systemctl restart mysql
      • e. 檢查配置是否成功 
        1)登入mysql,執行show master status,看是否有如下輸出 
        +——————+———-+————–+——————+——————-+ 
        | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
        +——————+———-+————–+——————+——————-+ 
        | mysql-master-001-bin.000001 | 120 | | mysql | | 
        +——————+———-+————–+——————+——————-+ 
        2)到/var/log/mysql目錄下,看是否產生了類似mysql-master-001-bin.000001和mysql-master-001-bin.log.index的檔案。

      • f. 在4個mysql的伺服器上都修改一下。注意日誌命名每台機器都不一樣

  • 五. 建立同步資料庫需要的使用者 
    使用mysql-mmm時一共需要三個使用者: replication、mmm_agent和mmm_monitor(管理伺服器上用來監控cluster狀態的使用者,所以可以限定只能從管理伺服器登入)。使用下面三條命令建立這三個使用者並分配相應的許可權 
    所有的mysql 伺服器都運行一遍

GRANT REPLICATION CLIENT ON *.* TO ‘mmm_monitor‘@‘192.168.1.%‘ IDENTIFIED BY ‘monitor‘;GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent‘@‘192.168.1.%‘ IDENTIFIED BY ‘agent‘;GRANT REPLICATION SLAVE ON *.* TO ‘replication‘@‘192.168.1.%‘ IDENTIFIED BY ‘replication‘;flush privileges;
  • 六.設定複製機制(從master-001複製到master-002,從master-002複製到slave-001,slave-002)

    • 1.配置master-001作為主,複製到master-002

      • a.配置master-001 
        由於這裡是配置master-001做為來源資料,所以不需要設定change master 和 啟動slave進程
      • b.配置master-002(指定 change master 為 master-001) 
        #ssh到 master-002 伺服器mysql -u root -p #在mysql控制台錄入CHANGE MASTER TO MASTER_HOST=‘192.168.1.211‘,MASTER_USER=‘replication‘,MASTER_PASSWORD=‘replication‘,MASTER_PORT=3306,MASTER_LOG_FILE=‘mysql-master-002-bin.000001‘, MASTER_LOG_POS=260,MASTER_CONNECT_RETRY=10;#重設resetreset slave;#啟動slavestart slave;#查看slave狀態show slave status\G#結果如下mysql> show slave status\G*************************** 1. row ***************************       Slave_IO_State: Waiting for master to send event          Master_Host: 192.168.1.212          Master_User: replication          Master_Port: 3306        Connect_Retry: 10      Master_Log_File: mysql-master-002-bin.000001  Read_Master_Log_Pos: 120       Relay_Log_File: mysql-master-001-bin.000004        Relay_Log_Pos: 294Relay_Master_Log_File: mysql-master-002-bin.000001     Slave_IO_Running: Yes    Slave_SQL_Running: Yes      Replicate_Do_DB:  Replicate_Ignore_DB: mysql   Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:           Last_Errno: 0           Last_Error:         Skip_Counter: 0  Exec_Master_Log_Pos: 120      Relay_Log_Space: 472      Until_Condition: None       Until_Log_File:        Until_Log_Pos: 0   Master_SSL_Allowed: No   Master_SSL_CA_File:   Master_SSL_CA_Path:      Master_SSL_Cert:    Master_SSL_Cipher:       Master_SSL_Key:Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No        Last_IO_Errno: 0        Last_IO_Error:       Last_SQL_Errno: 0       Last_SQL_Error:Replicate_Ignore_Server_Ids:     Master_Server_Id: 2          Master_UUID: 3d3b9f4f-f74f-11e5-9a30-005056b324c4     Master_Info_File: /opt/mysql/data/master.info            SQL_Delay: 0  SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it   Master_Retry_Count: 86400          Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:       Master_SSL_Crl:   Master_SSL_Crlpath:   Retrieved_Gtid_Set:    Executed_Gtid_Set:        Auto_Position: 01 row in set (0.00 sec)

      注意: 
      Slave_IO_Running: Yes 
      Slave_SQL_Running: Yes

      • b.配置slave-001

        #ssh到 slave-001 伺服器 mysql -u root -p #在mysql控制台錄入CHANGE MASTER TO MASTER_HOST=‘192.168.1.212‘,MASTER_USER=‘replication‘,MASTER_PASSWORD=‘replication‘,MASTER_PORT=3306,MASTER_LOG_FILE=‘mysql-slave-001-bin.000001‘, MASTER_LOG_POS=260,MASTER_CONNECT_RETRY=10;#重設resetreset slave;#啟動slavestart slave;#查看slave狀態show slave status\G#結果如下mysql> show slave status\G
      • c.配置slave-002

        #ssh到 slave-002 伺服器 mysql -u root -p #在mysql控制台錄入CHANGE MASTER TO MASTER_HOST=‘192.168.1.212‘,MASTER_USER=‘replication‘,MASTER_PASSWORD=‘replication‘,MASTER_PORT=3306,MASTER_LOG_FILE=‘mysql-slave-002-bin.000001‘, MASTER_LOG_POS=260,MASTER_CONNECT_RETRY=10;#重設resetreset slave;#啟動slavestart slave;#查看slave狀態show slave status\G#結果如下mysql> show slave status\G      
      • d.測試複製機制 
        在master-001 上,增刪改 資料表空間,表,欄位,內容 可以同步到 master-002,slave-001,slave-002
    • 2.配置master-002作為主,複製到master-001

      • a.配置master-001(指定 change master 為 master-002) 
        #ssh到 master-001 伺服器mysql -u root -p #在mysql控制台錄入CHANGE MASTER TO MASTER_HOST=‘192.168.1.212‘,MASTER_USER=‘replication‘,MASTER_PASSWORD=‘replication‘,MASTER_PORT=3306,MASTER_LOG_FILE=‘mysql-master-001-bin.000001‘, MASTER_LOG_POS=260,MASTER_CONNECT_RETRY=10;#重設resetreset slave;#啟動slavestart slave;#查看slave狀態show slave status\G#結果如下mysql> show slave status\G

      這樣就完成了master-001 和 master-002的相互複製,並且從master-002複製到slave-001 和 slave-002.

    • 2.測試複製機制是否成功。 
      • a.在master-001中建立database ,確認master-002,slave-001 和 slave-002中都同步複製。
      • b.在master-002中建立database ,確認master-001,slave-001 和 slave-002中都同步複製。
  • 七.安裝MMM(http://mysql-mmm.org/)

    • 1.安裝epel擴充包 
      CentOS軟體倉庫預設是不含這些軟體的,必須要有epel這個包的支援。故我們必須先安裝epel

      wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpmrpm -ivh epel-release-7-5.noarch.rpmyum install mysql-mmm-monitoryum install mysql-mmm-agent#用yum安裝的 mysql-mmm組件啟動的時候會出錯。所以用下面的tar.gz檔案來安裝yum erase mysql-mmm-monitor yum erase mysql-mmm-agent
    • 2.在monitor(192.168.1.210) 上安裝監控程式

      cd /tmpwget http://pkgs.fedoraproject.org/repo/pkgs/mysql-mmm/mysql-mmm-2.2.1.tar.gz/f5f8b48bdf89251d3183328f0249461e/mysql-mmm-2.2.1.tar.gztar -xzvf mysql-mmm-2.2.1.tar.gzcd mysql-mmm-2.2.1.tar.gzmake install
    • 3.在資料庫伺服器(192.168.1.211-214)上安裝代理

      cd /tmpwget http://pkgs.fedoraproject.org/repo/pkgs/mysql-mmm/mysql-mmm-2.2.1.tar.gz/f5f8b48bdf89251d3183328f0249461e/mysql-mmm-2.2.1.tar.gztar -xzvf mysql-mmm-2.2.1.tar.gzcd mysql-mmm-2.2.1.tar.gzmake install
    • 4.配置MMM

      • a.編輯/etc/mysql-mmm/mmm_common.conf 
        完成安裝後,所有的設定檔都放到了/etc/mysql-mmm/下面。管理伺服器和資料庫伺服器上都要包含一個共同的檔案mmm_common.conf,內容如下:

        active_master_role writer<host default>    cluster_interface  eno16777984  #網卡裝置    pid_path     /var/run/mmm_agentd.pid    bin_path     /usr/lib/mysql-mmm/ #這裡要確認是否下面有agent,monitor,tools的目錄。否則無法產生vip    replication_user        replication    replication_password    replication    agent_user              mmm_agent    agent_password          agent</host><host db1>    ip      192.168.1.211    mode    master    peer    db2</host><host db2>    ip      192.168.1.212    mode    master    peer    db1</host><host db3>    ip      192.168.1.213    mode    slave</host><host db4>    ip      192.168.1.214    mode    slave</host><role writer>    hosts   db1, db2    ips     192.168.1.220    mode    exclusive</role><role reader>    hosts   db2, db3, db4    ips     192.168.1.221, 192.168.1.222, 192.168.1.223    mode    balanced</role>

        通過scp命令分別複製到monitor-001、master-001、master-002、slave-001和slave-002共五台機器上。

      • b. 編輯 4台mysql節點機上的/etc/mysql-mmm/mmm_agent.conf 
        在資料庫伺服器上,還有一個mmm_agent.conf需要修改,其內容是:

        include mmm_common.conf# The ‘this‘ variable refers to this server.  Proper operation requires# that ‘this‘ server (db1 by default), as well as all other servers, have the# proper IP addresses set in mmm_common.conf.this db1

        最後一行的db1,在不同的資料庫伺服器上要分別改為db2、db3和db4,否則代理就會無法啟動。

      • c. 編輯 monitor主機上的/etc/mysql-mmm/mmm_mon.conf 
        在monitor-001上配置mmm_mon.conf

        include mmm_common.conf<monitor>    ip                  127.0.0.1   #為了安全性,設定只在本機監聽,mmm_mond 預設監聽9988     pid_path            /var/run/mmm_mond.pid    bin_path            /usr/lib/mysql-mmm/    status_path         /var/lib/misc/mmm_mond.status    ping_ips            192.168.1.211, 192.168.1.212, 192.168.1.213, 192.168.1.214       #用於測試網路可用性 IP 位址列表,只要其中有一個地址 ping 通,就代表網路正常,這裡不要寫入本機地址     #flap_duration 3600 #抖動的時間範圍,單位秒,這兩個參數考慮情況添加     # flap_count 3 #在抖動的時間範圍內,最大的抖動次數     auto_set_online      60#是否設定自動上線,如果該值大於0,抖動的主機在抖動的時間範圍過後,則設定自動上線    # 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</monitor><host default>    monitor_user        mmm_monitor    monitor_password    monitor</host>
    • 5.自動啟動agent 和 monitor

      • a. 在monitor上啟動monitor

        systemctl enable mysql-mmm-monitorsystemctl start mysql-mmm-monitor
      • b. 在4個資料庫伺服器上啟動agent

         systemctl enable mysql-mmm-agent systemctl starat mysql-mmm-agent

        如果出現Configuration file /etc/mysql-mmm/mmm_common.conf is world readable!這種錯誤,需要查看/etc/mysql-mmm/mmm_common.conf檔案的許可權,應該是 chmod 640 /etc/mysql-mmm/mmm_common.conf 
        叢集中所有設定檔的許可權最好都設定為640,否則啟動 MMM 服務的時候可能出錯

  • 八. MMM啟動順序:先啟動monitor,再啟動 agent

  • 九. 問題和解決辦法

    • 1.在monitor主機上使用 systemctl start mysql-mmm-monitor 無法分配vip。而通過/etc/init.d/mysql-mmm-monitor start則可以分配vip 
      • 解決辦法 
        http://blog.csdn.net/remote_roamer/article/details/49869395
        由於缺少環境變數,導致無法啟用vip。 
        那麼就在 /etc/rc.d/init.d/mysql-mmm-monitor的指令檔裡面最上面,加入 
        source /root/.bash_profile
    • 2.vip漂移後,無法ping通192.168.1.200

      • 問題描述: 
        當 master-001發生故障,導致DB不可用時,VIP會自動漂移到master-002上,以實現高可用。但出現了一個問題,由於ARP老化時間過長,導致漂移過去的VIP不可用,也無法ping通。也就是說,MySQL-MMM沒有考慮到ARP老化時間過長的情況而採取強刷ARP的方式。
      • a.解決辦法1

        • 同時修改master-001 和 master-002上的代碼(這個沒測試成功) 
          修改檔案 
          /usr/share/perl5/vendor_perl/MMM/Agent/Helpers/Actions.pm

        vim /usr/share/perl5/vendor_perl/MMM/Agent/Helpers/Actions.pm

        在sub configure_ip($$)程式碼片段裡面的_exit_ok();前面加入以下代碼

      #這裡是解決vip位移後,無法ping通。原因是arp 老化時間過長,這裡強制重新整理arpmy $getway = `/sbin/route | awk ‘default/ (print $2)‘` `/sbin/arping -I $if -c 3 -s $ip $getway `; #配置結束

      650) this.width=650;" alt="" src="http://img.blog.csdn.net/20160405123255733" />

      • b.解決辦法2 
        在vip漂移到的主機上手工重設arping

        arping -I eno16777984 -c 3 -s 192.168.1.220 192.168.1.1

      • c.解決辦法3 
        在master-001 和 master-002 上使用shell指令碼來重新整理(這個方法正常運行)

        vim /root/refresh_vip.sh#增加如下內容:#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbinMMM_COMM_CONF="/etc/mysql-mmm/mmm_common.conf"ETH_NAME=`awk ‘/cluster_interface/{print $2}‘ ${MMM_COMM_CONF}`VIP_ADDR=`grep -A 2 ‘<role writer>‘ ${MMM_COMM_CONF} | awk ‘/ips/{print $2}‘`GETWAY_ADDR=`/sbin/route | awk ‘/default/ {print $2}‘`if [[ -n `/sbin/ip addr show ${ETH_NAME} | grep ${VIP_ADDR}` ]]; then    /sbin/arping -I ${ETH_NAME} -c 3 -s ${VIP_ADDR} ${GETWAY_ADDR} >/dev/null 2>&1fi

        放入crontab中運行

        crontab -e* * * * * sleep 10; /root/refresh_vip.sh >/dev/null 2>&1* * * * * sleep 20; /root/refresh_vip.sh >/dev/null 2>&1* * * * * sleep 30; /root/refresh_vip.sh >/dev/null 2>&1* * * * * sleep 40; /root/refresh_vip.sh >/dev/null 2>&1* * * * * sleep 50; /root/refresh_vip.sh >/dev/null 2>&1

CentOS7 下面安裝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.