生活随笔
收集整理的這篇文章主要介紹了
MySQL MHA 安装
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MHA 安裝手冊
MHA軟件由兩部分組成,Manager工具包和Node工具包,具體的說明如下。
Manager工具包主要包括以下幾個工具:
masterha_check_ssh 檢查MHA的SSH配置狀況
masterha_check_repl 檢查MySQL復制狀況
masterha_manger 啟動MHA
masterha_check_status 檢測當前MHA運行狀態
masterha_master_monitor 檢測master是否宕機
masterha_master_switch 控制故障轉移(自動或者手動)
masterha_conf_host 添加或刪除配置的server信息
Node工具包(這些工具通常由MHA Manager的腳本觸發,無需人為操作)主要包括以下幾個工具:
save_binary_logs 保存和復制master的二進制日志
apply_diff_relay_logs 識別差異的中繼日志事件并將其差異的事件應用于其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用這個工具)
purge_relay_logs 清除中繼日志(不會阻塞SQL線程)
1.部署MHA
接下來部署MHA,具體的搭建環境如下(所有操作系統均為centos 6.2 64bit,不是必須,server03和server04是server02的從,):
角色 ip地址 主機名 server_id 類型
Monitor host 10.10.10.155 db-manager - 監控復制組
Master 10.10.10.156 db-master 1 寫入
Candicate master 10.10.10.157 db-slave01 2 讀
Slave 10.10.10.158 db-slave02 3 讀
其中master對外提供寫服務,備選master(實際的slave,主機名server03)提供讀服務,
slave也提供相關的讀服務,一旦master宕機,將會把備選master提升為新的master,slave指向新的master
(1)在所有節點安裝MHA node所需的perl模塊(DBD:mysql),安裝腳本如下:(run this shell )cat install.sh #!/bin/bashwget http://xrl.us/cpanm --no-check-certificatemv cpanm /usr/binchmod 755 /usr/bin/cpanmcat > /root/list << EOFinstall DBD::mysqlEOFfor package in `cat /root/list`docpanm $packagedone 如果有安裝epel源,也可以使用yum安裝安裝以下perl 支持包yum install perl-DBD-MySQL -yyum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -yyum install gettext-devel -yyum install perl-CPAN -y在所有的節點安裝mha node:tar xf mha4mysql-node-0.56.tar.gzcd mha4mysql-node-0.56perl Makefile.PLmake && make install安裝完成后,會生成node 所需的工具包[root@bd-slave02 mha4mysql-node-0.56]# ll /usr/local/bin
總用量 44
-r-xr-xr-x 1 root root 16367 1月 31 11:33 apply_diff_relay_logs
-r-xr-xr-x 1 root root 4807 1月 31 11:33 filter_mysqlbinlog
-r-xr-xr-x 1 root root 8261 1月 31 11:33 purge_relay_logs
-r-xr-xr-x 1 root root 7525 1月 31 11:33 save_binary_logs2.安裝MHA ManagerMHA Manager中主要包括了幾個管理員的命令行工具,例如master_manger,master_master_switch等。MHA Manger也依賴于perl模塊,具體如下:(1)安裝MHA Node軟件包之前需要安裝依賴。我這里使用yum完成,沒有epel源的可以使用上面提到的腳本(epel源安裝也簡單)。注意:在MHA Manager的主機也是需要安裝MHA Node。rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install perl-DBD-MySQL -y
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y安裝MHA Manager軟件包:[root@bd-master download]# tar xf mha4mysql-manager-0.56.tar.gz
[root@bd-master download]# cd mha4mysql-manager-0.56/
[root@bd-master mha4mysql-manager-0.56]# perl Makefile.PL
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI ...loaded. (1.627)
- DBD::mysql ...loaded. (4.023)
- Time::HiRes ...loaded. (1.9725)
- Config::Tiny ...loaded. (2.14)
- Log::Dispatch ...loaded. (2.41)
- Parallel::ForkManager ...loaded. (1.18)
- MHA::NodeConst ...missing. (注意: 在manager 節點,也需要安裝node ,安裝完后,再回來安裝manager cefp )
==> Auto-install the 1 mandatory module(s) from CPAN? [y] y安裝完成后,會生成以下文件[root@bd-master mha4mysql-manager-0.56]# ll /usr/local/bin
總用量 84
-r-xr-xr-x 1 root root 16367 1月 31 11:46 apply_diff_relay_logs
-r-xr-xr-x 1 root root 4807 1月 31 11:46 filter_mysqlbinlog
-r-xr-xr-x 1 root root 1995 1月 31 11:47 masterha_check_repl
-r-xr-xr-x 1 root root 1779 1月 31 11:47 masterha_check_ssh
-r-xr-xr-x 1 root root 1865 1月 31 11:47 masterha_check_status
-r-xr-xr-x 1 root root 3201 1月 31 11:47 masterha_conf_host
-r-xr-xr-x 1 root root 2517 1月 31 11:47 masterha_manager
-r-xr-xr-x 1 root root 2165 1月 31 11:47 masterha_master_monitor
-r-xr-xr-x 1 root root 2373 1月 31 11:47 masterha_master_switch
-r-xr-xr-x 1 root root 5171 1月 31 11:47 masterha_secondary_check
-r-xr-xr-x 1 root root 1739 1月 31 11:47 masterha_stop
-r-xr-xr-x 1 root root 8261 1月 31 11:46 purge_relay_logs
-r-xr-xr-x 1 root root 7525 1月 31 11:46 save_binary_logs
[root@bd-master mha4mysql-manager-0.56]# 拷貝腳本到/usr/local/bin
[root@bd-master mha4mysql-manager-0.56]# ll samples/scripts
總用量 32
-rwxr-xr-x 1 4984 users 3648 4月 1 2014 master_ip_failover
-rwxr-xr-x 1 4984 users 9870 4月 1 2014 master_ip_online_change
-rwxr-xr-x 1 4984 users 11867 4月 1 2014 power_manager
-rwxr-xr-x 1 4984 users 1360 4月 1 2014 send_report
[root@bd-master mha4mysql-manager-0.56]# cp samples/scripts/* /usr/local/bin
[root@bd-master mha4mysql-manager-0.56]# 3.配置SSH登錄無密碼驗證(節抄自以前配置oracle rac) 設置SSH,1).在主節點RAC1上以grid,oracle用戶身份生成用戶的公匙和私匙# su - oracle$ mkdir ~/.ssh$ ssh-keygen -t rsa$ ssh-keygen -t dsa2).在副節點RAC2上執行相同的操作,確保通信無阻# ping rac1-eth0# ping rac1-eth1# su - oracle$ mkdir ~/.ssh$ ssh-keygen -t rsa$ ssh-keygen -t dsa3).在主節點RAC1上oracle用戶執行以下操作$ touch ~/.ssh/authorized_keys $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys#將RAC2的加入$ ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys$ ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys4).主節點RAC1上執行檢驗操作$ ssh rac1 date$ ssh rac2 date$ ssh rac1-private date$ ssh rac2-private date5).在副節點RAC2上執行檢驗操作$ ssh rac1 date$ ssh rac2 date$ ssh rac1-private date$ ssh rac2-private date4.編譯安裝mysql 主從架構見mysql 主從架構安裝.log5.配置半同步首先加載插件因用戶需執行INSTALL PLUGIN, SET GLOBAL, STOP SLAVE和START SLAVE操作,所以用戶需有SUPER權限。主:mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';從:mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';查看插件是否加載成功有兩種方式1. mysql> show plugins;rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL 2. mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';+----------------------+---------------+| PLUGIN_NAME | PLUGIN_STATUS |+----------------------+---------------+| rpl_semi_sync_master | ACTIVE |+----------------------+---------------+1 row in set (0.00 sec)啟動半同步復制在安裝完插件后,半同步復制默認是關閉的,這時需設置參數來開啟半同步主:mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;從:mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;以上的啟動方式是在命令行操作,也可寫在配置文件中。主:plugin-load=rpl_semi_sync_master=semisync_master.sorpl_semi_sync_master_enabled=1rpl_semi_sync_master_timeout=1000從:plugin-load=rpl_semi_sync_slave=semisync_slave.sorpl_semi_sync_slave_enabled=1在有的高可用架構下,master和slave需同時啟動,以便在切換后能繼續使用半同步復制plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"rpl-semi-sync-master-enabled = 1rpl-semi-sync-slave-enabled = 1重啟從上的IO線程mysql> STOP SLAVE IO_THREAD;mysql> START SLAVE IO_THREAD;如果沒有重啟,則默認還是異步復制,重啟后,slave會在master上注冊為半同步復制的slave角色。這時候,主的error.log中會打印如下信息:2016-08-05T10:03:40.104327Z 5 [Note] While initializing dump thread for slave with UUID <ce9aaf22-5af6-11e6-850b-000c2988bad2>, found a zombie dump thread with the same UUID. Master is killing the zombie dump thread(4).2016-08-05T10:03:40.111175Z 4 [Note] Stop asynchronous binlog_dump to slave (server_id: 2)2016-08-05T10:03:40.119037Z 5 [Note] Start binlog_dump to master_thread_id(5) slave_server(2), pos(mysql-bin.000003, 621)2016-08-05T10:03:40.119099Z 5 [Note] Start semi-sync binlog_dump to slave (server_id: 2), pos(mysql-bin.000003, 621)查看半同步是否在運行主:mysql> show status like 'Rpl_semi_sync_master_status';+-----------------------------+-------+| Variable_name | Value |+-----------------------------+-------+| Rpl_semi_sync_master_status | ON |+-----------------------------+-------+1 row in set (0.00 sec)從:mysql> show status like 'Rpl_semi_sync_slave_status';+----------------------------+-------+| Variable_name | Value |+----------------------------+-------+| Rpl_semi_sync_slave_status | ON |+----------------------------+-------+1 row in set (0.20 sec)這兩個變量常用來監控主從是否運行在半同步復制模式下。6.配置MHA5.1 配置文件修改創建MHA的工作目錄,并且創建相關配置文件(在軟件包解壓后的目錄里面有樣例配置文件)。# mkdir -p /etc/masterha# cp mha4mysql-manager-0.53/samples/conf/app1.cnf #配置文件[root@bd-master ~]# cat /etc/masterhamasterha/ masterha_default.cnf [root@bd-master ~]# cat /etc/masterha/app1.cnf [server default]manager_workdir=/var/log/masterha/app1manager_log=/var/log/masterha/app1/manager.logmaster_binlog_dir=/data/mysqlmaster_ip_failover_script= /usr/local/bin/master_ip_failovermaster_ip_online_change_script= /usr/local/bin/master_ip_online_changeuser=monitorpassword=monitor_passwordping_interval=1remote_workdir=/tmprepl_user=replrepl_password=repl_passwordreport_script=/usr/local/bin/send_reportsecondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02shutdown_script=""ssh_user=root[server1]hostname=10.10.10.156port=3301[server2]hostname=10.10.10.157port=3301candidate_master=1check_repl_delay=0[server3]hostname=10.10.10.158port=33015.2設置relay log 清除方式(在每個slave)#mysql -uroot -p -e 'set global relay_log_purge=0'MHA節點中包含了pure_relay_logs命令工具,它可以為中繼日志創建硬鏈接,執行SET GLOBAL relay_log_purge=1,等待幾秒鐘以便SQL線程切換到新的中繼日志,再執行SET GLOBAL relay_log_purge=0。5.3 設置定時清理relay 腳本# mkdir /data/masterha/log -p# mkdir /opt/shell# cat /opt/shell/purge_relay_log.sh #!/bin/bashuser=monitorpasswd=monitor_passwordport=3301log_dir='/data/masterha/log'work_dir='/data'purge='/usr/local/bin/purge_relay_logs'if [ ! -d $log_dir ]thenmkdir $log_dir -pfi$purge --user=$user --password=$passwd --disable_relay_log_purge --port=$port --workdir=$work_dir >> $log_dir/purge_relay_logs.log 2>&1#定期#crontab -l0 4 * * * /bin/bash /opt/shell/purge_relay_log.sh(這里我使用了monitor 用戶,注意權限問題,)5.4 檢查
5.4.1 檢查MHA Manger到所有MHA Node的SSH連接狀態:masterha_check_ssh --conf=/etc/masterha/app1.cnf 5.4.2 通過masterha_check_repl腳本查看整個集群的狀態masterha_check_repl --conf=/etc/masterha/app1.cnf5.4.3 檢查MHA Manager的狀態:masterha_check_status --conf=/etc/masterha/app1.cnf6.開啟MHA Manager監控# nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 & 再次檢查一下啟動狀態:masterha_check_status --conf=/etc/masterha/app1.cnf關閉監控masterha_stop --conf=/etc/masterha/app1.cnf7. VIP 配置7. keepalived方式管理虛擬ip,keepalived配置方法如下:7.1 下載軟件進行并進行安裝(db-master,db-slave01 兩臺都要安裝,備選master:db-slave01,在沒有切換以前是slave):# wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz# tar xf keepalived-1.2.12.tar.gz # cd keepalived-1.2.12# ./configure --prefix=/usr/local/keepalived# make && make install# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/# mkdir /etc/keepalived# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/7.2 配置keepalived的配置文件,在master上配置 (db-master)8.
參考URL:
https://www.cnblogs.com/gomysql/p/3675429.html
VIP 配置MHA
http://blog.itpub.net/29416434/viewspace-2062533/
總結
以上是生活随笔為你收集整理的MySQL MHA 安装的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。