MHA-Atlas-MySQL高可用(下)

链接:https://pan.baidu.com/s/17Av92KQnJ81Gc0EmxSO7gA

提取码:a8mq

复制这段内容后打开百度网盘手机App,操作更方便哦

6. 配置VIP漂移

主机名 IP地址 网卡模式 漂移VIP 描述
Mysql-Master 192.168.200.123 NAT8 VIP:192.168.200.111 系统:CentOS6.5(6.x都可以)安装:mysql5.6
Mysql-Slave01 192.168.200.124 NAT8 VIP:192.168.200.111 系统:CentOS6.5(6.x都可以)安装:mysql5.6
Mysql-Slave02 192.168.200.125 NAT8 VIP:192.168.200.111 系统:CentOS6.5(6.x都可以)安装:mysql5.6

6.1 IP漂移的两种方式

  • 通过keepalived的方式,管理虚拟IP的漂移
  • 通过MHA自带脚本方式,管理虚拟IP的漂移

6.2 MHA脚本管理方式

6.2.1 获取管理脚本master_ip_failover

提示:yum安装的manager是没有这个脚本的。

我们需要从manager的源码包里复制一个。

[root@Mysql-Slave02 yuanmabao]# pwd
/root/yuanmabao
[root@Mysql-Slave02 yuanmabao]# ll mha4mysql-manager-0.56.tar.gz
-rw-r--r--. 1 root root 113914 Oct 5 20:57 mha4mysql-manager-0.56.tar.gz
[root@Mysql-Slave02 yuanmabao]# tar xf mha4mysql-manager-0.56.tar.gz [root@Mysql-Slave02 yuanmabao]# cd mha4mysql-manager-0.56/samples/scripts/
[root@Mysql-Slave02 scripts]# ll
total 32
-rwxr-xr-x. 1 4984 users 3648 Apr 1 2014 master_ip_failover #这就是管理虚拟IP的脚本
-rwxr-xr-x. 1 4984 users 9870 Apr 1 2014 master_ip_online_change
-rwxr-xr-x. 1 4984 users 11867 Apr 1 2014 power_manager
-rwxr-xr-x. 1 4984 users 1360 Apr 1 2014 send_report [root@Mysql-Slave02 scripts]# cp master_ip_failover /usr/local/bin/
#复制到/usr/local/bin目录下
[root@Mysql-Slave02 scripts]# which master_ip_failover
/usr/local/bin/master_ip_failover

6.2.2 修改mha配置文件

[root@Mysql-Slave02 ~]# cat /etc/mha/mha1.cnf
[server default]
manager_log=/var/log/mha/mha1/manager
manager_workdir=/var/log/mha/mha1
master_binlog_dir=/usr/local/mysql/data
master_ip_failover_script=/usr/local/bin/master_ip_failover #添加脚本位置
user=mha
password=971108
ping_interval=2
repl_user=rep
repl_password=971108
ssh_user=root #candidate_master=1 #留着备用的注释项
#check_repl_delay=0 #留着备用的注释项 [server1]
hostname=192.168.200.123
port=3306 [server2]
hostname=192.168.200.124
port=3306 [server3]
hostname=192.168.200.125
port=3306

6.2.3 修改源程序自带VIP漂移脚本

#在下边的脚本里添加如下4行代码:
[root@Mysql-Slave02 ~]# sed -n '34,37p' /usr/local/bin/master_ip_failover
my $vip = '192.168.200.111/24'; #定义VIP
my $key = '0'; #定义网卡后缀数值,如果eth0就是0,eth1就是1
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip"; #绑定VIP的命令
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down"; #关闭VIP的命令

特别提示:由于自带的模板脚本特别的坑,需要修改的地方太多,因此,咱们可以直接拷贝脚本文件放到/usr/local/bin目录下,并赋予x权限。

6.2.4 修改后的master_ip_failover脚本的内容如下:

[root@Mysql-Slave02 ~]# cat  /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
); my $vip = '192.168.200.111/24';
my $key = '0';
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth0:$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 {
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";
`ssh $ssh_user\@$orig_master_host \" $ssh_start_vip \"`;
exit 0;
}
else {
&usage();
exit 1;
}
}
sub start_vip() {
`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
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";
}

6.2.5 重启动mha管理端

[root@Mysql-Slave02 ~]# ps -ef | grep mha | grep -v grep   #查看mha进程
root 14138 13211 0 19:22 pts/3 00:00:00 perl /usr/bin/masterha_manager --conf=/etc/mha/mha1.cnf --remove_dead_master_conf --ignore_last_failover
[root@Mysql-Slave02 ~]# pkill perl #杀掉perl进程
[1]+ Exit 1 nohup masterha_manager --conf=/etc/mha/mha1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/mha1/manager.log 2>&1
[root@Mysql-Slave02 ~]# ps -ef | grep mha | grep -v grep #查看mha进程 [root@Mysql-Slave02 ~]# nohup masterha_manager --conf=/etc/mha/mha1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/mha1/manager.log 2>&1 & #启动mha进程
[1] 1574
[root@Mysql-Slave02 ~]# ps -ef | grep mha | grep -v grep
root 1574 1520 17 02:08 pts/0 00:00:00 perl /usr/bin/masterha_manager --conf=/etc/mha/mha1.cnf --remove_dead_master_conf --ignore_last_failover

提示:如果启动mha进程失败,需要进行mha的连接检测


  • masterha_check_ssh --conf=/etc/mha/mha1.cnf ssh #连接检测
  • masterha_check_repl --conf=/etc/mha/mha1.cnf #主从复制检测

6.3 VIP漂移脚本验证测试。

架构初始状态:

MHA-Atlas-MySQL高可用(下)的更多相关文章

  1. 魅族资深DBA:利用MHA构建MySQL高可用平台

    龙启东 魅族资深DBA 负责MySQL.Redis.MongoDB以及自动化平台建设 .擅长MySQL高可用方案.SQL性能优化.故障诊断等. 本次分享主要包括以下几方面: 如何利用MHA 改造MHA ...

  2. 构建MHA实现MySQL高可用集群架构

    一.MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开 ...

  3. MHA实现mysql高可用复制集群

    MHA简述 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在My ...

  4. 基于MHA的MYSQL高可用方案

    一.MHA 简介 MHA (Master High Availability )目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由日本 DeNA 公司的 youshimaton 员工(现就职 ...

  5. MHA的MySQL高可用方案实战

    功能: 1)master的故障切换(keepalived VIP的飘移) 2)主从复制角色的提升和重新转向 其中master 对外提供写服务,备选master2(实际的slave提供读服务,slave ...

  6. 使用mha 构建mysql高可用碰到几个问题

    根据网上配置,安装好mha ,建议到https://code.google.com/archive/p/mysql-master-ha/downloads  下载0.56版本 1.首先先确定各个主机之 ...

  7. Mysql 高可用(MHA)-读写分离(Atlas)-分布式架构(Mycat)

    Mysql 高可用(MHA)-读写分离(Atlas) 1. 搭建主从复制(一主两从) 1.1 准备环境 1 主库:10.0.0.51/db01 2 从库:10.0.0.52/db02,10.0.0.5 ...

  8. 转一下大师兄的"MySQL高可用架构之MHA"

    简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...

  9. (转)MySQL高可用架构之MHA

    MySQL高可用架构之MHA  原文:http://www.cnblogs.com/gomysql/p/3675429.html 简介: MHA(Master High Availability)目前 ...

  10. MySQL高可用架构之MHA

    简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...

随机推荐

  1. for循环(C语言型)流程

  2. Django版本更新(升级)到指定版本的命令

  3. jsp获取url路径的方法

    如果你请求的URL是  http://localhost:8080/demo/Index.jsp request.getScheme() //输出:http request.getServerName ...

  4. tcpdump使用小记

    1, 类型的关键字主要包括:host, net, port: 2, 确定传输方向的关键字主要包括:src, dst, dst or src, dst and src: 3, 协议的关键字主要包括:fd ...

  5. C++笔试题之宏定义相关

    1. #define CALC(X) X*X int i; i=CALC(+)/(+); cout<<i<<endl; 输出:31 宏定义在替换处展开为:i = 5+5*5+5 ...

  6. 71、salesforce的JSON方法

    List<Merchandise__c> merchandise = [select Id,Name,Price__c,Quantity__c from Merchandise__c li ...

  7. c# DataTable select 过滤返回新DataTable

    Select(); Select("id>='3' and name='3--hello'");//支持and Select("id>='3' or id=' ...

  8. PHP面试 MySQL查询优化

    MySQL查询优化 面试题一 请简述项目中优化SQL语句执行效率的方法,从那些方面,SQL语句性能如何分析? 优化查询过程中的数据访问.优化长难的查询语句.优化特定类型的查询语句 分析SQL语句方法 ...

  9. C++——智能指针

    动态内存管理:new-delete——很难正确释放内存——智能指针 使用场景: 1.程序不知道自己要使用多少对象 2.程序不知道自己所需对象的准确类型 3.程序需要在多个对象之间共享数据 4.坚持只使 ...

  10. javascript拷贝创建对象

    ​ /*拷贝创建对象*/ function hightExtend() { var key = 0, i = 0, len = arguments.length; target = null; if ...