mysql進階(三)MHA高可用叢集

來源:互聯網
上載者:User

標籤:mysql mha

簡介:1、MHA目前在MySQL高可用方面是一個相對成熟的解決方案,是MySQL高可用環境下故障切換和主從提升的高可用軟體2、MHA能在短時間內完成故障切換,並且在最大程度上保證資料的一致性,以達到真正意義上的高可用3、MHA基於mysql協議,通過mysql主從或主主進行複製4、MHA官網:https://code.google.com/p/mysql-master-ha/軟體由兩部分組成:MHA Manager(關理節點)和MHA Node(資料節點)1、MHA Manager可以單獨部署在一台獨立的機器上管理多個master-slave叢集,也可以部署在一台slave節點上2、MHA Node運行在每台MySQL伺服器上3、MHA_Manager會定時探測叢集中的master節點,當master出現故障時,   它可以自動將最新資料的slave提升為新的master,然後將所有其他的slave重新指向新的master4、MHA配合半同步複製使用可以最大限度的保證資料安全性工作原理:1、從宕機崩潰的master儲存二進位日誌事件(binlog events)2、識別含有最新更新的slave3、應用差異的中繼日誌(relay log)到其他的slave4、應用從master儲存的二進位日誌事件(binlog events)5、提升一個slave為新的master6、使其他的slave串連新的master進行複製MHA工具:Manager工具包:masterha_check_ssh            #檢查MHA的SSH配置狀況,MHA強烈依賴ssh秘鑰驗證masterha_check_repl      #檢查MySQL複製狀況masterha_manager       #MHA主程式masterha_check_status     #檢測當前MHA運行狀態masterha_master_monitor    #檢測master是否宕機masterha_master_switch    #手動控制容錯移轉masterha_conf_host      #添加或刪除配置的server資訊masterha_stop      #MHA關閉工具Node工具包:save_binary_logs       #儲存和複製master的二進位日誌apply_diff_relay_logs     #識別差異的中繼日誌事件並將其差異的事件應用於其他的slavefilter_mysqlbinlog      #去除不必要的ROLLBACK事件(MHA已不再使用這個工具)purge_relay_logs       #清除中繼日誌(不會阻塞SQL線程)實驗環境:角色          ip地址        MHA_manager192.168.0.70Master         192.168.0.40Slave 192.168.0.60Slave          192.168.0.10安裝MHA:1、配置elpe和baseyum源2、yum -y localinstall mha4mysql-manager-0.55-0.el6.noarch.rpm mha4mysql-node-0.54-0.el6.noarch.rpm#非管理節點不用安裝mha4mysql-manager-0.55-0.el6.noarch.rpm3、配置ssh秘鑰驗證ssh-keygen                    #產生秘鑰,一直斷行符號就行cat id_rsa.pub >> authorized_keys  #將authorized_keys  id_rsa  id_rsa.pub 拷貝到所有節點的~/.ssh目錄下注意:不能禁止password登陸,否則會出現錯誤配置mysql主從(建議使用mysql5.5版本以上):master配置:vim /etc/my.cnf            #修改設定檔,添加如下內容[mysqld]                    #找到mysqld配置段log-bin=mysql-bin           #開啟二進位日誌relay-log=relay-bin    #開啟中繼日誌binlog_format=mixed    #使用混合模式的二進位日誌server-id= 1    #全域唯一的server-idinnodb-file-per-table=1    #使用單獨資料表空間檔案default-storage-engine=InnoDB #使用InnoDB儲存引擎autocommit=0  #關閉事務自動認可skip-name-resolve=1  #關閉主機名稱反解relay-log-purge=0           #不允許自動清理中繼日誌,因為MHA會依靠中繼日誌恢複資料service mysqld restart#重啟mysqlmysql> SHOW MASTER STATUS;#查看當前二進位日誌位置+------------------+----------+| File           | Position|+------------------+----------+|mysql-bin.000004 |  360  |#記住當前值+------------------+----------+mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ‘mha‘@‘192.168.0.%‘ IDENTIFIED BY ‘mha‘;mysql> GRANT ALL ON *.* TO ‘mymha‘@‘192.168.0.%‘ IDENTIFIED BY ‘mymha‘;#建立MHA監控使用者mysql> FLUSH PRIVILEGES;slave配置:vim /etc/my.cnf#修改設定檔,添加如下內容[mysqld]#找到mysqld配置段log-bin=mysql-bin#開啟二進位日誌relay-log=relay-bin#開啟中繼日誌binlog_format=mixed#使用混合模式的二進位日誌server-id= 2#全域唯一的server-idinnodb-file-per-table=1#使用單獨資料表空間檔案default-storage-engine=InnoDB#使用InnoDB儲存引擎autocommit=0#關閉事務自動認可skip-name-resolve=1#關閉主機名稱反解read-only=1#唯讀,對root使用者無效(slave節點必須設定)relay-log-purge=0#不允許自動清理中繼日誌,因為MHA會依靠中繼日誌恢複資料mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.0.10‘,MASTER_USER=‘mha‘,MASTER_PASSWORD=‘mha‘,     MASTER_LOG_FILE=‘mysql-bin.000004‘,MASTER_LOG_POS=360,MASTER_PORT=3306; #指定主伺服器mysql> START SLAVE;#啟動複製線程mysql> SHOW SLAVE STATUS\G;#查看從伺服器狀態Slave_IO_Running: Yes    #必須都為yesSlave_SQL_Running: Yesmysql> SELECT USER,PASSWORD,HOST FROM mysql.user;#查看mha是否同步成功MHA配置:    mkdir /etc/mha    mkdir /var/log/mha_app1vim /etc/mha/app1.cnf[server default]#MHA工作屬性定義(配置時不能有注釋)manager_workdir=/masterha/app1#MHA的工作目錄manager_log=/var/log/mha_app1/manager.log    #MHA的記錄檔password=mymha         #設定MHA監控使用者的密碼user=mymha               #設定監控使用者ping_interval=1         #設定監控主庫,健全狀態檢查時間remote_workdir=/masterha/app1     #設定遠端mysql在發生切換時binlog的儲存位置repl_password=mha    #設定複製使用者的密碼repl_user=mha          #設定複製環境中的複製使用者名稱ssh_user=root           #設定ssh的登入使用者名稱master_binlog_dir=/usr/local/mysql/data/ #二進位記錄檔存放路徑選擇性參數,指令碼都需要自己寫:shutdown_script=/masterha/scripts/shutdown.sh  #故障發生後關閉故障主機指令碼(用於防止腦裂)master_ip_failover_script=/masterha/scripts/automatic.sh #設定自動容錯移轉時執行的指令碼master_ip_online_change_script=/masterha/scripts/manual.sh #設定手動容錯移轉時執行的指令碼report_script=/masterha/scripts/twili.py   #設定發生切換後發送的警示指令碼[server1]hostname=192.168.0.40port=3306[server2]            #節點設定hostname=192.168.0.60    #主機地址port=3306    #連接埠check_repl_delay=0     #用防止master故障時,切換時slave有延遲candidate_master=1 #設定為候選master,如果沒有設定則在slave中選擇資料最新的成為master,如果設定了建議最好指向半同步節點[server3]hostname=192.168.0.10port=3306MHA使用:chmod 600 /etc/mha/app1.cnf#設定為只有root使用者對此檔案有許可權masterha_check_ssh --conf=/etc/mha/app1.cnf#檢查ssh秘鑰認證是否成功--conf:指定設定檔masterha_check_repl --conf=/etc/mha/app1.cnf#檢查mysql複製環境成功masterha_check_status --conf=/etc/mha/app1.cnf#檢查MHA運行狀態masterha_manager --conf=/etc/mha/app1.cnf#啟動MHA

本文出自 “自動化營運” 部落格,請務必保留此出處http://hongchen99.blog.51cto.com/12534281/1946716

mysql進階(三)MHA高可用叢集

聯繫我們

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