Master High Availability 安装配置

MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,
是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。在
MySQL 故障切换过程中,MHA 能做到在 0~30 秒之内自动完成数据库的故障切换操
作,并且在进行故障切换的过程中,MHA 能在最大程度上保证数据的一致性,以达
到真正意义上的高可用。
该软件由两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点)。MHA Manager
可以单独部署在一台独立的机器上管理多个 master-slave 集群,也可以部署在一台 slave

点上。
MHA Node 运行在每台 MySQL 服务器上,MHA Manager 会定时探测集群中的 master
节点,当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,然后将
所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。MHA 可

与半同步复制结合起来,目前 MHA 主要支持一主多从的架构,要搭建 MHA,要求一个复制集群
中必须最少有三台数据库服务器,一主二从,即一台充当 master,一台充当备用 master,另
外一台充当从库.
MHA 切换步骤:
1.从宕机的 master 中保存二进制文件
2.检测含有最新日至更新的 slave
3.应用差异的中继日至(relay log)到其他的 slave
4.应用从 master 中保存的二进制日至事件到其他的 slave 中
5.提升一个 slave 为 master
6.使其他的 slave 指向最新的 master 进行复制。
manager 的工具:
masterha_check_ssh 检查 MHA 的 SSH 配置状况
masterha_check_repl 检查 MySQL 复制状况
masterha_manger 启动 MHA
masterha_check_status 检测当前 MHA 运行状态
masterha_master_monitor 检测 master 是否宕机
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的 server 信息
node 的工具:
save_binary_logs 保存和复制 master 的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的 slave
filter_mysqlbinlog 去除不必要的 ROLLBACK 事件(MHA 已不再使用这个工具)
purge_relay_logs 清除中继日志(不会阻塞 SQL 线程)
Mha 实验环境配置:我们这个是在主从复制(一主两从)的基础上搭建的,mha 是可以放在一个 slave 端也可以单

运行:
实验环境配置:
Rhel6.5
iptables selinux down
172.25.40.1 server1.example.com master
172.25.40.2 server2.example.com slave candidate master
172.25.40.3 server3.example.com slave
mha
Master 端配置:

yum install perl-DBD-mysql -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

构建免密登陆
ssh-keygen
##生成密钥 ssh-copy-id 172.25.40.2
##给另外两台 mysql 主机分发,这样可以免密连接
ssh-copy-id 172.25.40.3
mysql 主配置文件(/etc/my.cnf)配置

[mysqlnd]
server-id=1

##数据库的唯一标示,不能重复
log-bin=mysql-bin
##二进制记录文件名为 mysql-bin
binlog-do-db=test ##同的库为 test
binlog-ignore-db=mysql ##不同步 mysql
gtid-mode=ON ##打开 gtid 模式
enforce-gtid-consistency=ON##强制使用 gtid 模式
slave-parallel-type=LOGICAL_CLOCK ##打开多线程模式
slave-parallel-workers=16 ##开启 16 个线程
relay_log_info_repository=TABLE
##以表格形式存放 relay-log 信息
relay_log_recovery=ON
rpl_semi_sync_master_enabled=ON ##设置半同步 master 和 slave 开启
rpl_semi_sync_slave_enabled=ON
重新启动两台服务器上的 mysql
/etc/init.d/mysqld restart
进入数据库下载半同步模块

mysql> install plugin rpl_semi_sync_master soname ‘semisync_master.so‘;
Query OK, 0 rows affected (0.50 sec)
mysql> set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)

给所创建的认证用户复制权限及 root 用户所有权限的授权

mysql> grant all privileges on *.* to ‘root‘@‘172.168.40.%‘ identified
‘xxxxxxxxxx‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)by
mysql> grant replication slave on *.* to ‘redhat‘@‘172.168.40.%‘ identified by
‘xxxxxxxxx‘;
mysql> grant all on *.* to [email protected]‘172.25.40.%‘ identified by ‘xxxxxxxx‘;
Query OK, 0 rows affected, 1 warning (0.38 sec)

Slave(candidate master)端配置:

yum install perl-DBD-mysql -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

构建免密登陆
ssh-keygen
##生成密钥
ssh-copy-id 172.25.40.1 ##给另外两台 mysql 主机分发,这样可以免密连接
ssh-copy-id 172.25.40.3
mysql 主配置文件(/etc/my.cnf)配置

[mysqlnd]
除过 server-id 是不同的,其他参数均一样
server-id=2

重新启动两台服务器上的 mysql
/etc/init.d/mysqld restart 进入数据库下载半同步模块

mysql> install plugin rpl_semi_sync_slave soname ‘semisync_slave.so‘;
Query OK, 0 rows affected (0.14 sec)
mysql> set global rpl_semi_sync_slave_enabled=1;
Query OK, 0 rows affected (0.00 sec)
mysql> set global read_only=1;

#设置为只读模式,因为是备选 master,所以当
master 宕机时,candidate master 要充当 master,故不用写进配置文件中
Query OK, 0 rows affected (0.00 sec)
给所创建的认证用户复制权限及 root 用户所有权限的授权
mysql> grant all privileges on .to [email protected]’172.25.40.%’ identified by ‘xxxxxxxx’;
##这个密码是 manager 主机配置文件里面所写的密码
Slave 端配置:

yum install perl-DBD-mysql -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

构建免密登陆
ssh-keygen
##生成密钥
ssh-copy-id 172.25.40.1##给另外两台 mysql 主机分发,这样可以免密连接
ssh-copy-id 172.25.40.2
mysql 主配置文件(/etc/my.cnf)配置

[mysqlnd]
除过 server-id 是不同的,其他参数均一样
server-id=3

重新启动两台服务器上的 mysql
/etc/init.d/mysqld restart
进入数据库下载半同步模块

mysql>  install plugin rpl_semi_sync_slave soname ‘semisync_slave.so‘;
Query OK, 0 rows affected (0.14 sec)lave_enabled=1;
Query OK, 0 rows affected (0.00
mysql> set global rpl_semi_sync_slave_enabled=1

给所创建的认证用户复制权限及 root 用户所有权限的授权

mysql> grant all privileges on *.* to ‘root‘@‘172.168.40.%‘ identified
‘xxxxxxxxx‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)
by
mysql> grant replication slave on *.* to ‘redhat‘@‘172.168.40.%‘ identified by
‘xxxxxxxx‘;
mysql> change master to
master_host=‘172.25.40.1‘,master_user=‘redhat‘,master_password=‘xxxxxxxxxx‘,
master_auto_position=1;

Mha 主机

yum install perl-* mha4mysql-manager-0.56-0.el6.noarch.rpm -y
mkdir /usr/local/mha

##创建工作目录 workdir

mkdir /etc/mha
cd /etc/mha/

##创建配置文件所在目录

vim app.conf
 [server default]
 manager_workdir=/usr/local/mha
 manager_log=/usr/local/mha/mha.log
 master_binlog_dir=/var/lib/mysql
 user=root               ##数据库用户 登陆数据库的用户 ,用于manager监控管理用户和密码
 password=xxxxxxxx        ##数据库登陆密码   初始化的时候登陆数据库的密码
 ping_interval=1
 remote_workdir=/tmp
 repl_user=redhat            ##复制用户(授权在slave上)用于主从间复制
 repl_password=xxxxxxxx      ##slave复制用户的密码        ssh_user=root               ##ssh用户
 [server1]
 hostname=172.25.40.1
 port=3306
 [server2]
 hostname=172.25.40.2
 port=3306
 candidate_master=1          ##备用主机          check_repl_delay=0          ##日至差异大于100M的时候,不做master,两个参数通常一起使用
 [server3]
 hostname=172.25.40.3
 port=3306
 #no_master=1                ##永远不会作为master

检查MySQL复制状况

masterha_check_repl –conf=/etc/mha/app.cnf
Tue Apr 24 09:14:45 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Tue Apr 24 09:14:45 2018 - [info] Reading application default configuration from /etc/mha/app.conf..
Tue Apr 24 09:14:45 2018 - [info] Reading server configuration from /etc/mha/app.conf..
Tue Apr 24 09:14:45 2018 - [info] MHA::MasterMonitor version 0.56.
Tue Apr 24 09:14:45 2018 - [info] GTID failover mode = 1
Tue Apr 24 09:14:45 2018 - [info] Dead Servers:
Tue Apr 24 09:14:45 2018 - [info] Alive Servers:
Tue Apr 24 09:14:45 2018 - [info]   172.25.40.1(172.25.40.1:3306)
Tue Apr 24 09:14:45 2018 - [info]   172.25.40.2(172.25.40.2:3306)
Tue Apr 24 09:14:45 2018 - [info]   172.25.40.3(172.25.40.3:3306)
Tue Apr 24 09:14:45 2018 - [info] Alive Slaves:
Tue Apr 24 09:14:45 2018 - [info]   172.25.40.2(172.25.40.2:3306)  Version=5.7.17-log (oldest major version between slaves) log-bin:enabled
Tue Apr 24 09:14:45 2018 - [info]     GTID ON
Tue Apr 24 09:14:45 2018 - [info]     Replicating from 172.25.40.1(172.25.40.1:3306)
Tue Apr 24 09:14:45 2018 - [info]     Primary candidate for the new Master (candidate_master is set)
Tue Apr 24 09:14:45 2018 - [info]   172.25.40.3(172.25.40.3:3306)  Version=5.7.17 (oldest major version between slaves) log-bin:disabled
Tue Apr 24 09:14:45 2018 - [info]     GTID ON
Tue Apr 24 09:14:45 2018 - [info]     Replicating from 172.25.40.1(172.25.40.1:3306)
Tue Apr 24 09:14:45 2018 - [info]     Not candidate for the new Master (no_master is set)
Tue Apr 24 09:14:45 2018 - [info] Current Alive Master: 172.25.40.1(172.25.40.1:3306)
Tue Apr 24 09:14:45 2018 - [info] Checking slave configurations..
Tue Apr 24 09:14:45 2018 - [info]  read_only=1 is not set on slave 172.25.40.2(172.25.40.2:3306).
Tue Apr 24 09:14:45 2018 - [info]  read_only=1 is not set on slave 172.25.40.3(172.25.40.3:3306).
Tue Apr 24 09:14:45 2018 - [warning]  log-bin is not set on slave 172.25.40.3(172.25.40.3:3306). This host cannot be a master.
Tue Apr 24 09:14:45 2018 - [info] Checking replication filtering settings..
Tue Apr 24 09:14:45 2018 - [info]  binlog_do_db= , binlog_ignore_db=
Tue Apr 24 09:14:45 2018 - [info]  Replication filtering check ok.
Tue Apr 24 09:14:46 2018 - [info] GTID (with auto-pos) is supported. Skipping all SSH and Node package checking.
Tue Apr 24 09:14:46 2018 - [info] Checking SSH publickey authentication settings on the current master..
Tue Apr 24 09:14:46 2018 - [info] HealthCheck: SSH to 172.25.40.1 is reachable.
Tue Apr 24 09:14:46 2018 - [info]
172.25.40.1(172.25.40.1:3306) (current master)
 +--172.25.40.2(172.25.40.2:3306)
 +--172.25.40.3(172.25.40.3:3306)

Tue Apr 24 09:14:46 2018 - [info] Checking replication health on 172.25.40.2..
Tue Apr 24 09:14:46 2018 - [info]  ok.
Tue Apr 24 09:14:46 2018 - [info] Checking replication health on 172.25.40.3..
Tue Apr 24 09:14:46 2018 - [info]  ok.
Tue Apr 24 09:14:46 2018 - [warning] master_ip_failover_script is not defined.
Tue Apr 24 09:14:46 2018 - [warning] shutdown_script is not defined.
Tue Apr 24 09:14:46 2018 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

原文地址:http://blog.51cto.com/12183531/2110351

时间: 2024-11-09 01:01:25

Master High Availability 安装配置的相关文章

Spark:Master High Availability(HA)高可用配置的2种实现

Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着Master单点故障的问题.如何解决这个单点故障的问题,Spark提供了两种方案: 基于文件系统的单点恢复(Single-Node Recovery with Local File System) 基于zookeeper的Standby Masters(Standby Masters with ZooKeeper) ZooKeeper提供了一个Leader El

saltstack安装配置(master&minion)草稿

操作系统centos6.3,centos6.4,windows server2008R2. 文中的下载链接可能会随着saltstack官网上版本的更新,而出现变动或错误,请以你需要安装的版本链接为准.我写上具体链接是为了近段时间重复操作时方便. 本文中,linux采用EPEL安装,windows选择exe安装包. 1.在你的系统中如果EPEL当前并不是enabled状态,你可以通过如下命令启用它. 对于RHEL 5: rpm -Uvh http://mirror.pnl.gov/epel/5/i

redis应用之安装配置介绍

一.redis介绍: 1.redis定义: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持.redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都

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

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

Redis3.2.8集群安装配置

准备环境: 使用2台centos服务器,每台机器上部署3个实例,集群为三个主节点与三个从节点: 第一台 192.168.1.107:7000 192.168.1.107:7001 192.168.1.107:7002 第二台 192.168.1.108:7003 192.168.1.108:7004 192.168.1.108:7005 安装配置: 192.168.1.107服务器 #yum -y install gcc zlib ruby rubygems #gem install redis

ubuntu16.04 安装配置matlab ,python ,cuda8.0,cudnn,opencv3.1的caffe环境

网络上有很多ubuntu上caffe配置环境的帖子,本人照着其中的许多进行了参考,都出现了或多或少的错误,很多地方也有差异. 于是自己整理了下自己的安装过程,成功进行了测试,跑通了faster-rcnn.配置环境时间为2017.1.4 系统ubuntu16.04 一:显卡驱动的安装: 由于要使用GPU,所以先要查看自己显卡所匹配的显卡驱动,网址:http://www.nvidia.com/Download/index.aspx%3Flang=en-us 选择电脑匹配的显卡驱动,本人电脑显卡为GT

ZooKeeper-3.3.4集群安装配置(转载)

ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization).命名服务(Naming Service).集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务.ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证Z

Git服务器的Gitosis安装配置及gitignore的使用方法

Git服务器Gitosis安装设置 1.安装 openssh服务器 sudo apt-get install openssh-server openssh-client 2.创建个人公钥和私钥 在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥 ssh-keygen -t rsa 默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥 ssh-keygen -t rsa -b 4096 默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示: id_rsa