真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQLMHA詳細搭建過程-創(chuàng)新互聯(lián)

環(huán)境:

成都創(chuàng)新互聯(lián)主要從事網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、微信平臺小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等多方位專業(yè)化運作于一體。

用3臺服務(wù)器搭建MySQL MHA

主節(jié)點:192.168.157.128 ? CentOS 7.6

數(shù)據(jù)庫:mysql-5.7.27-linux-glibc2.12-x86_64

從節(jié)點:192.168.157.129 ? CentOS 7.6

數(shù)據(jù)庫:mysql-5.7.27-linux-glibc2.12-x86_64

管理節(jié)點:192.168.157.130 ? CentOS 7.6

數(shù)據(jù)庫:mysql-5.7.27-linux-glibc2.12-x86_64

1、3臺服務(wù)器都安裝操作系統(tǒng) CentOS 7.6

2、?MySQL ?安裝以及主從設(shè)置

三臺機器都要做:

關(guān)閉防火墻:

systemctlstop firewalld.service

systemctl disable firewalld.service

systemctlstatus firewalld.service

#關(guān)閉selinux

setenforce 0

PS:

臨時關(guān)閉:

[root@localhost ~]#?getenforce

Enforcing

[root@localhost ~]#?setenforce 0

[root@localhost ~]#?getenforce

Permissive

永久關(guān)閉:

[root@localhost ~]# vi /etc/sysconfig/selinux

SELINUX=enforcing 改為?SELINUX=disabled

重啟服務(wù)reboot

#刪除預(yù)裝mysql

rpm -qa|grep mariadb

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

#解壓

tar zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz ?-C ?/opt

#改名

mv mysql-5.7.27-linux-glibc2.12-x86_64 mysql

#新建mysql用戶

useradd mysql

passwd mysql

#

#初始化

mkdir -p /opt/mysql/data

chown -R mysql:mysql /opt/

chown -R mysql:mysql /opt/

#建立相關(guān)文件夾

mkdir -p?/opt/mysql/tmp

mkdir -p?/opt/mysql/log

#更改文件夾權(quán)限

chown -R mysql:mysql /opt/mysql

#創(chuàng)建mysql.err文件

[root@mha02 opt]# cd mysql/log

[root@mha02 log]# ll

total 0

[root@mha02 log]# touch mysql.err

[root@mha02 log]# chown -R mysql:mysql mysql.err

#初始化數(shù)據(jù)庫

mysql/bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/ --datadir=/opt/mysql/data/

#簡單配置

ln -s /opt/mysql/bin/mysql /usr/bin

ln -s /opt/mysql/bin/mysqladmin /usr/bin

ln -s /opt/mysql/bin/mysqldump /usr/bin

#mysql配置文件,每個服務(wù)器的server-id要不同

vi /etc/my.cnf

[client]

port=3306

socket=/opt/mysql/tmp/mysql.sock

[mysqld]

user=mysql

datadir=/opt/mysql/data

basedir=/opt/mysql

socket=/opt/mysql/tmp/mysql.sock

log-error=/opt/mysql/log/mysql.err

pid-file=/opt/mysql/tmp/mysqld.pid

#? id每臺機器要不同

server-id = 186

#做雙主時的設(shè)置,保證另一個主庫操作能寫入

log_slave_updates

#從庫不會跟著主庫重啟

skip-slave-start

#開啟gtid模式,5.7特有

gtid_mode = on

enforce_gtid_consistency = 1

log_slave_updates = 1

#半同步復(fù)制模式

plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

loose_rpl_semi_sync_master_enabled = 1

loose_rpl_semi_sync_slave_enabled = 1

loose_rpl_semi_sync_master_timeout = 5000

#指定binlog與relay地址

log-bin???= /opt/mysql/log/mysql-bin

relay-log = /opt/mysql/log/mysql-relay-bin

#不要同步哪些庫,較好的寫法

replicate-wild-ignore-table=mysql.%

replicate-wild-ignore-table=test.%

replicate-wild-ignore-table=information_schema.%

#開啟數(shù)據(jù)庫

/opt/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

#登錄數(shù)據(jù)庫,修改root密碼

mysql -p

之前初始化的密碼

mysql> alter user root@'localhost' identified by '123456';

mysql>flush privileges;

增加root遠程登錄用戶:

mysql> create user root@'%' identified by '123456';

Query OK, 0 rows affected (0.01 sec)

mysql> grant all privileges on *.* to root@'%';

mysql> flush privileges;

關(guān)閉MySQL服務(wù):

[root@mha01 bin]# mysqladmin -uroot -p -S /opt/mysql/tmp/mysql.sock shutdown

開啟MySQL服務(wù):

/opt/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

同樣在其余兩個服務(wù)器上安裝MySQL服務(wù)。

#登錄mysql,在三個mysql中都配置賬號,注意,不能把mysql庫作為binlog復(fù)制庫,否則新建的slave賬號會報錯

#創(chuàng)建slave賬號

mysql> grant replication slave,replication client on *.* to 'repl'@'%' identified by '123456';

#創(chuàng)建mha管理賬號

mysql> grant all on *.* to 'monitor'@'%' identified by '123456';

#在slave節(jié)點上執(zhí)行

mysql> set global read_only=1;

#由于從庫隨時會提升成主庫,不能寫在配置文件里

#MHA需要通過relay-log去校驗slave是否數(shù)據(jù)讀寫一致,不要寫進配置文件,所有mysql節(jié)點執(zhí)行

mysql>set global relay_log_purge=0;

#設(shè)置主從

1、主庫查看master

mysql> show master status;

+------------------+----------+--------------+------------------+------------------------------------------+

| File ? ? ? ? ? ? | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set ? ? ? ? ? ? ? ? ? ? ? ?|

+------------------+----------+--------------+------------------+------------------------------------------+

| mysql-bin.000002 | ? ? ?932 | ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?| 58d16735-bdae-11e9-b8d3-000c29f97b79:1-8 |

+------------------+----------+--------------+------------------+------------------------------------------+

1 row in set (0.00 sec)

2、slave庫執(zhí)行

mysql> change master to ?

master_host='192.168.157.128',

master_user='repl',

master_password='123456',

master_log_file='mysql-bin.000002',

master_log_pos=932;

用GTID啟動slave:

mysql>change master to

master_host='192.168.157.128',

master_user='repl',

master_password='123456',

master_auto_position=1;

mysql> start slave;

Query OK, 0 rows affected (0.02 sec)

mysql> show slave status\G;

? ? ? ? ? ?Relay_Master_Log_File: mysql-bin.000003

Slave_IO_Running: Yes

? ? ? ? ? ?Slave_SQL_Running: Yes

看到兩個YES,即代表主從成功。

3、搭建MHA

三臺主機ssh互信

注意:三臺主機都要做,并且要本機對本機的SSH認證

#因為mha需要manager對自己ssh免密登錄

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub?root@192.168.157.128

ssh-copy-id -i ~/.ssh/id_rsa.pub?root@192.168.157.129

ssh-copy-id -i ~/.ssh/id_rsa.pub?root@192.168.157.130

MHA安裝配置:

三臺機器都要做:

在/opt目錄下安裝:

在所有節(jié)點安裝MHA node所需的perl模塊,如下:

#CentOS 6 下載點

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

#CentOS 7 下載點

rpm -ivh?http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

#安裝所需控件

#yum?install?-y?perl-DBD-MySQL?perl-Config-Tiny?perl-Log-Dispatch?perl-Parallel-ForkManager?perl-Time-HiRes??

yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-YAML-Tiny perl-PAR-Dist perl-Module-ScanDeps perl-Module-CoreList perl-Module-Build perl-CPAN perl-CPANPLUS perl-File-Remove perl-Module-Install

#下載node和manager軟件

#?node git 地址:https://github.com/yoshinorim/mha4mysql-node

# manager git 地址:https://github.com/yoshinorim/mha4mysql-manager

# node 所有機器都要安裝

# manager 只需要管理節(jié)點安裝

yum -y install git

git clone?https://github.com/yoshinorim/mha4mysql-node.git

#管理節(jié)點安裝

git clone?https://github.com/yoshinorim/mha4mysql-manager.git

安裝MHA

cd?/opt/mha4mysql-node

perl Makefile.PL

make && make install

cd?/opt/mha4mysql-manager

perl Makefile.PL

make && make install

注意:在perl Makefile.PL時,可能會出現(xiàn)類似Can't locate inc/Module/XXX.pm in @INC的報錯

? ? ? ? 這是由于缺少組件造成的,只需要安裝相應(yīng)附件

? ? ? ? 例: yum -y install perl-Module-XXX? 一般有對應(yīng)的名字插件,安裝就好

#node方面的都已經(jīng)配好了,然后是manager節(jié)點的操作

配置 Manager 節(jié)點,以下步驟都是Manager節(jié)點操作

#新建MHA配置文件

mkdir /var/log/mha/app1 -p

touch /var/log/mha/app1/manager.log

vi /etc/masterha.cnf

[server default]

#監(jiān)控用戶

user=monitor

password=123456

#ssh 用戶

ssh_user=root

#slave 用戶

repl_user=repl

repl_password=123456

#ping 三次不通判斷失聯(lián)

ping_interval=3

#使用其他主機去ping,判斷是否主機本身故障

secondary_check_script=masterha_secondary_check -s 192.168.157.128 -s 192.168.157.129 -s 192.168.157.130

#相關(guān)腳本位置,都要自建,默認是沒有的

master_ip_failover_script=/usr/local/bin/master_ip_failover

master_ip_online_change_script= /usr/local/bin/master_ip_online_change

report_script=/usr/local/bin/send_report

#指定MHA日志目錄

manager_workdir=/var/log/mha/app1

manager_log=/var/log/mha/app1/manager.log

#指定bin-log位置

master_binlog_dir=/opt/mysql/log/

remote_workdir=/var/log/mha/mysqltmp

[server1]

hostname=192.168.157.128

port=3306

[server2]

hostname=192.168.157.129

port=3306

#是否無視落后進度讓他成為master

candidate_master=1

check_repl_delay=0

[server3]

hostname=192.168.157.130

#永遠不會成為master。多用于manager

no_master=1

port=3306

#配置VIP

#為了防止腦裂發(fā)生,推薦生產(chǎn)環(huán)境采用腳本的方式來管理虛擬 ip,而不是使用 keepalived來完成

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

);

#定義VIP變量

#此處修改VIP地址,預(yù)先選擇的VIP地址

my $vip = '192.168.157.197/24';

my $key = '1';

#修改ifconfig之后的網(wǎng)卡名,其他地方都不要改動

my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";

my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";

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 \"`;

}

sub stop_vip() {

? ? ? ?return 0 unless ($ssh_user);

? ? ? ?`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";

}

#配置報警郵件腳本

#安裝郵件

yum install mailx -y

vi /etc/mail.rc

#修改mail配置文件,在配置文件最后新增

#郵箱地址

set from=ywzj_002@163.com

#郵箱的smtp地址

set smtp=smtp.163.com

#郵箱的用戶名

set smtp-auth-user=ywzj_002

#這個并非郵箱密碼,而是授權(quán)碼

set smtp-auth-password=pousheng123

set smtp-auth=login

vi?/usr/local/bin/send_report

#!/bin/bash

source /root/.bash_profile

orig_master_host=`echo "$1" | awk -F = '{print $2}'`

new_master_host=`echo "$2" | awk -F = '{print $2}'`

new_slave_hosts=`echo "$3" | awk -F = '{print $2}'`

subject=`echo "$4" | awk -F = '{print $2}'`

body=`echo "$5" | awk -F = '{print $2}'`

email="ywzj_001@163.com"

tac /var/log/mha/app1/manager.log | sed -n 2p | grep 'successfully' > /dev/null

if [ $? -eq 0 ]

? ? ? ?then

? ? ? ?messages=`echo -e "MHA $subject 主從切換成功\n master:$orig_master_host -->

$new_master_host \n $body \n 當前從庫:$new_slave_hosts"`

? ? ? ?echo "$messages" | mail -s "Mysql 實例宕掉,MHA $subject 切換成功" $email >

>/tmp/mailx.log 2>&1

? ? ? ?else

? ? ? ?messages=`echo -e "MHA $subject 主從切換失敗\n master:$orig_master_host -->

$new_master_host \n $body" `

? ? ? ?echo "$messages" | mail -s ""Mysql 實例宕掉,MHA $subject 切換失敗"" $email

>>/tmp/mailx.log 2>&1

fi

#配置VIP更換腳本

vi /usr/local/bin/master_ip_online_change

#預(yù)先選擇的VIP地址

vip=`echo '192.168.157.197/24'`

key=`echo '1'`

command=`echo "$1" | awk -F = '{print $2}'`

orig_master_host=`echo "$2" | awk -F = '{print $2}'`

new_master_host=`echo "$7" | awk -F = '{print $2}'`

orig_master_ssh_user=`echo "${12}" | awk -F = '{print $2}'`

new_master_ssh_user=`echo "${13}" | awk -F = '{print $2}'`

#修改網(wǎng)卡名稱

stop_vip=`echo "ssh root@$orig_master_host /usr/sbin/ifconfig ens33:$key down"`

start_vip=`echo "ssh root@$new_master_host /usr/sbin/ifconfig ens33:$key $vip"`

if [ $command = 'stop' ]

?then

? ?echo -e "\n\n\n****************************\n"

? ?echo -e "Disabled thi VIP - $vip on old master: $orig_master_host \n"

? ?$stop_vip

? ?if [ $? -eq 0 ]

? ? ?then

? ? ? ?echo "Disabled the VIP successfully"

? ? ?else

? ? ? ?echo "Disabled the VIP failed"

? ?fi

? ?echo -e "***************************\n\n\n"

?fi

? ? ? ?if [ $command = 'start' -o $command = 'status' ]

?then

? ?echo -e "\n\n\n*************************\n"

? ?echo -e "Enabling the VIP - $vip on new master: $new_master_host \n"

? ?$start_vip

? ?if [ $? -eq 0 ]

? ? ?then

? ? ? ?echo "Enabled the VIP successfully"

? ? ?else

? ? ? ?echo "Enabled the VIP failed"

? ?fi

? ?echo -e "***************************\n\n\n"

fi

#賦予腳本權(quán)限

#*代表之前創(chuàng)建的三個腳本

chmod 555 /usr/local/bin/*

chmod 555 /usr/local/bin/master_ip_failover

chmod 555 /usr/local/bin/master_ip_online_change

chmod 555 /usr/local/bin/send_report

#測試MHA設(shè)置是否正確

masterha_check_repl --conf=/etc/masterha.cnf

。。。

MySQL Replication Health is OK.

最后?顯示OK,才算正常,否則就要看報錯信息,按照之前的操作配置,基本不會有錯誤。

#在主庫,而不是Manager管理口,配置VIP到網(wǎng)口

/usr/sbin/ifconfig ens33:1 192.168.157.197/24

注意:如果是最小化安裝,需yum ifconfig

? ? ? ? yum -y install net-tools

#在Manager節(jié)點操作

#啟動MHA

nohup masterha_manager --conf=/etc/masterha.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

#檢查狀態(tài)

[root@mha03 bin]# masterha_check_status --conf=/etc/masterha.cnf

masterha (pid:15546) is running(0:PING_OK), master:192.168.157.128

#顯示OK則正常

測試切換功能以及主庫宕機上線:

1、在線切換

#MHA 在線切換是 MHA 除了自動監(jiān)控切換換提供的另外一種方式,多用于諸如硬件升級,MySQL 數(shù)據(jù)庫遷移等等。該方式提供快速切換和優(yōu)雅的阻塞寫入,無需關(guān)閉原有服務(wù)器,整個切換過程在 0.5-2s 的時間左右,大大減少了停機時間

注意:需要關(guān)閉mha監(jiān)控才能運行

? ? ? ??A、老master上的vip已經(jīng)正確生效了

??? ???B、各個salve節(jié)點數(shù)據(jù)庫的sql_IO和sql_sql進程都正常(即YES)

??? ??? ??? ?show slave status\G;

??? ???C、MHA腳本不能運行,若已處于監(jiān)控狀態(tài),需要停掉它

??? ??? ??? ?masterha_stop --conf=/etc/masterha.cnf

#執(zhí)行切換

#需要填寫新的master的IP

masterha_master_switch --conf=/etc/masterha.cnf --master_state=alive?--new_master_host=192.168.157.129?--orig_master_is_new_slave --running_updates_limit=10000 --interactive=0

masterha_master_switch --conf=/etc/masterha.cnf --master_state=alive?--new_master_host=192.168.157.128?--orig_master_is_new_slave --running_updates_limit=10000 --interactive=0

#MHA 在線切換基本步驟:

a、檢測 MHA 配置置及確認當前 master

b、決定新的 master

c、阻塞寫入到當前 master

d、等待所有從服務(wù)器與現(xiàn)有 master 完成同步

e、在新 master 授予寫權(quán)限,以及并行切換從庫

f、重置原 master 為新 master 的 slave

g、在線切換不會刪除/etc/masterha.cnf 配置文件中原來老的 master 配置

注意:如果手動切換后,原來的配置如果想直接運行,需要在配置文件中將master的地址改成新的IP,原Master主機的IP寫到slave中

2、自動切換

? 第一:要實現(xiàn)自動 Failover,必須先啟動 MHA Manager,否則無法自動切換

A、殺掉主庫 mysql 進程,模擬主庫發(fā)生故障,進行自動 failover 操作。

B、看 MHA 切換日志,了解整個切換過程

tailf ?/var/log/mha/app1/manager.log

? 第二:從上面的輸出可以看出整個 MHA 的切換過程,共包括以下的步驟:

1).配置文件檢查階段,這個階段會檢查整個集群配置文件配置

2).宕機的 master 處理,這個階段包括虛擬 ip 摘除操作,主機關(guān)機操作(由于沒有定義power_manager腳本,不會關(guān)機)

3).復(fù)制 dead maste 和最新 slave 相差的 relay log,并保存到 MHA Manger 具體的目錄下

4).識別含有最新更新的 slave

5).應(yīng)用從 master 保存的二進制日志事件(binlog events)(這點信息對于將故障master修復(fù)后加入集群很重要)

6).提升一個 slave 為新的 master 進行復(fù)制

7).使其他的 slave 連接新的 master 進行復(fù)制

? 第三:切換完成后,關(guān)注如下變化:

1、vip 自動從原來的 master 切換到新的 master,同時,manager 節(jié)點的監(jiān)控進程自動退出。

2、在日志目錄(/var/log/mha/app1)產(chǎn)生一個 app1.failover.complete 文件

? ?3、/etc/mha/app1.cnf 配置文件中原來老的 master 配置被刪除。

4、切換一次后,MHA監(jiān)控程序會stop,需要重新修改配置文件后再次重啟

#會發(fā)現(xiàn)此時192.168.157.129從庫已經(jīng)提升為主庫,并且MHA Manager已停止運行。

重要:將主庫重新恢復(fù)加入到隊列的操作

1)、修改 manager 配置文件(只針對自動切換的,在線切換不會刪除配置)

#將如下內(nèi)容添加到/etc/masterha.cnf中

[server1]

hostname=192.168.157.128

candidate_master=1

? ?port=3306

master_binlog_dir=/opt/mysql/log/

#由于之前主庫宕機后,MHA會自動將配置文件內(nèi)宕機的主庫信息刪除

#主庫恢復(fù)如需重新加入,需要在配置文件新增原主庫信息,并作為從庫加入

2)、修復(fù)老的 master,然后設(shè)置為 slave

從自動切換時刻的 MHA 日志上可以發(fā)現(xiàn)類似如下信息:

#意思是說,如果 Master 主機修復(fù)好了,可以在修復(fù)好后的 Master 上執(zhí)行 CHANGE MASTER操作,作為新的 slave 庫。

[root@mha03 app1]# cat ?manager.log|grep CHANGE

[root@mha03 app1]# pwd

/var/log/mha/app1

#GTID沒有開啟

Sat May 27 14:59:17 2017 - [info] All other slaves should start replication from here. Statement

should be: CHANGE MASTER TO MASTER_HOST='10.0.40.187', MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.000009',?MASTER_LOG_POS=120, MASTER_USER='repl',

MASTER_PASSWORD='xxx';

#GTID開啟

Sat May 19 05:00:48 2018 - [info]??All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='10.0.40.187', MASTER_PORT=3306,?MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='xxx';

Thu Aug 15 15:31:18 2019 - [info] ?All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='192.168.157.129', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='xxx';

Thu Aug 15 15:31:19 2019 - [info] ?Executed CHANGE MASTER.

在老的 master 執(zhí)行如下命令:(具體執(zhí)行哪條,根據(jù)上面輸出來確定,區(qū)別是一個有日志的定位,一個是自動定位)

?#GTID沒有開啟,按照日志的log-file和log-pos填寫

? mysql> change master to master_host='10.0.40.187',master_user='repl',master_password='123456',master_log_file='mysql-bin.0000124',master_log_pos=120;

#GTID開啟,只能使用MASTER_AUTO_POSITION=1,否則報錯

mysql> change master to master_host='10.0.40.187',master_user='repl',master_password='123456',MASTER_AUTO_POSITION=1;

CHANGE MASTER TO MASTER_HOST='192.168.157.129', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123456';

mysql> CHANGE MASTER TO MASTER_HOST='192.168.157.129', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123456';

Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G;

鄭州不孕不育醫(yī)院:http://jbk.39.net/yiyuanzaixian/zztjyy/

#這樣,數(shù)據(jù)就開始同步到老的 master 上了。此時老的 master 已經(jīng)重新加入集群,變成 mha集群中的一個 slave 角色了。

(3)、在 manger 節(jié)點上重新啟動監(jiān)控進程

nohup masterha_manager --conf=/etc/masterha.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站欄目:MySQLMHA詳細搭建過程-創(chuàng)新互聯(lián)
文章起源:http://weahome.cn/article/djpgcc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部