MHA故障切换脚本master_ip_failover结合VIP

简介:

 MHA故障切换脚本master_ip_failover结合VIP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/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
      $new_master_user $new_master_password $app_vip $netmask $interface
);
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 ,
     'new_master_user=s'      => \ $new_master_user ,
     'new_master_password=s'  => \ $new_master_password ,
     'app_vip=s'             => \ $app_vip ,
     'netmask=i'            => \ $netmask ,
     'interface=s'          => \ $interface ,
);
my  $ssh_start_vip  "sudo ip addr add $app_vip dev $interface" ;
my  $ssh_stop_vip  "sudo ip addr delete $app_vip dev $interface" ;
my  $ssh_flush_arp  "sudo arping -c 4 -A -I $interface $app_vip" ;
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 app_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 app_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" ;
         #`ssh $ssh_user\@cluster1 \" $ssh_start_vip \"`;
         exit  0;
     }
     else  {
         &usage ();
         exit  1;
     }
}
# A simple system call that enable the app_vip on the new master
sub  start_vip() {
     `ssh  $ssh_user \@ $new_master_host  \"  $ssh_start_vip  \"`;
     `ssh  $ssh_user \@ $new_master_host  \"  $ssh_flush_arp  \"`;
}
# A simple system call that disable the app_vip on the old_master
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" ;
}



本文转自 emma_cql 51CTO博客,原文链接:http://blog.51cto.com/chenql/1939111
相关文章
|
关系型数据库 MySQL Shell
MySQL高可用之双主+Keepalived,轻松实现单点故障VIP转移
MySQL高可用之双主+Keepalived,轻松实现单点故障VIP转移
1644 0
MySQL高可用之双主+Keepalived,轻松实现单点故障VIP转移
|
监控 算法 关系型数据库
高可用 - 08 Keepalived集群中Master和Backup角色选举策略
高可用 - 08 Keepalived集群中Master和Backup角色选举策略
128 0
|
数据库
Master Standby 切换
本文档主要演示GreenPlum数据库的Master节点的Standby在异常后的数据同步及Master节点故障后,Standby的切换。在操作前通过gpstate命令查看Standby的状态是正常的,数据也在同步状态。
797 0
Master Standby 切换
|
Kubernetes Docker 容器
kubeadm HA master集群master重置故障恢复
文章楔子 对于一个具有HA master的集群来说,发生单点故障通常不会影响集群的正常运行,只要及时复原单点故障,就可以避免潜在的数据、状态丢失。本文旨在指导读者,在kubeadm搭建的HA master集群中,某一master主机遭遇硬件更换、系统重置、k8s配置重置的情况下,应当如何恢复K8s HA master集群。
2857 0
|
关系型数据库 MySQL 数据中心
|
监控 MySQL 关系型数据库
|
负载均衡 开发工具 域名解析