Mysql MHA(GTID)配置(实操)

实现环境
  centos6.7
  MYSQL5.6.36
  主:192.168.1.191
  从1:192.168.1.145
  从2:192.168.1.146
  监测:放在从2上 192.168.1.146
  虚拟IP:192.168.1.222

准备软件包:下载链接: https://pan.baidu.com/s/1jHYafcU 密码: irbv
  epel-release-6-8.noarch.rpm   (所有服务器上都要)

  mha4mysql-node-0.56-0.el6.noarch.rpm  (所有服务器上都要)

  mha4mysql-manager-0.56-0.el6.noarch.rpm   (监测服务器)

 

步骤

1.在主DB服务器上建立复制账号 (在Master上执行)
# mysql
mysql> CREATE USER ‘repl‘@‘192.168.1.%‘ identified by ‘123456‘;
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘192.168.1.%‘;

2.主服务器配置 (在Master上执行)
# vim /etc/my.cnf
----------------------------内容如下---------------------------------

[mysqld]

basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306

# binary logging #
log-bin = /data/mysql/log-bin
# replice #
server_id = 191
gtid_mode = on
enforce_gtid_consiste = on
log_slave_updates = on
----------------------------内容如上---------------------------------

3.从服务器配置 (在两个从服务器上执行)
# vim /etc/my.cnf
----------------------------内容如下----------------------------------

[mysqld]

basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306

# binary logging #
log-bin = /data/mysql/mysql-bin
# replice #
# server-id = 145    #选择对应的
# server-id = 146   #选择对应的
relay_log = /data/mysql/relay-bin
gtid_mode = on
enforce_gtid_consistency = on
log_slave_update = on
read_only = on
master_info_repository = TABLE
relay_log_info_repository = TABLE
----------------------------内容如上----------------------------------

4.重启所有的MYSQL (所有服务器上都执行)
  # service mysqld restart

5.备份主数据库(如果主从上的数据库版本一样,可以全备) (在Master上执行)
  # mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases > full.sql

6.将主数据库备份传输到从数据库中 (在Master上执行)
  # scp /root/full.sql [email protected]:/root
  # scp /root/full.sql [email protected]:/root

7.将主数据库的备份导入到从数据库中 (在两个从上执行)
  # mysql -uroot -p < full.sql

8.初始复制链路 (在两个从上执行)
  # mysql
  mysql>
change master to
master_host=‘192.168.1.191‘,
master_user=‘repl‘,
master_password=‘123456‘,
master_auto_position=1;
  mysql>start slave;
  mysql>show slave status\G

以上全部操作为基于GTID的复制配置部分

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

9.SSH配置(当前用户为root)(所有服务器上都执行)
# ssh-keygen           #全部按回车
# ssh-copy-id -i /root/.ssh/id_rsa ‘-p 22 192.168.1.191‘
# ssh-copy-id -i /root/.ssh/id_rsa ‘-p 22 192.168.1.145‘
# ssh-copy-id -i /root/.ssh/id_rsa ‘-p 22 192.168.1.146‘

10.安装 mha4mysql-node-0.56-0.el6.noarch.rpm (所有服务器上都执行)
# rpm -ivh epel-release-6-8.noarch.rpm
# yum -y install perl-DBD-MySQL   ncftp
# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

11.安装 mha4mysql-manager-0.56-0.el6.noarch.rpm (监测服务器上执行)
# yum -y  install  perl-Config-Tiny.noarch   perl-Time-HiRes   perl-Parallel-ForkManager    perl-Log-Dispatch-Perl.noarch
# rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

12.创建MHA工作目录及数据库账号
# mkdir -p /home/mysql_mha #创建MHA的工作目录 (所有服务器上都执行)
# mysql
mysql> grant all privileges on *.*  to [email protected]‘192.168.1.%‘identified by ‘123456‘; (只在主数据库上执行,可以同步到其他服务器上)
mysql> show grants for [email protected]‘192.168.1.%‘ ;  #检查创建结果(所有服务器上都执行)

13.配置mha的配置文件 (监测服务器上执行)
# mkdir -p /etc/mha
# touch /etc/mha/mysql_mha.cnf
# vim /etc/mha/mysql_mha.cnf
----------------------------内容如下----------------------------------
[server default]
user=mha
password=123456
manager_workdir=/home/mysql_mha             #MHA工作目录
manager_log=/home/mysql_mha/manager.log   #MHA管理日志
remote_workdir=/home/mysql_mha               #MHA远程工作目录
ssh_user=root                    #ssh时的用户
repl_user=repl
repl_password=123456
ping_interval=1
master_binlog_dir=/data/mysql    #对应修改
master_ip_failover_script=/usr/bin/master_ip_failover  
secondary_check_script=/usr/bin/masterha_secondary_check -s 192.168.1.191 -s 192.168.1.145 -s 192.168.1.146

[server1]
hostname=192.168.1.191
candidate_master=1
[server2]
hostname=192.168.1.145
candidate_master=1
[server3]
hostname=192.168.1.146
no_master=1          #不参入选举

----------------------------内容如上----------------------------------

14.创建master_ip_failover脚本,用于自动切换 (监测服务器上执行)
# touch /usr/bin/master_ip_failover
# chomd 777 /usr/bin/master_ip_failover
# vim /usr/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.1.222/24‘;   #对应修改虚拟IP就可以了
my $key = "1";
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
my $exit_code = 0;

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 "\n\n\n***************************************************************\n";
print "Disabling the VIP - $vip on old master: $orig_master_host\n";
print "***************************************************************\n\n\n\n";
&stop_vip();
$exit_code = 0;
};
if ([email protected]) {
warn "Got Error: [email protected]\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 "\n\n\n***************************************************************\n";
print "Enabling the VIP - $vip on new master: $new_master_host \n";
print "***************************************************************\n\n\n\n";
&start_vip();
$exit_code = 0;
};
if ([email protected]) {
warn [email protected];
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;
}
}

# 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=po
rt –new_master_host=host –new_master_ip=ip –new_master_port=port\n";
}
----------------------------内容如上----------------------------------

15.检查相关配置并启动MHA(监测服务器上执行)
# masterha_check_ssh --conf=/etc/mha/mysql_mha.cnf
# masterha_check_repl --conf=/etc/mha/mysql_mha.cnf
# nohup masterha_manager --conf=/etc/mha/mysql_mha.cnf    &      #后台启动

16.配置虚拟IP (在Master上执行)
# ip addr
# ifconfig eth0:1  192.168.1.222/24
# ip addr

17.测试能否自动转移
# service mysqld stop (在Master上执行)
# ip addr (在Master上执行)
# ip addr (在从1上执行)

如果192.168.1.222成功的从192.168.1.191 飘移到192.168.1.146上就成功了。

以上操作步骤为本人实操记录,实验成功实现了VIP 飘移。

时间: 2024-11-10 22:28:57

Mysql MHA(GTID)配置(实操)的相关文章

OSPF多区域配置实操

OSPF理论 OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由.是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部.著名的迪克斯加算法(Dijkstra)被用来计算最短路径树.OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6

OSPF高级配置实操——大型公司环境部署

一.路由重分发概念 定义:即将一种路由协议中的路由条目转换为另一种路由协议的路由条目,达到多路由环境下的网络互通理解路由重分发1.一个单一IP路由协议是管理网络中IP路由的首选方案 2.Cisco ISO能执行多个路由协议,每一个路由协议和该路由协议所服务的网络属于同一个自治系统 3.Cisco ISO使用路由重分发特性以交换不同协议创建的路由信息路由重分发的考虑1.度量值 2.管理距离重分发到OSPF域中路由的路径类型1.类型1的外部路径(type1 external path,E1) 2.类

分布式爬虫的创建与配置——实操演练

scrapy_redis目前应用最多的一个分布式爬虫框架,与普通的scrapy相比,只需要在原有代码的基础上稍作修改,增加一些简单的配置文件即可实现分布式的数据抓取.本文以1905电影网为例,详细的介绍常见的分布式爬虫的创建与配置. 首先通过scrapy框架,写好爬虫的基本功能部分.然后对爬虫继承的类进行简单的修改: from scrapy_redis.spiders import RedisCrawlSpider # 导入RedisCrawlSpider(如果你用的是Spider,则导入Red

nginx反向代理服务器域名解析配置实操

1.进入nginx目录cd conf:创建文件夹 sudo mkdir vhost,cd vhost,sudo vim www.fanxing.store.conf,添加如下内容 server { default_type 'text/html'; charset utf-8; listen 80; autoindex on; server_name www.fanxing.store; access_log /usr/local/nginx/logs/access.log combined;

Docker 学习笔记【3】 Docker 仓库、数据卷、数据卷容器,网络基础实操。高级网络配置学习

Docker 学习笔记[4] 高级网络配置实操,实战案例实验 =========================================================================== Docker 学习笔记[2] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,记录开始 =========================================================================== 被格式化的脚本内容: #开头代表

Step By Step 搭建 MySql MHA 集群

关于MHA ?? MHA(Master High Availability)是一款开源的mysql高可用程序,目前在mysql高可用方面是一个相对成熟的解决方案.MHA 搭建的前提是MySQL集群中已经搭建了MySql Replication环境,有了Master/Slave节点.MHA的主要作用就是监测到Master节点故障时会提升主从复制环境中拥有最新数据的Slave节点成为新的master节点.同时,在切换master期间,MHA会通过从其他的Slave节点来获取额外的信息来避免一致性的问

(二)Linux实操之——网络配置、进程管理、服务管理、组管理

接上段   (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以得到本机的网络配置. linux下通过 ifconfig 可得到虚拟机的网络配置 在windows系统中运行着虚拟机中的linux系统,那么两个系统是怎么通信的呢? 实际上windows系统与本机的linux的通信是通过 VMnet8的虚拟网卡来进行的,两者形成网络,192.168.177.128

MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置

一.概述 keepalived介绍:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人 工做的只是修复故障的web服务器. 二.环境 ? 1 2 3 vip:192.168.1.203\204 mysql-master:192.168.1.231 mysql-

MYSQL + MHA +keepalive + VIP安装配置(二)--MHA的配置

一.总概 1.MHA介绍 MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步). MHA有两部分组成:MHA Manager(管理节点)和MHA Node(数据节点). MHA Manager可以单独部署在一台独立机器上管理多个master-slave集群,也可以部署在一台slave上.MHA Manager探测集群的node节点,当发现master出现故障的时候,它可以自动将具有最新数据的s