MySQL之MHA+keepalived方案示範(二)

來源:互聯網
上載者:User

標籤:登入   failover   三次   解壓   fail   The   read   使用者   val   

一、配置MHA工作環境

192.168.2.130機器操作:
1.1.建立MHA的工作目錄,並且建立相關設定檔
(在軟體包解壓後的目錄裡面有範例設定檔)。指的是可以下載 mha4mysql-manager-0.56.tar.gz解壓後找到範例設定檔

[[email protected] ~]# ifconfig eth1|awk -F ‘[ :]+‘ ‘NR==2{print $4}‘192.168.2.130[[email protected] ~]# ll /usr/bin/masterha*-rwxr-xr-x 1 root root 1995 Apr  1  2014 /usr/bin/masterha_check_repl-rwxr-xr-x 1 root root 1779 Apr  1  2014 /usr/bin/masterha_check_ssh-rwxr-xr-x 1 root root 1865 Apr  1  2014 /usr/bin/masterha_check_status-rwxr-xr-x 1 root root 3201 Apr  1  2014 /usr/bin/masterha_conf_host-rwxr-xr-x 1 root root 2517 Apr  1  2014 /usr/bin/masterha_manager-rwxr-xr-x 1 root root 2165 Apr  1  2014 /usr/bin/masterha_master_monitor-rwxr-xr-x 1 root root 2373 Apr  1  2014 /usr/bin/masterha_master_switch-rwxr-xr-x 1 root root 5171 Apr  1  2014 /usr/bin/masterha_secondary_check-rwxr-xr-x 1 root root 1739 Apr  1  2014 /usr/bin/masterha_stop[[email protected] ~]# cp -arp /usr/bin/masterha_* /usr/local/bin/[[email protected] bin]# cd /usr/bin/[[email protected] bin]# find ./ -name apply_diff_relay_logs./apply_diff_relay_logs[[email protected] bin]# find ./ -name filter_mysqlbinlog./filter_mysqlbinlog[[email protected] bin]# find ./ -name purge_relay_logs./purge_relay_logs[[email protected] bin]# find ./ -name save_binary_logs./save_binary_logscp /usr/bin/save_binary_logs /usr/local/bin/cp /usr/bin/purge_relay_logs /usr/local/bin/cp /usr/bin/filter_mysqlbinlog /usr/local/bin/cp /usr/bin/apply_diff_relay_logs /usr/local/bin/ln -s /usr/local/mysql/bin/mysql  /usr/bin/mysqlln -s /usr/local/mysql/bin/mysqlbinlog  /usr/bin/mysqlbinlog 
[[email protected] bin]# cd /usr/local/bin/You have new mail in /var/spool/mail/root[[email protected] bin]# lsapply_diff_relay_logs  filter_mysqlbinlog  masterha_check_ssh  masterha_conf_host  masterha_master_monitor  masterha_secondary_check  save_binary_logsmasterha_check_repl  masterha_check_status  masterha_manager masterha_master_switch   masterha_stop    purge_relay_logs

MHA設定檔如下

[[email protected] ~]#  mkdir -p /etc/masterha[[email protected] ~]# cat  /etc/masterha/app1.cnf[server default]manager_log=/var/log/masterha/app1/manager.logmanager_workdir=/var/log/masterha/app1.logmaster_binlog_dir=/data/mysql/logs/bin-logmaster_ip_failover_script=/usr/local/bin/master_ip_failovermaster_ip_online_change_script=/usr/local/bin/master_ip_online_changepassword=123456ping_interval=1remote_workdir=/tmprepl_password=123456repl_user=repmhareport_script=/usr/local/bin/send_reportsecondary_check_script=/usr/local/bin/masterha_secondary_check -s server03 -s server02 --user=root --master_host=server02 --master_ip=192.168.2.128 --master_port=3306shutdown_script=""ssh_port=12570ssh_user=rootuser=monitor[server1]hostname=192.168.2.128port=3306[server2]candidate_master=1check_repl_delay=0hostname=192.168.2.129port=3306[server3]hostname=192.168.2.130port=3306

1.2設定檔參數介紹:

[[email protected] ~]# cat /etc/masterha/app1.cnf

[server default]manager_workdir=/var/log/masterha/app1.log                           //設定manager的工作目錄manager_log=/var/log/masterha/app1/manager.log                  //設定manager的日誌master_binlog_dir=/data/mysql                                                   //設定master 儲存binlog的位置,以便MHA可以找到master的日誌,我這裡的也就是mysql的資料目錄#master_ip_failover_script= /usr/local/bin/master_ip_failover //設定自動failover時候的切換指令碼master_ip_online_change_script= /usr/local/bin/master_ip_online_change  //設定手動切換時候的切換指令碼password=123456                                                                        //設定mysql中root使用者的密碼,這個密碼是前文中建立監控使用者的那個密碼user=root                                                                                       //設定監控使用者rootping_interval=1                                                                            //設定監控主庫,發送ping包的時間間隔,預設是3秒,嘗試三次沒有回應的時候自動進行railoverremote_workdir=/tmp                                                                 //設定遠端mysql在發生切換時binlog的儲存位置repl_password=123456                                                            //設定複製使用者的密碼repl_user=repl                                                                           //設定複製環境中的複製使用者名稱report_script=/usr/local/bin/send_report                               //設定發生切換後發送的警示的指令碼secondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02 --user=root --master_host=server02 --master_ip=192.168.2.128 --master_port=3306                                                                                                                               //一旦MHA到server02的監控之間出現問題,MHA Manager將會嘗試從server03登入到server02shutdown_script=""                                                              //設定故障發生後關閉故障主機指令碼(該指令碼的主要作用是關閉主機放在發生腦裂,這裡沒有使用)ssh_user=root                                                                      //設定ssh的登入使用者名稱ssh_port=12570                                                                  //設定ssh的登入連接埠。預設是22[server1]hostname=192.168.2.128port=3306[server2]hostname=192.168.2.129port=3306candidate_master=1                                                                                            //設定為候選master,如果設定該參數以後,發生主從切換以後將會將此從庫提升為主庫,即使這個主庫不是叢集中事件最新的slavecheck_repl_delay=0                                                        //預設情況下如果一個slave落後master 100M的relay logs的話,MHA將不會選擇該slave作為一個新的master,因為對於這個slave的恢複需要花費很長時間,通過設定check_repl_delay=0,MHA觸發切換在選擇一個新的master的時候將會忽略複製延時,這個參數對於設定了candidate_master=1的主機非常有用,因為這個候選主在切換的過程中一定是新的master[server3]hostname=192.168.2.130port=3306

注意:
##master_ip_failover_script= /usr/local/bin/master_ip_failover
MHA的Failover兩種方式:一種是虛擬IP地址,一種是全域設定檔。MHA並沒有限定使用哪一種方式,而是讓使用者自己選擇,虛擬IP地址的方式會牽扯到其它的軟體,比如keepalive軟體,而且還要修改指令碼
master_ip_failover。
所以先暫時注釋master_ip_failover_script= /usr/local/bin/master_ip_failover這個選項。後面引入keepalived後和修改該指令碼以後再開啟該選項

二、設定relay log的清除方式(在每個slave節點上):

2.1三個節點伺服器本地hosts解析

[[email protected] ~]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.2.128   server02192.168.2.129   server03192.168.2.130   server04
在slave master03 192.168.2.129操作:[[email protected] ~]# mysql -uroot -p123456 -e "set global relay_log_purge=0"mysql: [Warning] Using a password on the command line interface can be insecure.[[email protected] ~]# 在slave master04 192.168.2.130操作:[[email protected] ~]# mysql -uroot -p123456 -e "set global relay_log_purge=0"mysql: [Warning] Using a password on the command line interface can be insecure.[[email protected] ~]# 

注意:
MHA在發生切換的過程中,從庫的恢複過程中依賴於relay log的相關資訊,所以這裡要將relay log的自動清除設定為OFF,採用手動清除relay log的方式。在預設情況下,從伺服器上的中繼日誌會在SQL線程執行完畢後被自動刪除。但是在MHA環境中,這些中繼日誌在恢複其他從伺服器時可能會被用到,因此需要禁用中繼日誌的自動刪除功能。定期清除中繼日誌需要考慮到複製延時的問題。在ext3的檔案系統下,刪除大的檔案需要一定的時間,會導致嚴重的複製延時。為了避免複製延時,需要暫時為中繼日誌建立永久連結,因為在linux系統中通過永久連結刪除大檔案速度會很快。(在mysql資料庫中,刪除大表時,通常也採用建立永久連結的方式)

2.2設定定期清理relay指令碼(兩台slave伺服器):
在slave sever03 192.168.2.129操作:

[[email protected] ~]# cat /data/scripts/purge_relay_log.sh#!/bin/bashuser=rootpasswd=123456port=3306log_dir=‘/data/masterha/log‘work_dir=‘/data‘purge=‘/usr/local/bin/purge_relay_logs‘if [ ! -d $log_dir ]then   mkdir $log_dir -pfi$purge --user=$user --password=$passwd --disable_relay_log_purge --port=$port --workdir=$work_dir >> $log_dir/purge_relay_logs.log 2>

在slave server04 192.168.2.130操作跟上面是一樣的,這裡不示範了。

指令碼中參數介紹:

--user mysql                      //使用者名稱--password mysql                  //密碼--port                            //連接埠號碼--workdir                         //指定建立relay log的永久連結的位置,預設是/var/tmp,由於系統不同分區建立永久連結檔案會失敗,故需要執行永久連結具體位置,成功執行指令碼後,永久連結的中繼記錄檔被刪除--disable_relay_log_purge         //預設情況下,如果relay_log_purge=1,指令碼會什麼都不清理,自動結束,通過設定這個參數,當relay_log_purge=1的情況下會將relay_log_purge設定為0。清理relay log之後,最後將參數設定為OFF。

purge_relay_logs指令碼刪除中繼日誌不會阻塞SQL線程。下面我們手動執行看看什麼情況:

[[email protected] ~]# purge_relay_logs --user=root --password=123456 --port=3306 -disable_relay_log_purge --workdir=/data/2018-07-01 11:53:16: purge_relay_logs script started. Found relay_log.info: /data/mysql/relay-log.info Opening /data/mysql/logs/relay-log/relay-bin.000001 .. Opening /data/mysql/logs/relay-log/relay-bin.000002 .. Executing SET GLOBAL relay_log_purge=1; FLUSH LOGS; sleeping a few seconds so that SQL thread can delete older relay log files (if it keeps up); SET GLOBAL relay_log_purge=0; .. ok.2018-07-01 11:53:20: All relay log purging operations succeeded.[[email protected] ~]# 

MySQL之MHA+keepalived方案示範(二)

聯繫我們

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