目錄
一、MHA概念
1、MHA的組成
?2、MHA的特點(diǎn)
3、主從復(fù)制有多少種復(fù)制方法
二、搭建MySql+MHA部署
1.Master、Slave1、Slave2 節(jié)點(diǎn)上安裝 mysql
2.修改 Master、Slave1、Slave2 節(jié)點(diǎn)的 Mysql主配置文件/etc/my.cnf??
3.?配置 mysql 一主兩從
4、安裝MHA所有組件
?4.1?安裝 MHA 軟件
4.2?在所有服務(wù)器上配置無密碼認(rèn)證
4.3?在manager節(jié)點(diǎn)上配置MHA
?編輯
4.4?第一次配置需要在master節(jié)點(diǎn)上手動開啟虛擬ip
?編輯
?編輯
4.5?在manager中間件上測試ssh無密碼認(rèn)證
?編輯
4.6?在manager中間件測試mysql主從連接情況
4.7 在manager節(jié)點(diǎn)上啟動MHA
三、故障模擬
四、故障修復(fù)
1、修復(fù)master
?編輯
2、修復(fù)主從
2.1 在現(xiàn)主庫服務(wù)器 slave1(192.168.247.21) 查看二進(jìn)制文件和同步點(diǎn)
2.2 在原主庫服務(wù)器master(192.168.247.20)執(zhí)行同步操作
2.3 在 manager節(jié)點(diǎn)上修改配置文件app1.cnf(再把這個記錄添加進(jìn)去,因?yàn)樗鼨z測掉失效時候會自動消失)
2.4 在 manager 節(jié)點(diǎn)上啟動 MHA
五、總結(jié)
1、mha
2、mha故障問題
一、MHA概念
MHA(Master High Availability)是一套優(yōu)秀的Mysql高可用環(huán)境下故障切換和主從復(fù)制的軟件。
-
MHA的出現(xiàn)就是解決Mysql單點(diǎn)的問題。
-
Mysql故障切換過程中,MHA能做到0-30秒內(nèi)自動完成故障切換操作。
-
MHA能在故障切換的過程中最大程度受傷保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用。
1、MHA的組成
MHA Node(數(shù)據(jù)節(jié)點(diǎn))
- MHA Node運(yùn)行在每臺Mysql服務(wù)器上
MHA Manager(管理節(jié)點(diǎn))
- MHA Manager 可以單獨(dú)部署在一臺獨(dú)立的機(jī)器上,管理多個master-slave集群,也可以部署在一臺slave節(jié)點(diǎn)上。
- MHA Manager 會定時探測集群中的master節(jié)點(diǎn),當(dāng)master出現(xiàn)故障時,它可以自動將最新數(shù)據(jù)的slave 提升為新的master,然后將所有其他的slave重新指向新的master,整個故障轉(zhuǎn)移過程對應(yīng)用程序完全透明。
2、MHA的特點(diǎn)
- 自動故障切換過程中, MHA試圖從宕機(jī)的主服務(wù)器上保存二進(jìn)制日志,最大程度的保證數(shù)據(jù)不丟失。
- 使用半同步復(fù)制 ,可以大大降低數(shù)據(jù)丟失的風(fēng)險,如果只有一個slave已經(jīng)收到了最新的二進(jìn)制日志,MHA可以將最新的二進(jìn)制日志應(yīng)用于其它所有的slave服務(wù)器上,因此可以保證所有節(jié)點(diǎn)的數(shù)據(jù)一致性。
- 目前MHA支持一主多從架構(gòu),最少三臺服務(wù),即一主兩從
3、主從復(fù)制有多少種復(fù)制方法
總共有三種:同步、半同步、異步
異步: 在主從架構(gòu)中加入當(dāng)客戶端發(fā)送了一條update語句,主服務(wù)器上I/O 線程將二進(jìn)制日志寫入到binlog文件之后就返回客戶端結(jié)構(gòu),不管從服務(wù)器是否已經(jīng)同步到了自己的relay-log(中繼日志中)。
- 優(yōu)點(diǎn):性能是最好的。
- 缺點(diǎn):主服務(wù)器宕機(jī),容易造成數(shù)據(jù)不一致,mysql中默認(rèn)的就是異步復(fù)制。
同步:?也稱全同步,當(dāng)主服務(wù)器完成更新,并且同步到所有從服務(wù)器才會返回成功結(jié)果。
- 優(yōu)點(diǎn):安全
- 缺點(diǎn):效率低,影響性能。
半同步:?將兩個方法折中,當(dāng)主服務(wù)器完成更新,至少有一個從服務(wù)器接收到并完成更新,主服務(wù)器就返回成功。
二、搭建MySql+MHA部署
MHA高可用是基于主從復(fù)制的基礎(chǔ)上進(jìn)行安裝部署一臺新的MHKmanager服務(wù)器,該服務(wù)器用來監(jiān)控master服務(wù)器,當(dāng)master服務(wù)器出現(xiàn)故障時,它可以自動將最新的數(shù)據(jù)的slave提升為master(或者可指定直接新的master)。然后其它的slave重新指向新的master。
?
實(shí)驗(yàn)環(huán)境:
主機(jī)名 | 操作系統(tǒng) | IP地址 | 安裝包/軟件 |
---|---|---|---|
manager | centos7-5 | 192.168.247.23 | MHAnode組件、MHAmanager組件 |
master | centos7-5 | 192.168.247.20 | mysql-boost-5.7.20.tar.gz、MHAnode組件 |
slave1 | centos7-5 | 192.168.247.21 | mysql-boost-5.7.20.tar.gz、MHAnode組件 |
slave2 | centos7-5 | 192.168.247.22 | mysql-boost-5.7.20.tar.gz、MHAnode組件 |
1.Master、Slave1、Slave2 節(jié)點(diǎn)上安裝 mysql
2.修改 Master、Slave1、Slave2 節(jié)點(diǎn)的 Mysql主配置文件/etc/my.cnf??
##Master 節(jié)點(diǎn)##
vim /etc/my.cnf
[mysqld]
server-id = 1
log_bin = master-bin
log-slave-updates = true
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin
##slave1節(jié)點(diǎn)##?
vim /etc/my.cnf
[mysqld]
server-id = 2 (另一臺可配置server-id = 3)
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
?###Slave2 節(jié)點(diǎn)##
server-id = 3
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
3.?配置 mysql 一主兩從
(1)所有數(shù)據(jù)庫節(jié)點(diǎn)進(jìn)行 mysql 授權(quán)
mysql -uroot -p
grant replication slave on *.* to 'myslave'@'192.168.247.%' identified by '123456';
##允許myslave用戶在192.168.247.0網(wǎng)段使用密碼123456登錄到本機(jī)
grant all privileges on *.* to 'mha'@'192.168.247.%' identified by 'manager';
##允許mha用戶在192.168.247.0網(wǎng)段使用密碼manager登錄到本機(jī)
grant all privileges on *.* to 'mha'@'mysql1' identified by 'manager';
grant all privileges on *.* to 'mha'@'mysql2' identified by 'manager';
grant all privileges on *.* to 'mha'@'mysql3' identified by 'manager';
##防止上面用戶登錄不上,再加三條授權(quán)主機(jī)名登錄的用戶
?##在Master節(jié)點(diǎn)查看二進(jìn)制文件和同步點(diǎn)##
show master statys;
#查看master節(jié)點(diǎn)上面的文件名和偏移量。每臺機(jī)都不一樣
##在slave1和slave2節(jié)點(diǎn)執(zhí)行同步操作##?
change master to master_host='192.168.247.20',master_user='myslave',master_password='123456',master_log_file='master-bin.000003',master_log_pos=4209;
##執(zhí)行change,指定master服務(wù)器,登錄的myslave用戶和密碼,以及二進(jìn)制文件名和偏移量
start slave;
##啟動主從同步
show slave status\G
#查看狀態(tài)
##在slave1和slave2節(jié)點(diǎn)執(zhí)行為只讀模式##
set global read_only=1;
#設(shè)置只讀模式
?
?##在 Master 主庫插入條數(shù)據(jù),測試是否同步##
4、安裝MHA所有組件
4.1?安裝 MHA 軟件
##所有服務(wù)器都安裝MHA依賴環(huán)境,首先安裝epel源##
yum install epel-release --nogpgcheck -y
#安裝在線源
yum install -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN
#安裝依賴環(huán)境
將node組件包放在各個服務(wù)器的/opt目錄下
cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
#將node安裝包解壓當(dāng)當(dāng)前目錄
cd mha4mysql-node-0.57
#進(jìn)入目錄
perl Makefile.PL
#進(jìn)行編譯
make && make install
#編譯安裝
##在manager中間件服務(wù)器上安裝manager組件##
cd /opt
tar zxvf mha4mysql-manager-0.57.tar.gz
#將安裝包進(jìn)行解壓
cd mha4mysql-manager-0.57
#進(jìn)入解壓后的目錄
perl Makefile.PL
#進(jìn)行編譯
make && make install
#安裝
manager組件安裝在/usr/local/bin 下面會生成幾個工具,主要包括以下幾個
工具 | 描述 |
---|---|
masterha_check_ssh | 檢查MHA的SSH配置狀況 |
masterha_check_repl | 檢查MYSQL復(fù)制狀況 |
masterha_manger | 啟動manager的腳本 |
master_check_status | 檢測當(dāng)前MHA運(yùn)行狀態(tài) |
masterha_master_monitor | 檢測master是否宕機(jī) |
masterha_master_switch | 控制故障轉(zhuǎn)移(自動或手動) |
masterha_conf_host | 添加或刪除配置的server信息 |
masterha_stop | 關(guān)閉manager |
node組件安裝在/usr/local/bin 下面會生成幾個腳本,主要包括以下幾個(這些工具通常由MHAmabager的腳本觸發(fā),無需認(rèn)為操作),主要如下
腳本工具 | 描述 |
---|---|
save_binary_logs | 保存和復(fù)制master的二進(jìn)制日志 |
apply_diff_relay_logs | 識別差異的中繼日志事件并將其差異的時間應(yīng)用于其它的slave |
filter_mysqlbinlog | 去除不必要的ROLLBACK事件(MHA已不再使用的工具) |
purge_relay_logs | 清除中繼日志(不會阻塞sql線程) |
4.2?在所有服務(wù)器上配置無密碼認(rèn)證
##在manager中間件上配置到所有數(shù)據(jù)節(jié)點(diǎn)的無密碼認(rèn)證##
ssh-keygen -t rsa #一路按回車鍵
ssh-copy-id 192.168.247.20
ssh-copy-id 192.168.247.21
ssh-copy-id 192.168.247.22
##在master節(jié)點(diǎn)上配置到數(shù)據(jù)庫節(jié)點(diǎn)slave1和slave2的無密碼認(rèn)證##
ssh-keygen -t rsa
ssh-copy-id 196.168.247.21
ssh-copy-id 196.168.247.22
##在slave1節(jié)點(diǎn)上配置到所有數(shù)據(jù)庫節(jié)點(diǎn)master和slave2的無密碼認(rèn)證##
ssh-keygen -t rsa
ssh-copy-id 196.168.247.20
ssh-copy-id 196.168.247.22
##在slave2節(jié)點(diǎn)上配置到所有數(shù)據(jù)節(jié)點(diǎn)master和salve1的無密碼認(rèn)證##
ssh-key -t rsa
ssh-copy-id 192.168.247.20
ssh-copy-id 192.168.247.21
4.3?在manager節(jié)點(diǎn)上配置MHA
##在 manager 節(jié)點(diǎn)上復(fù)制相關(guān)腳本到/usr/local/bin 目錄##
cp -rp /opt/mha4mysql-manager-0.57/samples/scripts/ /usr/local/bin/
#復(fù)制相關(guān)腳本到/usr/local/bin中
拷貝后會有四個執(zhí)行文件
腳本文件 | 描述 |
---|---|
master_ip_failover | 自動切換時VIP管理的腳本 |
master_ip_online_change | 在線切換時vip的管理 |
power_manager | 故障發(fā)生后關(guān)閉主機(jī)的腳本 |
send_report | 因故障切換后發(fā)送報警的腳本 |
##復(fù)制自動切換vip管理的腳本到/usr/local/bin/目錄下##
cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin
#復(fù)制上述的自動切換時VIP管理的腳本到/usr/local/bin目錄,這里使用master_ip_failover腳本來管理VIP和故障切換
##修改管理腳本的內(nèi)容(清空原有腳本)##
vim /usr/local/bin/master_ip_failover #清空以前的,添加內(nèi)容如下記得修改ip地址
#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';
use Getopt::Long;
my (
$command, $ssh_user, $orig_master_host, $orig_master_ip,
$orig_master_port, $new_master_host, $new_master_ip, $new_master_port
);
#############################添加內(nèi)容部分#########################################
my $vip = '192.168.247.200'; #指定vip的地址
my $brdc = '192.168.247.255'; #指定vip的廣播地址
my $ifdev = 'ens33'; #指定vip綁定的網(wǎng)卡
my $key = '1'; #指定vip綁定的虛擬網(wǎng)卡序列號
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #代表此變量值為ifconfig ens33:1 192.168.247.200
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; #代表此變量值為ifconfig ens33:1 192.168.247.200 down
my $exit_code = 0; #指定退出狀態(tài)碼為0
#my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 brd $brdc dev $ifdev label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip;iptables -F;";
#my $ssh_stop_vip = "/usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key";
##################################################################################
GetOptions(
'command=s' => \$command,
'ssh_user=s' => \$ssh_user,
'orig_master_host=s' => \$orig_master_host,
'orig_master_ip=s' => \$orig_master_ip,
'orig_master_port=i' => \$orig_master_port,
'new_master_host=s' => \$new_master_host,
'new_master_ip=s' => \$new_master_ip,
'new_master_port=i' => \$new_master_port,
);
exit &main();
sub main {
print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";
if ( $command eq "stop" || $command eq "stopssh" ) {
my $exit_code = 1;
eval {
print "Disabling the VIP on old master: $orig_master_host \n";
&stop_vip();
$exit_code = 0;
};
if ($@) {
warn "Got Error: $@\n";
exit $exit_code;
}
exit $exit_code;
}
elsif ( $command eq "start" ) {
my $exit_code = 10;
eval {
print "Enabling the VIP - $vip on the new master - $new_master_host \n";
&start_vip();
$exit_code = 0;
};
if ($@) {
warn $@;
exit $exit_code;
}
exit $exit_code;
}
elsif ( $command eq "status" ) {
print "Checking the Status of the script.. OK \n";
exit 0;
}
else {
&usage();
exit 1;
}
}
sub start_vip() {
`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
## A simple system call that disable the VIP on the old_master
sub stop_vip() {
`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}
sub usage {
print
"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n";
}
##創(chuàng)建MHA軟件目錄并拷貝配置文件,這里使用app1.cnf配置文件來管理mysql節(jié)點(diǎn)服務(wù)器##
mkdir /etc/masterha
cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha/
vim /etc/masterha/app1.cnf #(清空以前的內(nèi)容,添加內(nèi)容如下)
[server default]
manager_log=/var/log/masterha/app1/manager.log #manager日志
manager_workdir=/var/log/masterha/app1 #manager工作目錄
master_binlog_dir=/usr/local/mysql/data/ #master保存binlog的位置,這里的路徑要與master里配置的binlog的路徑一致,以便MHA能找到
master_ip_failover_script=/usr/local/bin/master_ip_failover #設(shè)置自動failover時候的切換腳本,也就是上面的那個腳本
master_ip_online_change_script=/usr/local/bin/master_ip_online_change #設(shè)置手動切換時候的切換腳本
password=manager #設(shè)置mysql中root用戶的密碼,這個密碼是前文中創(chuàng)建監(jiān)控用戶的那個密碼
ping_interval=1 #設(shè)置監(jiān)控主庫,發(fā)送ping包的時間間隔,默認(rèn)是3秒,嘗試三次沒有回應(yīng)的時候自動進(jìn)行failover
remote_workdir=/tmp #設(shè)置遠(yuǎn)端mysql在發(fā)生切換時binlog的保存位置
repl_password=123456 #設(shè)置復(fù)制用戶的密碼
repl_user=myslave #設(shè)置復(fù)制用戶的用戶
report_script=/usr/local/send_report #設(shè)置發(fā)生切換后發(fā)送的報警的腳本
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.247.21 -s 192.168.247.22 #指定檢查的從服務(wù)器IP地址
shutdown_script="" #設(shè)置故障發(fā)生后關(guān)閉故障主機(jī)腳本(該腳本的主要作用是關(guān)閉主機(jī)防止發(fā)生腦裂,這里沒有使用)
ssh_user=root #設(shè)置ssh的登錄用戶名
user=mha #設(shè)置監(jiān)控用戶root
[server1]
hostname=192.168.247.20
port=3306
[server2]
hostname=192.168.247.21
port=3306
candidate_master=1
#設(shè)置為候選master,設(shè)置該參數(shù)以后,發(fā)生主從切換以后將會將此從庫提升為主庫,即使這個從庫不是集群中最新的slave
check_repl_delay=0
#默認(rèn)情況下如果一個slave落后master 超過100M的relay logs的話,MHA將不會選擇該slave作為一個新的master, 因?yàn)閷τ谶@個slave的恢復(fù)需要花費(fèi)很長時間;通過設(shè)置check_repl_delay=0,MHA觸發(fā)切換在選擇一個新的master的時候?qū)雎詮?fù)制延時,這個參數(shù)對于設(shè)置了candidate_master=1的主機(jī)非常有用,因?yàn)檫@個候選主在切換的過程中一定是新的master
[server3]
hostname=192.168.247.22
port=3306
4.4?第一次配置需要在master節(jié)點(diǎn)上手動開啟虛擬ip
/sbin/ifconfig ens33:1 192.168.247.200/24
#手動開啟虛擬ip
4.5?在manager中間件上測試ssh無密碼認(rèn)證
##如果正常最后會輸出 successfully##
masterha_check_ssh -conf=/etc/masterha/app1.cnf
#測試ssh無密碼認(rèn)證
4.6?在manager中間件測試mysql主從連接情況
##最后出現(xiàn) MySQL Replication Health is OK 字樣說明正常##
masterha_check_repl -conf=/etc/masterha/masterha/app1.cnf
#測試mysql主從連接情況
#注意:如果出現(xiàn)問題:需要將slave1和salve2節(jié)點(diǎn)服務(wù)器上面的[mysq]中的字符集UTF8一行注釋掉,開啟二進(jìn)制文件。
4.7 在manager節(jié)點(diǎn)上啟動MHA
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 &
#啟動MHA
--remove_dead_master_conf:該參數(shù)代表當(dāng)發(fā)生主從切換后,老的主庫的 ip 將會從配置文件中移除。
--manger_log:日志存放位置。
--ignore_last_failover:在缺省情況下,如果 MHA 檢測到連續(xù)發(fā)生宕機(jī),且兩次宕機(jī)間隔不足 8 小時的話,則不會進(jìn)行 Failover, 之所以這樣限制是為了避免 ping-pong 效應(yīng)。該參數(shù)代表忽略上次 MHA 觸發(fā)切換產(chǎn)生的文件,默認(rèn)情況下,MHA 發(fā)生切換后會在日志記錄,也就是上面設(shè)置的日志app1.failover.complete文件,下次再次切換的時候如果發(fā)現(xiàn)該目錄下存在該文件將不允許觸發(fā)切換,除非在第一次切換后收到刪除該文件,為了方便,這里設(shè)置為--ignore_last_failover。
##查看 MHA 狀態(tài),可以看到當(dāng)前的 master 是 master 節(jié)點(diǎn)##
masterha_check_status --conf=/etc/masterha/app1.cnf
##查看 MHA 日志##
cat /var/log/masterha/app1/manager.log | grep "current master"
##查看master的VIP地址##
若要關(guān)閉 manager 服務(wù),可以使用如下命令。
masterha_stop --conf=/etc/masterha/app1.cnf
或者可以直接采用 kill 進(jìn)程 ID 的方式關(guān)閉
三、故障模擬
在manager節(jié)點(diǎn)上監(jiān)控觀察日志記錄
tail -f /var/log/masterha/app1/manager.log
在master節(jié)點(diǎn)上停止mysql服務(wù)
systemctl stop mysql
#正常自動切換一次后,MHA 進(jìn)程會退出。HMA 會自動修改 app1.cnf 文件內(nèi)容,將宕機(jī)的 master 節(jié)點(diǎn)刪除。
查看 slave1 是否接管 VIP
查看manager中間件的日志信息
故障切換備選主庫的算法:
1.一般判斷從庫的是從(position/GTID)判斷優(yōu)劣,數(shù)據(jù)有差異,最接近于master的slave,成為備選主。
2.?dāng)?shù)據(jù)一致的情況下,按照配置文件順序,選擇備選主庫。
3.設(shè)定有權(quán)重(candidate_master=1),按照權(quán)重強(qiáng)制指定備選主。
(1)默認(rèn)情況下如果一個slave落后master 100M的relay logs的話,即使有權(quán)重,也會失效。
(2)如果check_repl_delay=0的話,即使落后很多日志,也強(qiáng)制選擇其為備選主。
?
四、故障修復(fù)
1、修復(fù)master
systemctl restart mysqld
#開啟原master的MySQL數(shù)據(jù)庫
2、修復(fù)主從
2.1 在現(xiàn)主庫服務(wù)器 slave1(192.168.247.21) 查看二進(jìn)制文件和同步點(diǎn)
show master status;
2.2 在原主庫服務(wù)器master(192.168.247.20)執(zhí)行同步操作
change master to master_host='192.168.147.21',master_user='myslave',master_password='123456',master_log_file='master-bin.000002',master_log_pos=4209;
#添加同步新的master
start slave;
#開始同步
2.3 在 manager節(jié)點(diǎn)上修改配置文件app1.cnf(再把這個記錄添加進(jìn)去,因?yàn)樗鼨z測掉失效時候會自動消失)
2.4 在 manager 節(jié)點(diǎn)上啟動 MHA
masterha_stop --conf=/etc/masterha/app1.cnf
#停止MHA
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 &
#啟動MHA
masterha_check_status --conf=/etc/masterha/app1.cnf
#查看MHA
五、總結(jié)
1、mha
① 作用:mysql的高可用 + 故障切換
② 核心部分:
MHA組件:
- manager:?主要的功能:做MHA 啟動、關(guān)閉管理和檢測mysql各種健康狀態(tài)
- node:?在發(fā)生故障時,盡可能的保存二進(jìn)制日志,并且實(shí)現(xiàn)故障切換(VIP地址飄逸)
③ MHA需要配置的文件(2個):
- master ip failover腳本文件: 命令工具 ,定義的是基于VIP的檢測和故障轉(zhuǎn)移 (VIP從master----->新的 master)
- app1.conf配置文件: mha的主要配置文件,主要定義了mha的工作目錄、日志。mysql二進(jìn)制日志位置;使用mha的登錄mysql的用戶、密碼使用從服務(wù)器;身份同步master的賬號、密碼 (五個)
④ 故障切換mha會做哪些動作:
1)mha會多次嘗試檢測master的存活狀態(tài)
2)mha會多次嘗試、盡可能的保存master的二進(jìn)制日志
3)mha會根據(jù)app1.cnf中的配置部分,進(jìn)行從服務(wù)器------》 主服務(wù)器的位置
4)mha最后會將master的VIP地址切換到從服務(wù)器的位置
5)mha再選擇完新的master之后,會在其余的salve上執(zhí)行change master操作,指向性的master, 來保證Mysql的集群的健康性
2、mha故障問題
①軟連接必須要做
②MySQL配置文件,建議將中文字符集注釋掉
③ssh免密鑰交互必須要做
④mha的內(nèi)存建議4G,否則可能導(dǎo)致vip地址漂移無效文章來源:http://www.zghlxwxcb.cn/news/detail-704831.html
⑤app1.cnf配置文件中,MySQL二進(jìn)制文件位置,一定要指正確文章來源地址http://www.zghlxwxcb.cn/news/detail-704831.html
到了這里,關(guān)于MySQL之MHA高可用配置及故障切換的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!