文档章节

mysql 5.5 + mha 安装配置+vip ip 漂移

酒瓶不倒
 酒瓶不倒
发布于 2014/06/04 09:58
字数 1123
阅读 2946
收藏 11
点赞 0
评论 0

一、概述

   MHA是一位日本人用Perl写的一套MySQL故障切换方案,来保证数据库统的高可用.在宕机的时间内(通常10—60秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新服务器的费用,不影响服务器性能,易安装,不改变现有部署。

   还支持在线切换,从当前运行master切换到一个新的master上面,只需要很短的时间(0.5-2秒内),此时仅仅阻塞写操作,并不影响读操作,便于主机硬件维护。

二、mha 管理节点的安装

yum install perl-DBD-MySQL  \
perl-Config-Tiny perl-Log-Dispatch \
perl-Parallel-ForkManager  -y
yum  install perl-Time-HiRes perl-Parallel-ForkManager -y
wget http://mysql-master-ha.googlecode.com/files/mha4mysql-manager-0.55-0.el6.noarch.rpm
wget http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.54-0.el6.noarch.rpm
rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm
rpm -ivh mha4mysql-manager-0.55-0.el6.noarch.rpm


mkdir /etc/masterha
vi /etc/masterha_default.cnf 
[server default]
user=manager
password=test_2014
ping_interval=1
repl_user=rep
repl_password=rep_2014


ssh 证书安装:

root 用户下执行:

ssh-keygen -t rsa


拷贝 id_rsa.pub 到数据库节点机器上的/tmp 目录下,在数据库节点机器上执行:

cd /root/.ssh
cat /tmp/id_rsa.put >>authorized_keys
chmod 600 authorized_keys


三、mha 数据库节点的安装 

wget http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.54-0.el6.noarch.rpm
yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm

在数据库节点上以root 用户执行:

ssh-keygen -t rsa

分别拷贝id_rsa.pub 到对方机器的/tmp 目录下,然后分别执行:

cd /root/.ssh
cat /tmp/id_rsa.put >>authorized_keys
chmod 600 authorized_keys

四、vip add 配置

在master 上执行下面命令(第一次启用必须配置手动配置vip address):

ifconfig eth1:2 10.10.0.102/16

五、mha 配置文件与故障转移脚本

在 mha 管理节点上编辑配置文件:

vi /etc/masterha/test.conf 
[server default]
ssh_user=root
ping_interval=1
report_script=/usr/local/bin/send_report
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_failover
[server1]
hostname=10.10.0.101
master_binlog_dir=/log/mysql_test
candidate_master=1
port=3306
ssh_port=22
[server2]
hostname=10.10.0.100
master_binlog_dir=/log/mysql_test
candidate_master=1
port=3306
ssh_port=22

六、mysql 主从配置

主从执行:

mysql>grant replication slave on *.* to rep@'10.10.%' identified by 'rep_2014' ;
mysql>grant all on *.* to manager@'10.10.%' identified by 'test_2014' ;
mysql>flush privileges;


主上执行:

mysql>show master status;

从上执行:

mysql>change master to master_host='10.10.0.101',master_port=3306,master_user='rep',master_password='rep_2014', master_log_file='mysql-bin.000004',master_log_pos=402; 
mysql> start slave;
mysql> stop slave;
mysql> reset slave;
mysql> show slave status\G;

七、mha 操作命令

测试ssh 配置

/usr/bin/masterha_check_ssh --conf=/etc/masterha/test.conf

测试复制:

/usr/bin/masterha_check_repl  --conf=/etc/masterha/test.conf

启用 mha 

masterha_manager --conf=/etc/masterha/test.conf

master 切换:

masterha_master_switch --master_state=alive --conf=/etc/masterha/test.conf


八、脚本

master_ip_failover 脚本:

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 = '10.10.0.102/16';  # Virtual IP
my $key = "2";
my $ssh_start_vip = "/sbin/ifconfig eth1:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth1:$key down";
$ssh_user = "root";
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" ) {

        # $orig_master_host, $orig_master_ip, $orig_master_port are passed.
        # If you manage master ip address at global catalog database,
        # invalidate orig_master_ip here.
        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" ) {

        # all arguments are passed.
        # If you manage master ip address at global catalog database,
        # activate new_master_ip here.
        # You can also grant write access (create user, set read_only=0, etc) here.
        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\@cluster1 \" $ssh_start_vip \"`;
        exit 0;
    }
    else {
        &usage();
        exit 1;
    }
}

# A simple system call that enable the VIP on the new master
sub start_vip() {
    `ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
# A simple system call that disable the VIP on the old_master
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";
}

cat send_report 
#!/usr/bin/perl
# Copyright (C) 2011 DeNA Co.,Ltd.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
## Note: This is a sample script and is not complete. Modify the script based on your environment.
use strict;
use warnings FATAL => 'all';
use Getopt::Long;
#new_master_host and new_slave_hosts are set only when recovering master succeeded
my ( $dead_master_host, $new_master_host, $new_slave_hosts, $subject, $body );
GetOptions(
  'orig_master_host=s' => \$dead_master_host,
  'new_master_host=s' => \$new_master_host,
  'new_slave_hosts=s' => \$new_slave_hosts,
  'subject=s' => \$subject,
  'body=s' => \$body,
);
# Do whatever you want here
exit 0;


© 著作权归作者所有

共有 人打赏支持
酒瓶不倒
粉丝 9
博文 77
码字总数 18414
作品 0
深圳
系统管理员
MySQL之MHA+keepalived方案演示(四)

配置VIP实现MHA架构中主库故障自动切换 1.说明 引入keepalived实现MHA架构中主库master故障时,从库slave自动提升为新的maser vip配置可以采用两种方式: 一种通过keepalived的方式管理虚拟i...

wjw555
07/06
0
0
mysql5.6基于GTID模式之高可用架构搭建-MHA(mha0.56)

一、环境部署: mysql1:192.168.110.131 作为master mysql2:192.168.110.132 作为slave mysql3:192.168.110.130 作为slave,同时作为MHA的管理机 虚拟IP:192.168.110.100 二、mysql主从环境...

Jenkin_lin
2017/03/14
0
0
mha的搭建步骤(一主一从架构)

mha的搭建步骤(一主一从架构) http://www.cnblogs.com/xiaoboluo768/p/5135584.html 环境: centos 6.8 x64 192.168.0.32 # master 192.168.0.33 #管理节点和从节点slave VIP:192.168.0.106......

lxm111111
2017/01/21
0
0
MySQL高可用性之MHA

防伪码:学海无涯苦作舟! MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为M...

何小帅
2017/03/05
0
0
光看"北京蓝"不如搞懂MHA-教你最新版本VIP模式搭建

小伙伴们,好久没有发手记了,大家有没有期待,哈哈! 今天我给大家分享一篇“Mysql5.7版本实现基于VIP的MHA搭建” 为什么要单独来写这一篇手记呢?在正式讲解搭建步骤之前,我们先聊聊Mysql...

Jeson老师
06/30
0
0
Step By Step 搭建 MySql MHA 集群

关于MHA    MHA(Master High Availability)是一款开源的mysql高可用程序,目前在mysql高可用方面是一个相对成熟的解决方案。MHA 搭建的前提是MySQL集群中已经搭建了MySql Replication环境...

Eumenides_s
01/14
0
0
MySQL高可用架构之MHA

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

yanfeilai528
2017/05/22
0
0
MySQL 高可用集群架构 MHA

MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换...

Gavin7216
2017/05/09
0
0
魅族资深DBA:利用MHA构建MySQL高可用平台

本文根据DBAplus社群第78期线上分享整理而成 讲师介绍 本次分享主要包括以下几方面: 以前几十台DB服务器,人工登陆服务器就能维护好,也没有高可用,当master挂了,通知业务将IP切换到slave...

龙启东
2016/10/25
0
0
MySQL主从复制、读写分离、高可用集群搭建

MySQL主从复制、读写分离、高可用集群搭建 一、服务介绍 1.1 Keepalived Keepalived,见名知意,即保持存活,其目的是解决单点故障,当一台服务器宕机或者故障时自动切换到其他的服务器中。K...

PowerMichael
2017/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
今天
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部