中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

深圳燃?xì)夤镜刂吩谀睦锕枮Iseo關(guān)鍵字優(yōu)化

深圳燃?xì)夤镜刂吩谀睦?哈爾濱seo關(guān)鍵字優(yōu)化,深圳營(yíng)銷(xiāo)型定制網(wǎng)站開(kāi)發(fā)1000,廣州網(wǎng)站建設(shè) 名片制作 網(wǎng)站管理目錄 一、MHA簡(jiǎn)述 二、MHA 的組成 三、MHA 的特點(diǎn) 四、MHA工作原理 五、MHA部署步驟 六、搭建 MySQL MHA MHA一主兩從高可用集群示意圖 實(shí)驗(yàn)環(huán)境 1. Master、Slave1、Slave2 節(jié)點(diǎn)上安裝 mysql5.7 2. 關(guān)閉防火墻 3. 修改 Master、Slave1、Slave2 節(jié)點(diǎn)的主機(jī)名 4. 修…

目錄

一、MHA簡(jiǎn)述

二、MHA 的組成

三、MHA 的特點(diǎn)

四、MHA工作原理

五、MHA部署步驟

六、搭建 MySQL MHA

MHA一主兩從高可用集群示意圖

實(shí)驗(yàn)環(huán)境

1. Master、Slave1、Slave2 節(jié)點(diǎn)上安裝 mysql5.7

2. 關(guān)閉防火墻

3. 修改 Master、Slave1、Slave2 節(jié)點(diǎn)的主機(jī)名

4. 修改 Master、Slave1、Slave2 節(jié)點(diǎn)的 Mysql主配置文件/etc/my.cnf?

5. 在 Master、Slave1、Slave2 節(jié)點(diǎn)上都創(chuàng)建兩個(gè)軟鏈接

6. 配置 mysql 一主兩從

7. 安裝 MHA 軟件

8. 在所有服務(wù)器上配置無(wú)密碼認(rèn)證

9. 在 manager 節(jié)點(diǎn)上配置 MHA

10. 第一次配置需要在 Master 節(jié)點(diǎn)上手動(dòng)開(kāi)啟虛擬IP

11. 在 manager 節(jié)點(diǎn)上測(cè)試 ssh 無(wú)密碼認(rèn)證,如果正常最后會(huì)輸出 successfully,如下所示。

12. 在 manager 節(jié)點(diǎn)上測(cè)試 mysql 主從連接情況,最后出現(xiàn) MySQL Replication Health is OK 字樣說(shuō)明正常。如下所示。

13. 在 manager 節(jié)點(diǎn)上啟動(dòng) MHA

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

15.查看 MHA 日志,也以看到當(dāng)前的 master 是 192.168.80.10,如下所示。

16.查看 mysql1 的 VIP 地址 192.168.80.200 是否存在,這個(gè) VIP 地址不會(huì)因?yàn)?manager 節(jié)點(diǎn)停止 MHA 服務(wù)而消失。

七、故障模擬

八、故障切換備選主庫(kù)的算法

九、故障修復(fù)步驟

1. 修復(fù)mysql

2. 修復(fù)主從

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

4. 在 manager 節(jié)點(diǎn)上啟動(dòng) MHA

十、解決中英字不兼容報(bào)錯(cuò)的問(wèn)題


一、MHA簡(jiǎn)述

MHA(MasterHigh Availability)是一種經(jīng)典的高可用架構(gòu),專(zhuān)門(mén)用于在主從復(fù)制環(huán)境中實(shí)現(xiàn)自動(dòng)故障切換和最小化數(shù)據(jù)丟失。
MHA 作為 MySQL 主從復(fù)制環(huán)境下的高可用解決方案,具有自動(dòng)化、低成本和穩(wěn)定的優(yōu)點(diǎn)。對(duì)于中小規(guī)模、對(duì)數(shù)據(jù)一致性要求高的單主環(huán)境,MHA 是一個(gè)非常優(yōu)秀的選擇。
MySQL 故障切換過(guò)程中,MHA 能做到 10-30 秒內(nèi)自動(dòng)完成故障切換操作。
MHA 能在故障切換的過(guò)程中最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用。

二、MHA 的組成

  • MHA Node(數(shù)據(jù)節(jié)點(diǎn))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 部署在每個(gè) MySQL 服務(wù)器上,負(fù)責(zé)在故障轉(zhuǎn)移過(guò)程中保存和恢復(fù)數(shù)據(jù),以避免數(shù)據(jù)丟失。
  • MHA Manager(管理節(jié)點(diǎn))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MHA Manager 可以單獨(dú)部署在一臺(tái)獨(dú)立的機(jī)器上,管理多個(gè) master-slave 集群;也可以部署在一臺(tái) slave 節(jié)點(diǎn)上。

三、MHA 的特點(diǎn)

  • 自動(dòng)故障切換過(guò)程中,MHA試圖從宕機(jī)的主服務(wù)器上保存二進(jìn)制日志,最大程度的保證數(shù)據(jù)不丟失。
  • 使用半同步復(fù)制,可以大大降低數(shù)據(jù)丟失的風(fēng)險(xiǎn),如果只有一個(gè)slave已經(jīng)收到了最新的二進(jìn)制日志,MHA可以將最新的二進(jìn)制日志應(yīng)用于其他所有的slave服務(wù)器上,因此可以保證所有節(jié)點(diǎn)的數(shù)據(jù)一致性
  • MHA 對(duì)環(huán)境的要求較高,需要所有 MySQL 節(jié)點(diǎn)之間具備 SSH 免密登錄,確保管理節(jié)點(diǎn)可以訪問(wèn)所有數(shù)據(jù)庫(kù)服務(wù)器。
  • 目前MHA支持一主多從架構(gòu),最少三臺(tái)服務(wù),即一主兩從。

四、MHA工作原理

MHA node部署在每個(gè)mysql服務(wù)器上,負(fù)責(zé)故障轉(zhuǎn)移的數(shù)據(jù)備份和恢復(fù);MHA manager進(jìn)行單獨(dú)部署,manager會(huì)定時(shí)探測(cè)各個(gè)節(jié)點(diǎn)狀態(tài),當(dāng)發(fā)現(xiàn)主庫(kù)master出現(xiàn)故障時(shí),manager會(huì)自動(dòng)將一個(gè)擁有最新數(shù)據(jù)的從庫(kù)slave提升為新的主庫(kù)master,寫(xiě)VIP也會(huì)漂移到新的主庫(kù)master上,
然后還會(huì)將其它的從庫(kù)slave重新指向新的主庫(kù)master做主從復(fù)制,從而保證mysql主從復(fù)制集群的高可用。整個(gè)故障轉(zhuǎn)移過(guò)程對(duì)客戶(hù)端應(yīng)用來(lái)說(shuō)是完全透明的。

五、MHA部署步驟

1)所有服務(wù)器做時(shí)間同步,所有mysql節(jié)點(diǎn)都創(chuàng)建主從復(fù)制用戶(hù)和MHA連接數(shù)據(jù)庫(kù)的用戶(hù),并授權(quán)
2)修改mysql配置文件,添加二進(jìn)制日志、中繼日志、server-id(每個(gè)節(jié)點(diǎn)都不同)、gtid 等主從復(fù)制相關(guān)參數(shù)
3)在從庫(kù)上使用change master to對(duì)接主庫(kù),start slave開(kāi)啟同步,設(shè)置只讀模式 read_only=1
4)在所有節(jié)點(diǎn)上安裝MHA node組件,manager節(jié)點(diǎn)還要安裝MHA manager組件
5)在所有節(jié)點(diǎn)上都要SSH免交互登錄,在manager節(jié)點(diǎn)上準(zhǔn)備好VIP故障切換腳本和MHA配置文件,在master節(jié)點(diǎn)創(chuàng)建好VIP
6)在manager節(jié)點(diǎn)上使用腳本masterha_check_ssh、masterha_check_repl做MHA啟動(dòng)前檢查,再使用masterha_manager啟動(dòng)MHA進(jìn)程
7)模擬master故障轉(zhuǎn)移測(cè)試(manager會(huì)挑選一個(gè)slave提升新的master,VIP會(huì)漂移到新master節(jié)點(diǎn)上,其它的slave會(huì)自動(dòng)指向新的master做主從復(fù)制,MHA進(jìn)程會(huì)自動(dòng)退出,MHA配置文件會(huì)移除原master的配置信息)

六、搭建 MySQL MHA

MHA一主兩從高可用集群示意圖

實(shí)驗(yàn)環(huán)境

MHA manager 節(jié)點(diǎn)服務(wù)器:CentOS7.4(64 位) manager/192.168.80.13 ,安裝MHA node 和 manager 組件
Master 節(jié)點(diǎn)服務(wù)器:CentOS7.4(64 位) mysql1/192.168.80.10 ,安裝mysql5.7、MHA node 組件
Slave1 節(jié)點(diǎn)服務(wù)器:CentOS7.4(64 位) mysql2/192.168.80.11 ,安裝mysql5.7、MHA node 組件
Slave2 節(jié)點(diǎn)服務(wù)器:CentOS7.4(64 位) mysql3/192.168.80.12 ,安裝mysql5.7、MHA node 組件

1. Master、Slave1、Slave2 節(jié)點(diǎn)上安裝 mysql5.7

2. 關(guān)閉防火墻

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3. 修改 Master、Slave1、Slave2 節(jié)點(diǎn)的主機(jī)名

hostnamectl set-hostname mysql1
hostnamectl set-hostname mysql2
hostnamectl set-hostname mysql3

4. 修改 Master、Slave1、Slave2 節(jié)點(diǎn)的 Mysql主配置文件/etc/my.cnf?

Master 節(jié)點(diǎn)

vim /etc/my.cnf
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = mixed
log-slave-updates = true
relay-log = relay-binsystemctl restart mysqld

Slave1、Slave2 節(jié)點(diǎn)

vim /etc/my.cnf
server-id = 2 ?? ??? ??? ??? ??? ??? ?#三臺(tái)服務(wù)器的 server-id 不能一樣
log_bin = mysql-bin
binlog_format = mixed
log-slave-updates = true
relay-log = relay-binsystemctl restart mysqld

5. 在 Master、Slave1、Slave2 節(jié)點(diǎn)上都創(chuàng)建兩個(gè)軟鏈接

ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

6. 配置 mysql 一主兩從

(1)所有數(shù)據(jù)庫(kù)節(jié)點(diǎn)進(jìn)行 mysql 授權(quán)

mysql -uroot -p
grant replication slave on *.* to 'myslave'@'192.168.80.%' identified by 'myslave123';???#從數(shù)據(jù)庫(kù)同步使用
grant all privileges on *.* to 'manager'@'192.168.80.%' identified by 'manager123';?? ???#mha manager 使用grant all privileges on *.* to 'manager'@'mysql1' identified by 'manager123';?? ??? ??? ?#防止從庫(kù)通過(guò)主機(jī)名連接不上主庫(kù)
grant all privileges on *.* to 'manager'@'mysql2' identified by 'manager123';
grant all privileges on *.* to 'manager'@'mysql3' identified by 'manager123';
flush privileges;

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

show master status;+-------------------+----------+--------------+------------------+-------------------+
| File ? ? ? ? ? ? ?| Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 ?| ? ? 1215 | ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? |
+-------------------+----------+--------------+------------------+-------------------+

(3)在 Slave1、Slave2 節(jié)點(diǎn)執(zhí)行同步操作

change master to master_host='192.168.80.10',master_user='myslave',master_password='myslave123',master_log_file='mysql-bin.000001',master_log_pos=1215;?start slave;

(4)在 Slave1、Slave2 節(jié)點(diǎn)查看數(shù)據(jù)同步結(jié)果

show slave status\G?? ??? ?
//確保 IO 和 SQL 線(xiàn)程都是 Yes,代表同步正常。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

(5)兩個(gè)從庫(kù)必須設(shè)置為只讀模式:

set global read_only=1;

(6)插入數(shù)據(jù)測(cè)試數(shù)據(jù)庫(kù)同步

##在 Master 主庫(kù)插入條數(shù)據(jù),測(cè)試是否同步##
create database test_db;
use test_db;
create table test(id int);
insert into test(id) values (1);

7. 安裝 MHA 軟件

(1)所有服務(wù)器上都安裝 MHA 依賴(lài)的環(huán)境,首先安裝 epel 源

yum install epel-release --nogpgcheck -yyum install -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN

(2)安裝 MHA 軟件包,在所有服務(wù)器上必須先安裝 node 組件,最后在 MHA-manager 節(jié)點(diǎn)上安裝 manager 組件,因?yàn)?manager 依賴(lài) node 組件。

cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57
perl Makefile.PL
make && make install

(3)在 MHA manager 節(jié)點(diǎn)上安裝 manager 組件

cd /opt
tar zxvf mha4mysql-manager-0.57.tar.gz
cd mha4mysql-manager-0.57
perl Makefile.PL
make && make install

PS:
manager 組件安裝后在 /usr/local/bin 下面會(huì)生成幾個(gè)工具,主要包括以下幾個(gè):

  • masterha_check_repl:檢查MySQL的復(fù)制狀況
  • masterha_check_ssh:檢查MHA的SSH配置狀況
  • masterha_check_status:檢測(cè)當(dāng)前MHA運(yùn)行狀態(tài)
  • masterha_conf_host:添加或刪除配置的server信息
  • masterha_manager:啟動(dòng)MHA
  • masterha_master_monitor:檢測(cè)master是否宕機(jī)
  • masterha_master_switch:控制故障轉(zhuǎn)移(自動(dòng)或手動(dòng))
  • masterha_secondary_check:二次檢查主庫(kù)是否真有問(wèn)題
  • masterha_stop:關(guān)閉MHA

node 組件安裝后也會(huì)在 /usr/local/bin 下面會(huì)生成幾個(gè)腳本(這些工具通常由 MHAManager 的腳本觸發(fā),無(wú)需人為操作)主要如下:

  • save_binary_logs:保存和復(fù)制master的二進(jìn)制日志
  • apply_diff_relay_logs:識(shí)別差異的中繼日志事件并將其差異的事件應(yīng)用于其他的slave
  • filter_mysqlbinlog:去除不必要的ROLLBACK事件(MHA已不再使用這個(gè)工具)
  • purge_relay_logs:清除中繼日志(不會(huì)阻塞SQL線(xiàn)程)

8. 在所有服務(wù)器上配置無(wú)密碼認(rèn)證

(1)在 manager 節(jié)點(diǎn)上配置到所有數(shù)據(jù)庫(kù)節(jié)點(diǎn)的無(wú)密碼認(rèn)證

ssh-keygen -t rsa ?? ??? ??? ??? ?#一路按回車(chē)鍵
ssh-copy-id 192.168.80.10
ssh-copy-id 192.168.80.11
ssh-copy-id 192.168.80.12

(2)在 mysql1 上配置到數(shù)據(jù)庫(kù)節(jié)點(diǎn) mysql2 和 mysql3 的無(wú)密碼認(rèn)證

ssh-keygen -t rsa
ssh-copy-id 192.168.80.11
ssh-copy-id 192.168.80.12

(3)在 mysql2 上配置到數(shù)據(jù)庫(kù)節(jié)點(diǎn) mysql1 和 mysql3 的無(wú)密碼認(rèn)證

ssh-keygen -t rsa
ssh-copy-id 192.168.80.10
ssh-copy-id 192.168.80.12

(4)在 mysql3 上配置到數(shù)據(jù)庫(kù)節(jié)點(diǎn) mysql1 和 mysql2 的無(wú)密碼認(rèn)證

ssh-keygen -t rsa
ssh-copy-id 192.168.80.10
ssh-copy-id 192.168.80.11

9. 在 manager 節(jié)點(diǎn)上配置 MHA

(1)在 manager 節(jié)點(diǎn)上復(fù)制相關(guān)腳本到/usr/local/bin 目錄

cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/bin
#拷貝后會(huì)有四個(gè)執(zhí)行文件
ll /usr/local/bin/scripts/master_ip_failover ??? ??? ?#自動(dòng)切換時(shí) VIP 管理的腳本
master_ip_online_change ?? ?#在線(xiàn)切換時(shí) VIP 的管理
power_manager ?? ??? ??? ???#故障發(fā)生后關(guān)閉主機(jī)的腳本
send_report ?? ??? ??? ??? ?#因故障切換后發(fā)送報(bào)警的腳本

(2)復(fù)制上述的自動(dòng)切換時(shí) VIP 管理的腳本到 /usr/local/bin 目錄,這里使用master_ip_failover腳本來(lái)管理 VIP 和故障切換

cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin

(3)修改內(nèi)容如下:(刪除原有內(nèi)容,直接復(fù)制并修改vip相關(guān)參數(shù)??稍诳截惽拜斎?:set paste 解決vim粘貼亂序問(wèn)題)

vim /usr/local/bin/master_ip_failover
#!/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.80.200';?? ??? ??? ??? ??? ??? ??? ??? ??? ?#指定vip的地址
my $brdc = '192.168.80.255';?? ??? ??? ??? ??? ??? ??? ??? ?#指定vip的廣播地址
my $ifdev = 'ens33';?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?#指定vip綁定的網(wǎng)卡
my $key = '1';?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?#指定vip綁定的虛擬網(wǎng)卡序列號(hào)
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";?? ??? ?#代表此變量值為ifconfig ens33:1 192.168.80.200
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";?? ??? ?#代表此變量值為ifconfig ens33:1 192.168.80.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";
}

(4)創(chuàng)建 MHA 軟件目錄并拷貝配置文件,這里使用app1.cnf配置文件來(lái)管理 mysql 節(jié)點(diǎn)服務(wù)器

#創(chuàng)建相關(guān)目錄(所有節(jié)點(diǎn))
mkdir -p /opt/mysql-mha/mha-node# manager節(jié)點(diǎn)
mkdir -p /opt/mysql-mha/mha-manager#編寫(xiě)配置文件
vim /opt/mysql-mha/mysql_mha.cnf
[server default]
manager_log=/opt/mysql-mha/manager.log?? ??? ?#指定manager日志路徑
manager_workdir=/opt/mysql-mha/mha-manager?? ?#指定manager工作目錄
remote_workdir=/opt/mysql-mha/mha-node?? ??? ?#指定mha在遠(yuǎn)程節(jié)點(diǎn)上的工作目錄
master_binlog_dir=/usr/local/mysql/data?? ??                                            ? #指定master保存binlog的位置,這里的路徑要與master里配置的binlog的路徑一致,以便MHA能找到
ping_interval=1?? ??? ??? ??? ?               #設(shè)置監(jiān)控主庫(kù),發(fā)送ping包的時(shí)間間隔,默認(rèn)是3秒,嘗試三次沒(méi)有回應(yīng)的時(shí)候自動(dòng)進(jìn)行failover
master_ip_failover_script=/usr/local/bin/master_ip_failover                                       #設(shè)置自動(dòng)failover時(shí)候的切換腳本,也就是上面的那個(gè)腳本
user=manager?? ??? ??? ???                   ?#設(shè)置mha訪問(wèn)數(shù)據(jù)庫(kù)的賬號(hào)
password=manager123?? ??? ???                ?#設(shè)置mha訪問(wèn)數(shù)據(jù)庫(kù)的賬號(hào)密碼
repl_user=myslave?? ??? ???                  ?#設(shè)置主從復(fù)制的用戶(hù)
repl_password=myslave123??                   ?#設(shè)置主從復(fù)制的用戶(hù)密碼
report_script=/usr/local/bin/send_report    #設(shè)置發(fā)生故障切換的時(shí)候發(fā)送郵件提醒
port=3306
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.80.10 -s 192.168.80.11 -s 192.168.80.12??             ?#指定用于二次檢查節(jié)點(diǎn)狀態(tài)的腳本
ssh_user=root?? ??? ??? ???                  ?#設(shè)置ssh的登錄用戶(hù)名[server1]
hostname=192.168.80.10
port=3306[server2]
hostname=192.168.80.11
port=3306
candidate_master=1
#設(shè)置為候選master,設(shè)置該參數(shù)以后,發(fā)生主從切換以后將會(huì)將此從庫(kù)提升為主庫(kù),即使這個(gè)從庫(kù)不是集群中最新的slavecheck_repl_delay=0
#默認(rèn)情況下如果一個(gè)slave落后master 超過(guò)100M的relay logs的話(huà),MHA將不會(huì)選擇該slave作為一個(gè)新的master, 因?yàn)閷?duì)于這個(gè)slave的恢復(fù)需要花費(fèi)很長(zhǎng)時(shí)間;通過(guò)設(shè)置check_repl_delay=0,MHA觸發(fā)切換在選擇一個(gè)新的master的時(shí)候?qū)?huì)忽略復(fù)制延時(shí),這個(gè)參數(shù)對(duì)于設(shè)置了candidate_master=1的主機(jī)非常有用,因?yàn)檫@個(gè)候選主在切換的過(guò)程中一定是新的master[server3]
hostname=192.168.80.12
port=3306

10. 第一次配置需要在 Master 節(jié)點(diǎn)上手動(dòng)開(kāi)啟虛擬IP

/sbin/ifconfig ens33:1 192.168.80.200/24

11. 在 manager 節(jié)點(diǎn)上測(cè)試 ssh 無(wú)密碼認(rèn)證,如果正常最后會(huì)輸出 successfully,如下所示。

masterha_check_ssh -conf=/opt/mysql-mha/mysql_mha.cnfTue Nov 26 23:09:45 2020 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Tue Nov 26 23:09:45 2020 - [info] Reading application default configuration from /opt/mysql-mha/mysql_mha.cnf..
Tue Nov 26 23:09:45 2020 - [info] Reading server configuration from /opt/mysql-mha/mysql_mha.cnf..
Tue Nov 26 23:09:45 2020 - [info] Starting SSH connection tests..
Tue Nov 26 23:09:46 2020 - [debug]?
Tue Nov 26 23:09:45 2020 - [debug] ?Connecting via SSH from root@192.168.80.11(192.168.80.11:22) to root@192.168.80.12(192.168.80.12:22)..
Tue Nov 26 23:09:46 2020 - [debug] ? ok.
Tue Nov 26 23:09:47 2020 - [debug]?
Tue Nov 26 23:09:46 2020 - [debug] ?Connecting via SSH from root@192.168.80.12(192.168.80.12:22) to root@192.168.80.11(192.168.80.11:22)..
Tue Nov 26 23:09:47 2020 - [debug] ? ok.
Tue Nov 26 23:09:47 2020 - [info] All SSH connection tests passed successfully.

12. 在 manager 節(jié)點(diǎn)上測(cè)試 mysql 主從連接情況,最后出現(xiàn) MySQL Replication Health is OK 字樣說(shuō)明正常。如下所示。

masterha_check_repl -conf=/opt/mysql-mha/mysql_mha.cnfTue Nov 26 23:10:29 2020 - [info] Slaves settings check done.
Tue Nov 26 23:10:29 2020 - [info]?
192.168.80.11(192.168.80.11:3306) (current master)+--192.168.80.12(192.168.80.12:3306)Tue Nov 26 23:10:29 2020 - [info] Checking replication health on 192.168.80.12..
Tue Nov 26 23:10:29 2020 - [info] ?ok.
Tue Nov 26 23:10:29 2020 - [info] Checking master_ip_failover_script status:
Tue Nov 26 23:10:29 2020 - [info] ? /usr/local/bin/master_ip_failover --command=status --ssh_user=root --orig_master_host=192.168.80.11 --orig_master_ip=192.168.80.11 --orig_master_port=3306?IN SCRIPT TEST====/sbin/ifconfig ens33:1 down==/sbin/ifconfig ens33:1 192.168.80.200===Checking the Status of the script.. OK?
Tue Nov 26 23:10:29 2020 - [info] ?OK.
Tue Nov 26 23:10:29 2020 - [warning] shutdown_script is not defined.
Tue Nov 26 23:10:29 2020 - [info] Got exit code 0 (Not master dead).MySQL Replication Health is OK.

13. 在 manager 節(jié)點(diǎn)上啟動(dòng) MHA

nohup masterha_manager \
--conf=/opt/mysql-mha/mysql_mha.cnf \
--remove_dead_master_conf \
--ignore_last_failover > /var/log/mha_manager.log < /dev/null 2>&1 &
  • --remove_dead_master_conf:該參數(shù)代表當(dāng)發(fā)生主從切換后,老的主庫(kù)的 ip 將會(huì)從配置文件中移除。
  • --ignore_last_failover:在缺省情況下,如果 MHA 檢測(cè)到連續(xù)發(fā)生宕機(jī),且兩次宕機(jī)間隔不足 8 小時(shí)的話(huà),則不會(huì)進(jìn)行 Failover, 之所以這樣限制是為了避免 ping-pong 效應(yīng)。該參數(shù)代表忽略上次 MHA 觸發(fā)切換產(chǎn)生的文件,默認(rèn)情況下,MHA 發(fā)生切換后會(huì)在 app1.failover.complete 日志文件中記錄,下次再次切換的時(shí)候如果發(fā)現(xiàn)該目錄下存在該文件將不允許觸發(fā)切換, 除非在第一次切換后刪除該文件,為了方便,這里設(shè)置為--ignore_last_failover。
  • 使用&后臺(tái)運(yùn)行程序:結(jié)果會(huì)輸出到終端;使用Ctrl+C發(fā)送SIGINT信號(hào),程序免疫;關(guān)閉session發(fā)送SIGHUP信號(hào),程序關(guān)閉。
  • 使用nohup運(yùn)行程序:結(jié)果默認(rèn)會(huì)輸出到nohup.out;使用Ctrl+C發(fā)送SIGINT信號(hào),程序關(guān)閉;關(guān)閉session發(fā)送SIGHUP信號(hào),程序免疫。
  • 使用nohup和&配合來(lái)啟動(dòng)程序nohup ./test &:同時(shí)免疫SIGINT和SIGHUP信號(hào)。
    ?

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

masterha_check_status --conf=/opt/mysql-mha/mysql_mha.cnf

15.查看 MHA 日志,也以看到當(dāng)前的 master 是 192.168.80.10,如下所示。

cat /opt/mysql-mha/manager.log | grep "current master"

16.查看 mysql1 的 VIP 地址 192.168.80.200 是否存在,這個(gè) VIP 地址不會(huì)因?yàn)?manager 節(jié)點(diǎn)停止 MHA 服務(wù)而消失。

ifconfig
//若要關(guān)閉 manager 服務(wù),可以使用如下命令。
masterha_stop --conf=/opt/mysql-mha/mysql_mha.cnf
或者可以直接采用 kill 進(jìn)程 ID 的方式關(guān)閉。

七、故障模擬

#在 manager 節(jié)點(diǎn)上監(jiān)控觀察日志記錄
tail -f /opt/mysql-mha/manager.log#在 Master 節(jié)點(diǎn) mysql1 上停止mysql服務(wù)
systemctl stop mysqld
或
pkill -9 mysql#正常自動(dòng)切換一次后,MHA 進(jìn)程會(huì)退出。HMA 會(huì)自動(dòng)修改 app1.cnf 文件內(nèi)容,將宕機(jī)的 mysql1 節(jié)點(diǎn)刪除。查看 mysql2 是否接管 VIP
ifconfig

八、故障切換備選主庫(kù)的算法

1.一般判斷從庫(kù)的是從(position/GTID)判斷優(yōu)劣,數(shù)據(jù)有差異,最接近于master的slave,成為備選主。
2.數(shù)據(jù)一致的情況下,按照配置文件順序,選擇備選主庫(kù)。
3.設(shè)定有權(quán)重(candidate_master=1),按照權(quán)重強(qiáng)制指定備選主。
(1)默認(rèn)情況下如果一個(gè)slave落后master 100M的relay logs的話(huà),即使有權(quán)重,也會(huì)失效。
(2)如果check_repl_delay=0的話(huà),即使落后很多日志,也強(qiáng)制選擇其為備選主。

九、故障修復(fù)步驟

1. 修復(fù)mysql

systemctl restart mysqld

2. 修復(fù)主從

#在現(xiàn)主庫(kù)服務(wù)器 mysql2 查看二進(jìn)制文件和同步點(diǎn)
show master status;#在原主庫(kù)服務(wù)器 mysql1 執(zhí)行同步操作
change master to master_host='192.168.80.11',master_user='myslave',master_password='myslave123',master_log_file='mysql-bin.000001',master_log_pos=1745;start slave;

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

vi /etc/masterha/app1.cnf
......
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.80.10 -s 192.168.80.11 -s 192.168.80.12
......
[server1]
hostname=192.168.80.11
port=3306[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.80.10
port=3306[server3]
hostname=192.168.80.12
port=3306

4. 在 manager 節(jié)點(diǎn)上啟動(dòng) MHA

nohup masterha_manager \
--conf=/opt/mysql-mha/mysql_mha.cnf \
--remove_dead_master_conf \
--ignore_last_failover < /dev/null > /var/log/mha_manager.log 2>&1 &

十、解決中英字不兼容報(bào)錯(cuò)的問(wèn)題

dos2unix /usr/local/bin/master_ip_failover?

http://www.risenshineclean.com/news/46688.html

相關(guān)文章:

  • 網(wǎng)站首頁(yè)大圖怎么做優(yōu)化推廣網(wǎng)站排名
  • 知名網(wǎng)站建設(shè)定制如何聯(lián)系百度客服
  • 電梯配件做外貿(mào)在哪個(gè)網(wǎng)站上海網(wǎng)絡(luò)推廣招聘
  • 網(wǎng)站開(kāi)發(fā)調(diào)研方案中小企業(yè)網(wǎng)絡(luò)營(yíng)銷(xiāo)現(xiàn)狀
  • 如何做網(wǎng)站首頁(yè)百度查重
  • 網(wǎng)站代碼制作軟件網(wǎng)絡(luò)營(yíng)銷(xiāo)五種方法
  • wordpress國(guó)外主題慢點(diǎn)擊排名優(yōu)化
  • 網(wǎng)站后臺(tái)動(dòng)態(tài)播放怎么做的招代理最好的推廣方式
  • 網(wǎng)站如何兼容大多瀏覽器怎么注冊(cè)電商平臺(tái)
  • 溧陽(yáng)網(wǎng)站設(shè)計(jì)唐山seo排名
  • 做安全題目是哪個(gè)網(wǎng)站長(zhǎng)沙百度網(wǎng)站快速排名
  • 蘇州網(wǎng)站建設(shè)設(shè)計(jì)公司免費(fèi)網(wǎng)站建設(shè)制作
  • 做內(nèi)貿(mào)只要有什么網(wǎng)絡(luò)推廣網(wǎng)站搜索引擎技術(shù)基礎(chǔ)
  • 網(wǎng)站功能測(cè)試方法怎么做好公司官網(wǎng)推廣
  • 手機(jī)怎么做網(wǎng)站免費(fèi)的百度學(xué)術(shù)官網(wǎng)入口
  • 電腦維修 做網(wǎng)站小廣告圖片
  • 網(wǎng)站建設(shè)系統(tǒng) 招標(biāo)西安百度seo推廣電話(huà)
  • 濟(jì)寧做網(wǎng)站有哪幾家職業(yè)培訓(xùn)機(jī)構(gòu)需要什么資質(zhì)
  • 招商平臺(tái)公司山西seo排名
  • 做棋牌推廣網(wǎng)站違法不網(wǎng)絡(luò)推廣站
  • 天津網(wǎng)站建設(shè)定制公司免費(fèi)seo網(wǎng)站推廣在線(xiàn)觀看
  • 什么視頻網(wǎng)站可以做鏈接深圳網(wǎng)站開(kāi)發(fā)公司
  • 商河做網(wǎng)站多少錢(qián)my77728域名查詢(xún)
  • 做網(wǎng)站要學(xué)多久電商運(yùn)營(yíng)
  • 為男人做購(gòu)物網(wǎng)站攜程: 2023年旅行搜索上漲超900%
  • 網(wǎng)站建設(shè)招標(biāo)公告首頁(yè)排名關(guān)鍵詞優(yōu)化
  • 鄭州網(wǎng)站建設(shè)方案書(shū)網(wǎng)絡(luò)的推廣
  • 微網(wǎng)站制作公司佛山疫情最新消息
  • 濰坊做企業(yè)手機(jī)版網(wǎng)站濰坊在線(xiàn)制作網(wǎng)站
  • 網(wǎng)站設(shè)計(jì)美工多少網(wǎng)絡(luò)推廣電話(huà)