国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL之MHA高可用配置及故障切換

這篇具有很好參考價值的文章主要介紹了MySQL之MHA高可用配置及故障切換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一、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

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

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

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##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/

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

?###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/

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

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ī)名登錄的用戶

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

?##在Master節(jié)點(diǎn)查看二進(jìn)制文件和同步點(diǎn)##

show master statys;
#查看master節(jié)點(diǎn)上面的文件名和偏移量。每臺機(jī)都不一樣

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(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)

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##在slave1和slave2節(jié)點(diǎn)執(zhí)行為只讀模式##

set global read_only=1;
#設(shè)置只讀模式

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫?MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

?##在 Master 主庫插入條數(shù)據(jù),測試是否同步##

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(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
#編譯安裝

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##在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
#安裝

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

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

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##在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中

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

拷貝后會有四個執(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和故障切換

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##修改管理腳本的內(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";
}

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##創(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

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

4.4?第一次配置需要在master節(jié)點(diǎn)上手動開啟虛擬ip

/sbin/ifconfig ens33:1 192.168.247.200/24
#手動開啟虛擬ip

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

4.5?在manager中間件上測試ssh無密碼認(rèn)證

##如果正常最后會輸出 successfully##

masterha_check_ssh -conf=/etc/masterha/app1.cnf
#測試ssh無密碼認(rèn)證

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

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)制文件。

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

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。

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##查看 MHA 狀態(tài),可以看到當(dāng)前的 master 是 master 節(jié)點(diǎn)##

masterha_check_status --conf=/etc/masterha/app1.cnf

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##查看 MHA 日志##

cat /var/log/masterha/app1/manager.log | grep "current master"

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

##查看master的VIP地址##

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

若要關(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

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

在master節(jié)點(diǎn)上停止mysql服務(wù)

systemctl stop mysql

#正常自動切換一次后,MHA 進(jìn)程會退出。HMA 會自動修改 app1.cnf 文件內(nèi)容,將宕機(jī)的 master 節(jié)點(diǎn)刪除。

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

查看 slave1 是否接管 VIP

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

查看manager中間件的日志信息

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

故障切換備選主庫的算法:
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ù)庫

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

2、修復(fù)主從

2.1 在現(xiàn)主庫服務(wù)器 slave1(192.168.247.21) 查看二進(jìn)制文件和同步點(diǎn)

show master status;

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

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;
#開始同步

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

2.3 在 manager節(jié)點(diǎn)上修改配置文件app1.cnf(再把這個記錄添加進(jìn)去,因?yàn)樗鼨z測掉失效時候會自動消失)

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

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

MySQL之MHA高可用配置及故障切換,mysql,數(shù)據(jù)庫

五、總結(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地址漂移無效

⑤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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL 高可用配置及故障切換

    MySQL 高可用配置及故障切換

    1、MHA(MasterHigh Availability)是一套優(yōu)秀的MySQL高可用環(huán)境下故障切換和主從復(fù)制的軟件。 2、MHA 的出現(xiàn)就是解決MySQL 單點(diǎn)的問題。 3、MySQL故障切換過程中,MHA能做到0-30秒內(nèi)自動完成故障切換操作。 4、MHA能在故障切換的過程中最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真正意義上

    2024年02月11日
    瀏覽(19)
  • MHA高可用及故障切換

    MHA高可用及故障切換

    MHA(MasterHigh Availability)是一套優(yōu)秀的MySQL高可用環(huán)境下故障切換和主從復(fù)制的軟件。 MHA 的出現(xiàn)就是解決MySQL 單點(diǎn)的問題。 MySQL故障切換過程中,MHA能做到0-30秒內(nèi)自動完成故障切換操作。 MHA能在故障切換的過程中最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用。

    2024年02月05日
    瀏覽(17)
  • MHA高可用部署與故障切換

    MySQL MHA 1.什么是 MHA MHA(MasterHigh Availability)是一套優(yōu)秀的MySQL高可用環(huán)境下故障切換和主從復(fù)制的軟件。 MHA 的出現(xiàn)就是解決MySQL 單點(diǎn)的問題。 MySQL故障切換過程中,MHA能做到0-30秒內(nèi)自動完成故障切換操作。 MHA能在故障切換的過程中最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真

    2024年02月03日
    瀏覽(18)
  • Mysql 搭建MHA高可用架構(gòu),實(shí)現(xiàn)自動failover,完成主從切換

    Mysql 搭建MHA高可用架構(gòu),實(shí)現(xiàn)自動failover,完成主從切換

    目錄 自動failover MHA: MHA 服務(wù) 項(xiàng)目:搭建Mysql主從復(fù)制、MHA高可用架構(gòu) 實(shí)驗(yàn)項(xiàng)目IP地址配置: MHA下載地址 項(xiàng)目步驟:? 一、修改主機(jī)名 二、編寫一鍵安裝mha node腳本和一鍵安裝mha mangaer腳本,并執(zhí)行安裝 三、搭建Mysql主從復(fù)制集群(注意所有的Mysql主從復(fù)制機(jī)器都需要打開二

    2024年02月13日
    瀏覽(33)
  • 【簡單認(rèn)識MySQL的MHA高可用配置】

    【簡單認(rèn)識MySQL的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á)到真正意義上的高可用。

    2024年02月15日
    瀏覽(20)
  • MySQL高可用MHA

    MySQL高可用MHA

    MHA(MasterHigh Availability)是一套優(yōu)秀的MySQL高可用環(huán)境下故障切換和主從復(fù)制的軟件 MHA 的出現(xiàn)就是解決MySQL 單點(diǎn)的問題。 MySQL故障切換過程中,MHA能做到0-30秒內(nèi)自動完成故障切換操作。 MHA能在故障切換的過程中最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用。

    2024年02月12日
    瀏覽(17)
  • MySQL----MHA高可用

    MySQL----MHA高可用

    MHA(MasterHigh Availability)是一套優(yōu)秀的MySQL高可用環(huán)境下故障切換和主從復(fù)制的軟件。 MHA 的出現(xiàn)就是解決MySQL 單點(diǎn)的問題。 MySQL故障切換過程中,MHA能做到0-30秒內(nèi)自動完成故障切換操作。 MHA能在故障切換的過程中最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用。

    2024年02月12日
    瀏覽(19)
  • MySQL--MHA高可用方案

    MySQL--MHA高可用方案

    ????????MHA 在監(jiān)控到 master 節(jié)點(diǎn)故障時,會提升其中擁有最新數(shù)據(jù)的 slave 節(jié)點(diǎn)成為新的master 節(jié)點(diǎn),在此期間,MHA 會通過于其它從節(jié)點(diǎn)獲取額外信息來避免一致性方面的問題。MHA 還提供了 master 節(jié)點(diǎn)的在線切換功能,即按需切換 master/slave 節(jié)點(diǎn)。 ?MHA Manager(管理節(jié)點(diǎn))和 M

    2024年03月09日
    瀏覽(18)
  • MySQL-高可用MHA(二)

    MySQL-高可用MHA(二)

    目錄 ??通過keepalived方式 ??安裝keepalived ??防火墻策略 ??keep配置文件 ??MHA應(yīng)用keepalived ??停止MHA ??啟動MHA ??檢查狀態(tài) ??測試 ??通過腳本實(shí)現(xiàn)VIP切換 ??網(wǎng)卡環(huán)境配置 ??MHA應(yīng)用腳本 ??停止MHA ??啟動MHA ??檢查狀態(tài) ??測試 ? ? ??博客主頁:大蝦好吃嗎的博客 ? ?

    2023年04月17日
    瀏覽(24)
  • MySQL MHA切換過程分析

    啟動? MHA的啟動腳本為masterha_manager(安裝后,默認(rèn)路徑--/usr/local/bin/masterha_manager)。啟動的過程中會主動檢查各節(jié)點(diǎn)的SSH連接和主從復(fù)制的狀態(tài)是否正常。運(yùn)行期間,manager會調(diào)用masterha_master_monitor腳本(masterha_master_monitor進(jìn)一步調(diào)用XXX/mha4mysql-manager-0.5?/lib/MHA/MasterMonitor.pm 和

    2024年01月22日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包