广告
返回顶部
首页 > 资讯 > 数据库 >MHA的安装搭建和测试
  • 303
分享到

MHA的安装搭建和测试

2024-04-02 19:04:59 303人浏览 独家记忆
摘要

这篇文章主要讲解了“MHA的安装搭建和测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MHA的安装搭建和测试”吧! 环境: 192.168.56

这篇文章主要讲解了“MHA的安装搭建和测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MHA的安装搭建和测试”吧!

环境:

192.168.56.221     MHA1

192.168.56.222     MHA2

192.168.56.223     MHA3

192.168.56.224     MHA4

#221为master 222位slave 223为slave 224为管理节点

##1 安装MHA软件包

https://code.Google.com/p/Mysql-master-ha/

Https://downloads.mariadb.com/MHA/

yum install -y perl-DBD-mysql

yum install -y perl cpan

yum install -y perl-DBD-Mysql perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager

常用rpm搜索网站:

http://rpm.pbone.net/  

perl-Log-Dispatch

perl-Parallel-ForkManager

[root@MHA1 ~]# rpm -ivh perl-Mail-Sender-0.8.16-1.el6.rf.noarch.rpm

warning: perl-Mail-Sender-0.8.16-1.el6.rf.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY

Preparing...                ########################################### [100%]

   1:perl-Mail-Sender       ########################################### [100%]

[root@MHA1 ~]# rpm -ivh perl-Mail-Sendmail-0.79_16-4.2.noarch.rpm

warning: perl-Mail-Sendmail-0.79_16-4.2.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 04b8b50a: NOKEY

Preparing...                ########################################### [100%]

   1:perl-Mail-Sendmail     ########################################### [100%]

[root@MHA1 ~]# yum localinstall perl-Log-Dispatch-2.27-1.el6.noarch.rpm

[root@MHA1 ~]# yum localinstall perl-Parallel-ForkManager-0.7.5-2.2.el6.rf.noarch.rpm

[root@MHA1 ~]# yum localinstall mha4mysql-node-0.54-0.el6.noarch.rpm   #所有节点安装

[root@MHA1 ~]# yum localinstall mha4mysql-manager-0.55-0.el6.noarch.rpm  #管理节点安装

##2 主从同步配置:

#主服务器

mysql> show variables like 'log_bin';

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

| Variable_name | Value |

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

| log_bin       | ON    |

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

1 row in set (0.53 sec)

mysql> grant replication slave on *.* to 'rep'@'%' identified by '123456';   #建议所有mysql服务器配置,以防主从切换

Query OK, 0 rows affected, 1 warning (0.17 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

#从服务器

vi my.cnf

[mysqld]

#slave

relay_log=/usr/local/mysql/logs/relay-log.log

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync_master_info = 1    

sync_relay_log = 1   

sync_relay_log_info = 1

mysql> change master to master_host='192.168.56.221', master_port=3306, master_user='rep', master_passWord='123456', master_log_file='ray-bin.000003', master_log_pos=740;

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

mysql> start slave;

Query OK, 0 rows affected (0.03 sec)

mysql> show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.56.221

                  Master_User: rep

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: ray-bin.000003

          Read_Master_Log_Pos: 740

               Relay_Log_File: relay-log.000003

                Relay_Log_Pos: 318

        Relay_Master_Log_File: ray-bin.000003

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB:

          Replicate_Ignore_DB:

           Replicate_Do_Table:

       Replicate_Ignore_Table:

      Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table:

                   Last_Errno: 0

                   Last_Error:

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 740

              Relay_Log_Space: 519

              Until_Condition: None

               Until_Log_File:

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File:

           Master_SSL_CA_Path:

              Master_SSL_Cert:

            Master_SSL_Cipher:

               Master_SSL_Key:

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error:

               Last_SQL_Errno: 0

               Last_SQL_Error:

  Replicate_Ignore_Server_Ids:

             Master_Server_Id: 21

                  Master_UUID: 262ff2d5-2264-11e7-a823-080027a847bd

             Master_Info_File: mysql.slave_master_info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

           Master_Retry_Count: 86400

                  Master_Bind:

      Last_IO_Error_Timestamp:

     Last_SQL_Error_Timestamp:

               Master_SSL_Crl:

           Master_SSL_Crlpath:

           Retrieved_Gtid_Set:

            Executed_Gtid_Set:

                Auto_Position: 0

         Replicate_Rewrite_DB:

                 Channel_Name:

           Master_TLS_Version:

1 row in set (0.00 sec)

mysql> use mysql

Database changed

mysql> alter table slave_master_info engine=innodb;

Query OK, 0 rows affected (0.23 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table slave_relay_log_info engine=innodb;

Query OK, 0 rows affected (0.08 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table slave_worker_info engine=innodb;

Query OK, 0 rows affected (0.08 sec)

Records: 0  Duplicates: 0  Warnings: 0

##3 配置互信

[root@MHA1 ~]# ssh-keygen -t rsa  #所有节点

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

e2:1c:6a:a3:ae:e5:38:0e:e7:cd:21:50:a5:14:d2:3b root@MHA1

The key's randomart image is:

+--[ RSA 2048]----+

|..o..            |

| o.o             |

|  o.             |

| .E              |

|.  .  o S        |

| .   + o         |

|. + = o          |

|o* * o           |

|+== o            |

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

[root@MHA1 ~]# ssh slave1 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

[root@MHA1 ~]# ssh slave2 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

[root@MHA1 ~]# ssh master cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

[root@MHA1 ~]# ssh MHAManager cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

[root@MHA1 ~]# scp /root/.ssh/authorized_keys slave1:/root/.ssh/authorized_keys

[root@MHA1 ~]# scp /root/.ssh/authorized_keys slave2:/root/.ssh/authorized_keys

[root@MHA1 ~]# scp /root/.ssh/authorized_keys MHAManager:/root/.ssh/authorized_keys

[root@MHA1 ~]# ssh slave1 date;ssh slave2 date;ssh master date;ssh MHAManager date;

Fri Apr 28 10:46:10 CST 2017

Fri Apr 28 10:46:14 CST 2017

Fri Apr 28 10:46:12 CST 2017

Fri Apr 28 10:46:13 CST 2017

[root@MHA1 ~]#

[root@MHA4 ~]# ssh slave1 date;ssh slave2 date;ssh master date;ssh MHAManager date;

Fri Apr 28 10:46:10 CST 2017

Fri Apr 28 10:46:14 CST 2017

Fri Apr 28 10:46:12 CST 2017

Fri Apr 28 10:46:13 CST 2017

[root@MHA4 ~]#

##4 slave服务器上设置只读权限,并关闭自动清除执行完毕的中继日志(relay log)

[mysqld]

read_only = 1

relay_log_purge = 0

mysql -uroot -p123456 -e "set global read_only=on;"

注意:

    设置只读是防止人在slave服务器上误写入,保证主从数据一致

    关闭自动清除执行完毕的中级日志是:假如一台从库没有接受完主库的binlog,那么可以通过MHA把最新的slave上的中级日志发送到最老的slave上,识别差异中级日志并补齐数据

    如果想数据库自动删除执行完毕的日志,可以通过crontab实现,例如想要每天5点删除中继日志

    0 5 * * * /usr/local/mysql/bin/mysql -uroot -p123456 -e "set global relay_log_purge=1;flush logs;set global relay_log_purge=0;flush logs;"

##5 配置MHA监控、管理服务

#创建mha管理账号

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

Query OK, 0 rows affected, 1 warning (0.54 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.23 sec)

#编辑MHA配置文件

############

#manager_workdir和remote_workdir用来定义MHA管理目录,以便存放日志。

#user和password为MHA的管理账号密码

#repl_user和repl_password为复制的账号密码

#如果你的环境是链式复制架构,那么试着multi_tier_slave=1

#ping_interval=1每个一秒检测一次

#ping_type、master_ip_failover_script和master_ip_online_change_script定义故障切换和在线切换

#secondary_check_script是为了防止网络抖动误切换,造成数据不一致。原理:当监控节点无法连接mysql主库是,会视图从其他从服务器去ping和连接mysql主库,只有双方都连接失败,才认定mysql主库宕机,如果有以防可以连接mysql主库,则不发生切换

#ignore_fail=0缺省情况下,当某个Slave故障时(比如:不能通过MySQL/SSH连接,SQL线程因错误停止等),MHA不开启故障切换;若设置为1,则对应的那个Slave出现故障时自动切换。

#candidate_master用于设置某个Slave是否可以优先成为Master。若设置为1,则对应的那个Slave可优先成为新的Master;若多个Slave均设置该参数为1,则成为Master的优先级按照[server_1]/[server_2]/…排序

#master_binlog_dir=  MySQL主库的binlog日志文件的全路径,缺省为/var/lib/mysql,根据实际情况设置为真实的路径。该参数适用于这么一种情况:Master实例故障,但OS系统运行正常,此时MHA可通过SSH登录,然后读取并拷贝必须的二进制日志事件(即差异的日志)。#可见该参数是必要而有用的,因为Master死掉后,MHA无法自动获取binlog日志文件的路径。另外,可用逗号隔开设置多个路径。

#check_repl_delay 缺省情况下,如果某个Slave延迟超过100MB的relay logs,MHA则不会选择该Slave成为新的Master,因为这需要太长的时间来恢复。若设置该参数为0,MHA在选择新的Master时,会忽略复制延迟。

############

vi /etc/mha.cnf

[server default]

user=mhaadmin

password=123456

manager_workdir=/usr/local/mha

manager_log=/usr/local/mha/manager.log

remote_workdir=/usr/local/mha

ssh_user=root

ssh_port=22

repl_user=rep

repl_password=123456

ping_interval=1

ping_type=CONNECT

master_ip_failover_script=/usr/local/mha/scripts/master_ip_failover

master_ip_online_change_script=/usr/local/mha/scripts/master_ip_online_change

secondary_check_script=/usr/bin/masterha_secondary_check -s 192.168.56.222 -s 192.168.56.223 -s 192.168.56.224 --user=root --master_host=master --master_ip=192.168.56.221 --master_port=3306

[server1]

ignore_fail=0

check_repl_delay=1

hostname=MHA1

ip=192.168.56.221

ssh_port=22

port=3306

master_binlog_dir=/usr/local/mysql/logs/

candidate_master=1

[server2]

ignore_fail=0

check_repl_delay=1

hostname=MHA2

ip=192.168.56.222

ssh_port=22

port=3306

master_binlog_dir=/usr/local/mysql/logs/

candidate_master=1

[server3]

ignore_fail=0

check_repl_delay=1

hostname=MHA3

ip=192.168.56.223

ssh_port=22

port=3306

master_binlog_dir=/usr/local/mysql/logs/

candidate_master=1

##使用工具检测ssh

[root@MHA4 logs]# masterha_check_ssh --conf=/etc/mha.cnf

Fri Apr 28 15:11:14 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.

Fri Apr 28 15:11:14 2017 - [info] Reading application default configurations from /etc/mha.cnf..

Fri Apr 28 15:11:14 2017 - [info] Reading server configurations from /etc/mha.cnf..

Fri Apr 28 15:11:14 2017 - [info] Starting SSH connection tests..

Fri Apr 28 15:11:17 2017 - [debug]

Fri Apr 28 15:11:15 2017 - [debug]  Connecting via SSH from root@master(192.168.56.221:22) to root@slave1(192.168.56.222:22)..

Fri Apr 28 15:11:15 2017 - [debug]   ok.

Fri Apr 28 15:11:15 2017 - [debug]  Connecting via SSH from root@master(192.168.56.221:22) to root@slave2(192.168.56.223:22)..

Fri Apr 28 15:11:17 2017 - [debug]   ok.

Fri Apr 28 15:11:17 2017 - [debug]

Fri Apr 28 15:11:15 2017 - [debug]  Connecting via SSH from root@slave1(192.168.56.222:22) to root@master(192.168.56.221:22)..

Fri Apr 28 15:11:16 2017 - [debug]   ok.

Fri Apr 28 15:11:16 2017 - [debug]  Connecting via SSH from root@slave1(192.168.56.222:22) to root@slave2(192.168.56.223:22)..

Fri Apr 28 15:11:17 2017 - [debug]   ok.

Fri Apr 28 15:11:17 2017 - [debug]

Fri Apr 28 15:11:16 2017 - [debug]  Connecting via SSH from root@slave2(192.168.56.223:22) to root@master(192.168.56.221:22)..

Fri Apr 28 15:11:17 2017 - [debug]   ok.

Fri Apr 28 15:11:17 2017 - [debug]  Connecting via SSH from root@slave2(192.168.56.223:22) to root@slave1(192.168.56.222:22)..

Fri Apr 28 15:11:17 2017 - [debug]   ok.

Fri Apr 28 15:11:17 2017 - [info] All SSH connection tests passed successfully.

[root@MHA4 ~]# masterha_check_repl --conf=/etc/mha.cnf

Fri Apr 28 16:12:44 2017 - [info]   /usr/local/mha/scripts/master_ip_failover --command=status --ssh_user=root --orig_master_host=MHA1 --orig_master_ip=192.168.56.221 --orig_master_port=3306

Bareword "FIXME_xxx" not allowed while "strict subs" in use at /usr/local/mha/scripts/master_ip_failover line 93.

Execution of /usr/local/mha/scripts/master_ip_failover aborted due to compilation errors.

Fri Apr 28 16:12:44 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln216]  Failed to get master_ip_failover_script status with return code 255:0.

Fri Apr 28 16:12:44 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln386] Error happend on checking configurations.  at /usr/bin/masterha_check_repl line 48

Fri Apr 28 16:12:44 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln482] Error happened on monitoring servers.

Fri Apr 28 16:12:44 2017 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

解决方案:

[root@MHA4 ~]# grep master_ip_failover /etc/mha.cnf

#master_ip_failover_script=/usr/local/mha/scripts/master_ip_failover

#再次检查主从复制

[root@MHA4 ~]# masterha_check_repl --conf=/etc/mha.cnf

Fri Apr 28 16:21:55 2017 - [info] Slaves settings check done.

Fri Apr 28 16:21:55 2017 - [info]

MHA1 (current master)

+--MHA2

+--MHA3

Fri Apr 28 16:21:55 2017 - [info] Checking replication health on MHA2..

Fri Apr 28 16:21:55 2017 - [info]  ok.

Fri Apr 28 16:21:55 2017 - [info] Checking replication health on MHA3..

Fri Apr 28 16:21:55 2017 - [info]  ok.

Fri Apr 28 16:21:55 2017 - [warning] master_ip_failover_script is not defined.

Fri Apr 28 16:21:55 2017 - [warning] shutdown_script is not defined.

Fri Apr 28 16:21:55 2017 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

#检查mha  Manager状态

[root@MHA4 ~]# masterha_check_status --conf=/etc/mha.cnf

mha is stopped(2:NOT_RUNNING).

注意:如果正常,会显示"PING_OK",否则会显示"NOT_RUNNING",这代表MHA监控没有开启。

#开启Manager服务

[root@MHA4 ~]# nohup masterha_manager --conf=/etc/mha.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /usr/local/mha/manager.log 2>&1 &

[1] 5073

启动参数介绍:

--remove_dead_master_conf      该参数代表当发生主从切换后,老的主库的ip将会从配置文件中移除。

--manger_log                            日志存放位置

--ignore_last_failover                 在缺省情况下,如果MHA检测到连续发生宕机,且两次宕机间隔不足8小时的话,则不会进行Failover,之所以这样限制是为了避免ping-pong效应。该参数代表忽略上次MHA触发切换产生的文件,默认情况下,MHA发生切换后会在日志目录,也就是上面我设置的/data产生app1.failover.complete文件,下次再次切换的时候如果发现该目录下存在该文件将不允许触发切换,除非在第一次切换后收到删除该文件,为了方便,这里设置为--ignore_last_failover。

[root@MHA4 ~]# masterha_check_status --conf=/etc/mha.cnf

mha (pid:5073) is running(0:PING_OK), master:MHA1

[root@MHA4 ~]# tail -f /usr/local/mha/manager.log

##停止MHA Manager服务

[root@MHA4 ~]# masterha_stop --conf=/etc/mha.cnf

Stopped mha successfully.

[1]+  Exit 1                  nohup masterha_manager --conf=/etc/mha.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /usr/local/mha/manager.log 2>&1

[root@MHA4 ~]#

## 6 MHA 管理和切换VIP

[root@MHA1 ~]# /sbin/ifconfig eth2:1 192.168.56.225

[root@MHA1 ~]# ifconfig

eth2      Link encap:Ethernet  HWaddr 08:00:27:8B:0A:CE  

          inet addr:192.168.56.221  Bcast:192.168.56.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe8b:ace/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:3348 errors:0 dropped:0 overruns:0 frame:0

          TX packets:2758 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:316425 (309.0 KiB)  TX bytes:292848 (285.9 KiB)

eth2:1    Link encap:Ethernet  HWaddr 08:00:27:8B:0A:CE  

          inet addr:192.168.56.225  Bcast:192.168.56.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:4 errors:0 dropped:0 overruns:0 frame:0

          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)

#编辑master_ip_failover_script脚本

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

);


my $vip = '192.168.56.225/24';

my $key = '1';

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

my $ssh_stop_vip = "/sbin/ifconfig eth2:$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";

}


##7 测试MHA 故障切换和日志追赶

#主服务器

[root@MHA1 ~]# pkill -9 mysqld

[root@MHA4 ~]# tail -f /usr/local/mha/manager.log

......

----- Failover Report -----

mha: MySQL Master failover MHA1 to MHA2 succeeded

Master MHA1 is down!

Check MHA Manager logs at MHA4:/usr/local/mha/manager.log for details.

Started automated(non-interactive) failover.

Invalidated master IP address on MHA1.

The latest slave MHA2(192.168.56.222:3306) has all relay logs for recovery.

Selected MHA2 as a new master.

MHA2: OK: Applying all logs succeeded.

MHA2: OK: Activated master IP address.

MHA3: This host has the latest relay log events.

Generating relay diff files from the latest slave succeeded.

MHA3: OK: Applying all logs succeeded. Slave started, replicating from MHA2.

MHA2: Resetting slave info succeeded.

Master failover to MHA2(192.168.56.222:3306) completed successfully.

切换完成后,MHA的manager服务就会停止,这是需要把MHA的配置文件中的server选项调整,把主服务器放在server1的内容下。把secondary_check_script内容修改。

[root@MHA4 ~]# vi /etc/mha.cnf

[server default]

manager_log=/usr/local/mha/manager.log

manager_workdir=/usr/local/mha

master_ip_failover_script=/usr/local/mha/scripts/master_ip_failover

master_ip_online_change_script=/usr/local/mha/scripts/master_ip_online_change

password=123456

ping_interval=1

ping_type=CONNECT

remote_workdir=/usr/local/mha

repl_password=123456

repl_user=rep

secondary_check_script=/usr/bin/masterha_secondary_check -s 192.168.56.221 -s 192.168.56.223 -s 192.168.56.224 --user=root --master_host=MHA2 --master_ip=192.168.56.222--master_port=3306

ssh_port=22

ssh_user=root

user=mhaadmin

[server1]

candidate_master=1

check_repl_delay=1

hostname=MHA2

ignore_fail=0

ip=192.168.56.222

master_binlog_dir=/usr/local/mysql/logs/

port=3306

ssh_port=22

[server2]

candidate_master=1

check_repl_delay=1

hostname=MHA1

ignore_fail=0

ip=192.168.56.221

master_binlog_dir=/usr/local/mysql/logs/

port=3306

ssh_port=22

[server3]

candidate_master=1

check_repl_delay=1

hostname=MHA3

ignore_fail=0

ip=192.168.56.223

master_binlog_dir=/usr/local/mysql/logs/

port=3306

ssh_port=22

#修改当原主库的配置文件把slave参数开放,修改当前主库配置文件把slave参数注释掉,重启mysql服务器

#slave

#relay_log=/usr/local/mysql/logs/relay-log.log

#master-info-repository=TABLE

#relay-log-info-repository=TABLE

#sync_master_info = 1

#sync_relay_log = 1

#sync_relay_log_info = 1

#read_only = 1

relay_log_purge = 0

[root@MHA2 ~]# /etc/init.d/mysqld restart                              

Shutting down MySQL............                            [  OK  ]

Starting MySQL.                                                  [  OK  ]

#检查MHA的配置文件和启动MHA服务

[root@MHA4 ~]# masterha_check_ssh --conf=/etc/mha.cnf

Wed May  3 13:38:32 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.

Wed May  3 13:38:32 2017 - [info] Reading application default configurations from /etc/mha.cnf..

Wed May  3 13:38:32 2017 - [info] Reading server configurations from /etc/mha.cnf..

Wed May  3 13:38:32 2017 - [info] Starting SSH connection tests..

Wed May  3 13:38:33 2017 - [debug]

Wed May  3 13:38:32 2017 - [debug]  Connecting via SSH from root@MHA2(192.168.56.221:22) to root@MHA2(192.168.56.222:22)..

Wed May  3 13:38:33 2017 - [debug]   ok.

Wed May  3 13:38:33 2017 - [debug]  Connecting via SSH from root@MHA2(192.168.56.221:22) to root@MHA3(192.168.56.223:22)..

Wed May  3 13:38:33 2017 - [debug]   ok.

Wed May  3 13:38:33 2017 - [debug]

Wed May  3 13:38:33 2017 - [debug]  Connecting via SSH from root@MHA3(192.168.56.223:22) to root@MHA2(192.168.56.222:22)..

Wed May  3 13:38:33 2017 - [debug]   ok.

Wed May  3 13:38:33 2017 - [debug]  Connecting via SSH from root@MHA3(192.168.56.223:22) to root@MHA2(192.168.56.221:22)..

Wed May  3 13:38:33 2017 - [debug]   ok.

Wed May  3 13:38:33 2017 - [info] All SSH connection tests passed successfully.

[root@MHA4 ~]# masterha_check_repl --conf=/etc/mha.cnf

Wed May  3 13:38:56 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.

Wed May  3 13:38:56 2017 - [info] Reading application default configurations from /etc/mha.cnf..

Wed May  3 13:38:56 2017 - [info] Reading server configurations from /etc/mha.cnf..

Wed May  3 13:38:56 2017 - [info] MHA::MasterMonitor version 0.55.

Wed May  3 13:38:56 2017 - [error][/usr/share/perl5/vendor_perl/MHA/Server.pm, ln241]  Getting relay log directory or current relay logfile from replication table failed on MHA2(192.168.56.222:3306)!

Wed May  3 13:38:56 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln386] Error happend on checking configurations.  at /usr/share/perl5/vendor_perl/MHA/ServerManager.pm line 269

Wed May  3 13:38:56 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln482] Error happened on monitoring servers.

Wed May  3 13:38:56 2017 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

注意主库的slave参数relay-log等参数已经开启,所以检查不过,注释掉重启就可以了

感谢各位的阅读,以上就是“MHA的安装搭建和测试”的内容了,经过本文的学习后,相信大家对MHA的安装搭建和测试这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: MHA的安装搭建和测试

本文链接: https://www.lsjlt.com/news/60915.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MHA的安装搭建和测试
    这篇文章主要讲解了“MHA的安装搭建和测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MHA的安装搭建和测试”吧! 环境: 192.168.56...
    99+
    2022-10-18
  • MySQL5.7 Galera Cluster的安装搭建及高可用测试
    本篇内容介绍了“MySQL5.7 Galera Cluster的安装搭建及高可用测试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家...
    99+
    2022-10-18
  • 如何进行sandbox和MHA的测试
    本篇文章为大家展示了如何进行sandbox和MHA的测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 昨天写了一篇使用脚本搭建一主多从的脚本之后,奇龙兄建议我看...
    99+
    2022-10-19
  • 安装和测试xtrabackup8.0
    安装和测试xtrabackup8.0Xtrabackup 2.4.已经不支持MySQL 8.0的备份恢复,使用会报如下错误!Error: MySQL 8.0 and Percona Server 8.0 a...
    99+
    2022-10-18
  • Windows server : RDS 服务 远程桌面服务(安装&搭建&测试)
    实验环境:虚拟机下 一个网段,可以互相通信 一台 Windows server2016 (ad域环境和rds服务)------192.168.100.1 一台 Windows server 2016 或 win10 都可以只要可以远程连...
    99+
    2023-10-25
    网络 服务器 运维 Powered by 金山文档
  • 【环境搭建:onnx模型部署】onnxruntime-gpu安装与测试(python)
    ONNX模型部署环境创建 1. onnxruntime 安装2. onnxruntime-gpu 安装2.1 方法一:onnxruntime-gpu依赖于本地主机上cuda和cudnn2.2 ...
    99+
    2023-09-02
    python 深度学习 pytorch
  • MHA的安装和部署步骤
    本篇内容介绍了“MHA的安装和部署步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!###########...
    99+
    2022-10-18
  • mocha怎么安装和测试
    这篇“mocha怎么安装和测试”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mocha怎么安装和测试”文章吧。什么是TDD:...
    99+
    2023-06-27
  • mysql sysben0.5的安装和测试步骤
    这篇文章主要介绍“mysql sysben0.5的安装和测试步骤”,在日常操作中,相信很多人在mysql sysben0.5的安装和测试步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-18
  • MySQL 安装后设置和测试
    让我们看看成功安装 MySQL 后需要完成的安装后设置和测试 -安装 MySQL 后,执行以下步骤数据目录如果需要,必须初始化数据目录并创建MySQL 授权表。对于某些MySQL安装方法,数据目录初始化是自动完成的。MySQL安装程序Win...
    99+
    2023-10-22
  • MySQL8.0的MGR多主搭建与测试
    环境: 虚拟机VMware, OS:CentOS Linux release 7.3.1611 (Core) 按照下述的单机Mysql8.0的安装方式进行安装完之后,将该机复制两台,分别修改I...
    99+
    2022-10-18
  • MySQL InnoDB Cluster环境搭建和简单测试
    InnoDB Cluster初印象   记得MySQL Group Replicatioin 刚开始的时候,MySQL界很是轰动,等待了多年,终于有了官方的这个高可用解决方案。你要说还...
    99+
    2022-10-18
  • Hadoop集群安装和搭建
    Hadoop集群的安装和搭建通常分为以下几个步骤:1. 硬件准备:选购适合的服务器硬件,并确保网络连接良好。2. 操作系统准备:选择...
    99+
    2023-10-11
    hadoop
  • Contos中怎么安装和测试docker
    本篇内容介绍了“Contos中怎么安装和测试docker”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!添加Docker存储库首先,我们必须添...
    99+
    2023-06-28
  • hibernate环境搭建测试的示例分析
    这篇文章主要介绍了hibernate环境搭建测试的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。真正要掌握,还得需要自己动手,才能丰...
    99+
    2022-10-19
  • 单元测试框架Jest搭配TypeScript的安装与配置方式
    目录分步指南1. 安装jest2. 初始化3. 安装jsdom环境 4. 创建test目录5. 愉快地开始单元测试6. 总结 - 踩坑记录为项目安装并配置Jest单元测试环...
    99+
    2023-01-28
    单元测试框架Jest TypeScript安装 TypeScript安装配置
  • Hadoop安装和环境搭建方法
    这篇文章主要介绍“Hadoop安装和环境搭建方法”,在日常操作中,相信很多人在Hadoop安装和环境搭建方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hadoop安装和环境搭建方法”的疑惑有所帮助!接下来...
    99+
    2023-06-20
  • mac上node.js环境的安装测试
    如果大家之前做过web服务器的人都知道,nginx+lua与现在流行的Node.js都是可以做web服务器的,前者在程序的写法和配置上要比后者麻烦,但用起来都是差不多.在这里建议大家如果对lua脚本语言不了...
    99+
    2022-06-04
    环境 测试 mac
  • Jmeter测试必知的名词及环境搭建
    那么什么是性能测试,它与功能测试有什么样的区别? 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试  &n...
    99+
    2022-11-12
  • Mysql 性能测试工具 sysbench的安装和使用
         工作上需要用到AWS和Azure的Mysql服务,需要测试比较一下两个云服务的性能。于是开始百度 + google,查找性能测试工具。最终决定用sysbench。sy...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作