国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

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

深圳燃氣公司地址在哪里哈爾濱seo關(guān)鍵字優(yōu)化

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

目錄

一、MHA簡述

二、MHA 的組成

三、MHA 的特點

四、MHA工作原理

五、MHA部署步驟

六、搭建 MySQL MHA

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

實驗環(huán)境

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

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

3. 修改 Master、Slave1、Slave2 節(jié)點的主機名

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

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

6. 配置 mysql 一主兩從

7. 安裝 MHA 軟件

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

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

10. 第一次配置需要在 Master 節(jié)點上手動開啟虛擬IP

11. 在 manager 節(jié)點上測試 ssh 無密碼認證,如果正常最后會輸出 successfully,如下所示。

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

13. 在 manager 節(jié)點上啟動 MHA

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

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

16.查看 mysql1 的 VIP 地址 192.168.80.200 是否存在,這個 VIP 地址不會因為 manager 節(jié)點停止 MHA 服務(wù)而消失。

七、故障模擬

八、故障切換備選主庫的算法

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

1. 修復(fù)mysql

2. 修復(fù)主從

3. 在 manager 節(jié)點上修改配置文件app1.cnf(再把這個記錄添加進去,因為它檢測掉失效時候會自動消失)

4. 在 manager 節(jié)點上啟動 MHA

十、解決中英字不兼容報錯的問題


一、MHA簡述

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

二、MHA 的組成

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

三、MHA 的特點

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

四、MHA工作原理

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

五、MHA部署步驟

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

六、搭建 MySQL MHA

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

實驗環(huán)境

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

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

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

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3. 修改 Master、Slave1、Slave2 節(jié)點的主機名

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

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

Master 節(jié)點

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é)點

vim /etc/my.cnf
server-id = 2 ?? ??? ??? ??? ??? ??? ?#三臺服務(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é)點上都創(chuàng)建兩個軟鏈接

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

6. 配置 mysql 一主兩從

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

mysql -uroot -p
grant replication slave on *.* to 'myslave'@'192.168.80.%' identified by 'myslave123';???#從數(shù)據(jù)庫同步使用
grant all privileges on *.* to 'manager'@'192.168.80.%' identified by 'manager123';?? ???#mha manager 使用grant all privileges on *.* to 'manager'@'mysql1' identified by 'manager123';?? ??? ??? ?#防止從庫通過主機名連接不上主庫
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é)點查看二進制文件和同步點

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

(3)在 Slave1、Slave2 節(jié)點執(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é)點查看數(shù)據(jù)同步結(jié)果

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

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

set global read_only=1;

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

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

7. 安裝 MHA 軟件

(1)所有服務(wù)器上都安裝 MHA 依賴的環(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é)點上安裝 manager 組件,因為 manager 依賴 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é)點上安裝 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 下面會生成幾個工具,主要包括以下幾個:

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

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

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

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

(1)在 manager 節(jié)點上配置到所有數(shù)據(jù)庫節(jié)點的無密碼認證

ssh-keygen -t rsa ?? ??? ??? ??? ?#一路按回車鍵
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ù)庫節(jié)點 mysql2 和 mysql3 的無密碼認證

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

(3)在 mysql2 上配置到數(shù)據(jù)庫節(jié)點 mysql1 和 mysql3 的無密碼認證

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

(4)在 mysql3 上配置到數(shù)據(jù)庫節(jié)點 mysql1 和 mysql2 的無密碼認證

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

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

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

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

(2)復(fù)制上述的自動切換時 VIP 管理的腳本到 /usr/local/bin 目錄,這里使用master_ip_failover腳本來管理 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粘貼亂序問題)

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)卡序列號
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配置文件來管理 mysql 節(jié)點服務(wù)器

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

10. 第一次配置需要在 Master 節(jié)點上手動開啟虛擬IP

/sbin/ifconfig ens33:1 192.168.80.200/24

11. 在 manager 節(jié)點上測試 ssh 無密碼認證,如果正常最后會輸出 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é)點上測試 mysql 主從連接情況,最后出現(xiàn) MySQL Replication Health is OK 字樣說明正常。如下所示。

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

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

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 是否存在,這個 VIP 地址不會因為 manager 節(jié)點停止 MHA 服務(wù)而消失。

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

七、故障模擬

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

八、故障切換備選主庫的算法

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

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

1. 修復(fù)mysql

systemctl restart mysqld

2. 修復(fù)主從

#在現(xiàn)主庫服務(wù)器 mysql2 查看二進制文件和同步點
show master status;#在原主庫服務(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é)點上修改配置文件app1.cnf(再把這個記錄添加進去,因為它檢測掉失效時候會自動消失)

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é)點上啟動 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 &

十、解決中英字不兼容報錯的問題

dos2unix /usr/local/bin/master_ip_failover?

http://aloenet.com.cn/news/46688.html

相關(guān)文章:

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