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. Linux系统实验

    前言:怎么感觉Linux运维和Linux系统实验没什么关系?该不会的还是不会(@@).记录一下几个实验吧. 本篇目录: 实验一 编程环境 实验二 文件读写 实验三 进程通信 实验一 编程环境√ 实验步 ...

  2. Java8 LocalDate操作时间和日期的API

    时间项目中的涉及到的时间处理非常多,犹豫SimpleDateFormat的不安全性以及Calendar等类在计算时比较复杂, 往往我们都会使用工具类来封装较多的日期处理函数, 但是JDK8中新增了操作 ...

  3. Redis的常用功能

    排序: sort mylist 排序 sort mylist alpha desc limit 0 2 字母排序 sort list by it:* desc by命令 sort list by it ...

  4. Django 模型层 ORM 操作

    运行环境 1. Django:2.1.3 version 2. PyMysql: 0.9.3 version 3. pip :19.0.3 version 4. python : 3.7 versio ...

  5. Oracle之分页问题

    前面的Top-N问题使用了reownum,但是又遇到个分页问题,将表emp的4行为1页输出,前4行很好做: select rownum,empno,ename,sal from emp ; 但是4-- ...

  6. linux---postgresql的用户角色权限

    PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户.角色可以拥有数据库对象,如表.索引,也可以把这些对象上的权限赋予其它角色,以控制哪些用 ...

  7. 使用IntelliJ IDEA 15和Maven创建Java Web项目(转)

    转自:https://blog.csdn.net/myarrow/article/details/50824793 1. Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和 ...

  8. translation of 《deep learning》 Chapter 1 Introduction

    原文: http://www.deeplearningbook.org/contents/intro.html Inventors have long dreamed of creating mach ...

  9. testNG 并发测试

     invocationCount是并发数,threadPoolSize是线程数,当线程是1的时候就是依次执行n次,当线程是并发次数时,就是同时执行n次    @Test public void abc ...

  10. boost pointer container

    1. boost::ptr_vector #include <boost/ptr_container/ptr_vector.hpp> #include <iostream> i ...