一、配置MHA
1.1配置關(guān)鍵程序軟連接
ln -s /application/mysql/bin/mysqlbinlog ???/usr/bin/mysqlbinlog
ln -s /application/mysql/bin/mysql ?????????/usr/bin/mysql
1.2配置各節(jié)點互信
db01:
rm -rf /root/.ssh
ssh-keygen
cd /root/.ssh
mv id_rsa.pub authorized_keys
scp ?-r ?/root/.ssh ?10.0.0.52:/root
scp ?-r ?/root/.ssh ?10.0.0.53:/root
(如果這個方法不行就用mo1管理機的ssh連接腳本來做搬男,先生成ssh-Keygen在用腳本)
各節(jié)點驗證
db01:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date
db02:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date
db03:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date
1.3安裝軟件
下載mha軟件
mha官網(wǎng):https://code.google.com/archive/p/mysql-master-ha/
github下載地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads
所有節(jié)點安裝Node軟件依賴包
yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
在db01主庫中創(chuàng)建mha需要的用戶
grant all privileges on *.* to mha@'10.0.0.%' identified by 'mha';
Manager軟件安裝(db03)
yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
1.4配置文件準(zhǔn)備(db03)
創(chuàng)建配置文件目錄
?mkdir -p /etc/mha
創(chuàng)建日志目錄
mkdir -p /var/log/mha/app1
編輯mha配置文件
cat > /etc/mha/app1.cnf<<EOF
[server default]
manager_log=/var/log/mha/app1/manager ???????
manager_workdir=/var/log/mha/app1 ???????????
master_binlog_dir=/data/binlog ????
user=mha ??????????????????????????????????
password=mha ????????????????????????????
ping_interval=2
repl_password=123
repl_user=repl
ssh_user=root ???????????????????????????
[server1] ??????????????????????????????????
hostname=10.0.0.51
port=3306 ????????????????????????????????
[server2] ???????????
hostname=10.0.0.52
candidate_master=1
port=3306
[server3]
hostname=10.0.0.53
port=3306
EOF
1.5狀態(tài)檢查(db03)
masterha_check_ssh ?--conf=/etc/mha/app1.cnf
masterha_check_repl ?--conf=/etc/mha/app1.cnf
1.6開啟MHA(db03):
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover ?< /dev/null> /var/log/mha/app1/manager.log 2>&1 &
1.7查看MHA狀態(tài)
[root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf
二、MHA的vip功能
參數(shù):
master_ip_failover_script=/usr/local/bin/master_ip_failover
注意:/usr/local/bin/master_ip_failover肠槽,必須事先準(zhǔn)備好
修改腳本內(nèi)容
vi ?/usr/local/bin/master_ip_failover
my $vip = '10.0.0.55/24';
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
更改manager配置文件:
vi /etc/mha/app1.cnf
添加:
master_ip_failover_script=/usr/local/bin/master_ip_failover
注意:
[root@db03 ~]# dos2unix /usr/local/bin/master_ip_failover
dos2unix: converting file /usr/local/bin/master_ip_failover to Unix format ...
[root@db03 ~]# chmod +x /usr/local/bin/master_ip_failover
主庫上悍缠,手工生成第一個vip地址
手工在主庫上綁定vip雁乡,注意一定要和配置文件中的ethN一致吐葱,我的是eth0:1(1是key指定的值)
ifconfig eth0:1 10.0.0.55/24
卸載心跳ip
[root@db02 ~]# ifconfig eth0:1 down
重啟mha
masterha_stop --conf=/etc/mha/app1.cnf
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
三街望、郵箱提醒功能
1.參數(shù):
report_script=/usr/local/bin/send
2.準(zhǔn)備郵件腳本
send_report
(1)準(zhǔn)備發(fā)郵件的腳本(上傳 email_2019-最新.zip中的腳本,到/usr/local/bin/中)
(2)將準(zhǔn)備好的腳本添加到mha配置文件中,讓其調(diào)用
3.修改manager配置文件弟跑,調(diào)用郵件腳本
vi /etc/mha/app1.cnf
report_script=/usr/local/bin/send
(3)停止MHA
masterha_stop --conf=/etc/mha/app1.cnf
(4)開啟MHA ???
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
(5)關(guān)閉主庫,看警告郵件 ?
故障修復(fù):
1.恢復(fù)故障節(jié)點
(1)實例宕掉
/etc/init.d/mysqld start
(2)主機損壞灾前,有可能數(shù)據(jù)也損壞了
備份并恢復(fù)故障節(jié)點。
2.恢復(fù)主從環(huán)境
看日志文件:
CHANGE MASTER TO MASTER_HOST='10.0.0.52', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';
start slave ;
3.恢復(fù)manager
3.1修好的故障節(jié)點配置信息孟辑,加入到配置文件
[server1]
hostname=10.0.0.51
port=3306
3.2啟動manager ??
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
3.4.14 binlog server(db03)
參數(shù):
binlogserver配置:
找一臺額外的機器哎甲,必須要有5.6以上的版本,支持gtid并開啟扑浸,我們直接用的第二個slave(db03)
vim /etc/mha/app1.cnf
[binlog1]
no_master=1
hostname=10.0.0.53
master_binlog_dir=/data/mysql/binlog
創(chuàng)建必要目錄
mkdir -p /data/mysql/binlog
chown -R mysql.mysql /data/*
修改完成后烧给,將主庫binlog拉過來(從000001開始拉燕偶,之后的binlog會自動按順序過來)
拉取主庫binlog日志
cd /data/mysql/binlog ????-----》必須進入到自己創(chuàng)建好的目錄
mysqlbinlog ?-R --host=10.0.0.52 --user=mha --password=mha --raw ?--stop-never mysql-bin.000001 &
注意:
拉取日志的起點,需要按照目前從庫的已經(jīng)獲取到的二進制日志點為起點
重啟MHA
masterha_stop --conf=/etc/mha/app1.cnf
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &