Mha-Atlas-MySQL高可用

Mha-Atlas-MySQL高可用

一、MHA简介

1、软件介绍

MHA在MySQL高可用是一个相对成熟的解决方案,是一套优秀的作为mysql高可用
环境下故障切换和主从提升的高可用软件,在MySQL故障切换过程中,
MHA能做到0~30秒内自动完成数据库的故障切换操作,并且在进行故障
切换过程中,MHA能最大程度上保证数据库的一致性,以达到真正意义上的高可用。

2、MHA组成

MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。
MHA Manager可以独立部署在一台独立的机器上管理多个Master-Slave集群,
也可以部署在一台Slave上。当Master出现故障时,它可以自动将最新数据的
Slave提升为新的Master,然后将所有其他的Slave重新指向新的Master。

3、MHA工作流程

①从宕机崩溃的master保存二进制日志时间(binlog events);
②识别含有最近更新的slave;
③应用差异的中继日志(relay log)到其他的slave;
④应用从master保存的二进制日志事件(binlog events);
⑤提升一个slave为新的master;
⑥使其它的slave连接新的master进行复制;

流程详解

1)复制主库binlog日志出来
2)找出relaylog日志最全的从库
3)将最全的relaylog日志在所有从库中同步(第一次同步数据)
4)将之前最全的从库提升为主库
5)将复制出来的binlog日志,放到新提升的主库里
6)其他所有从库重新指向新提升的主库,继续主从复制

4、MHA工具介绍

MHA软件由两部分组成:Manager工具包(管理端)和Node工具包(节点端)

(1)Manager主要包括以下几个工具:

masterha_check_ssh  ==>检查MHA的SSH配置状况
masterha_check_repl  ==>检查MySQL复制状况
masterha_check_status  ==>检测当前MHA运行状态
masterha_master_monitor  ==>检测master是否宕机
masterha_manger  ==>启动MHA
masterha_master_switch  ==>控制故障转移(自动或手动)
masterha_conf_host  ==>添加或删除配置的server信息
masterha_secondary_check  ==>试图建立TCP连接从远程服务器
masterha_stop  ==>停止MHA

(2)Node主要包括以下几个工具:

save_binary_logs  ==>保存和复制master的二进制日志
apply_diff_relay_logs  ==>识别差异的中继日志事件
filter_mysqlbinlog  ==>去除不必要的ROLLBACK事件
purge_relay_logs  ==>清除中继日志

二、MHA环境准备

1、准备三台mysql虚拟机

主机名 IP地址(NAT) 描述
mysql-db01 eth0:192.168.200.51 系统:CentOS6.5 安装:mysql5.6
mysql-db02 eth0:192.168.200.52 系统:CentOS6.5 安装:mysql5.6
mysql-db03 eth0:192.168.200.53 系统:CentOS6.5 安装:mysql5.6

2、软件包

mha管理节点安装包

mha4mysql-manager-0.56-0.el6.noarch.rpm
mha4mysql-manager-0.56.tar.gz

mha node节点安装包

mha4mysql-nade-0.56-0.el6.noarch.rpm
mha4mysql-node-0.56.tar.gz

mysql中间件

Atlas-2.2.1.el6.x86_64.rpm

mysql源码安装包

mysql-5.6.17-linux-glibc2.5-x86_64tar

3、主机名映射

三台虚拟机,都需要映射三个IP域名

三、MySQL环境准备

  三台虚拟机都需要安装MySQL

安装mysql二进制
直接解压即可:解压到/usr/local/
创建用户:

useradd -s /sbin/nologin -M mysql

进入/usr/local/mysql-5.5.32-linux/
做个软连接方便使用==>

ln -s mysql-5.5.32-linux /usr/local/mysql

复制配置文件:

/bin/cp support-files/my-small.cnf /etc/my.cnf

  做初始化:

创建mysql数据文件目录==>

mkdir -p /usr/local/mysql/data

授权mysql用户管理mysql的安装目录==>

chown -R mysql.mysql /usr/local/mysql

安装初始化mysql依赖包==>

yum -y install libaio

初始化mysql数据库文件==>

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

复制mysql启动脚本到mysql的命令路径==>

cd /usr/local/mysql
cp support-files/mysql.server /etc/init.d/mysqld

加x权限,使脚本可执行==>

chmod +x /etc/init.d/mysqld

启动mysql==>

/etc/init.d/mysqld start

给mysql命令做软连接==>

ln -s /usr/local/mysql/bin/* /usr/local/bin

给mysql添加密码==>

mysqladmin -uroot password '123123'

四、配置GTID主从复制

1、GTID主从复制

自动追踪

2、GTID全局事物标识符

是一个唯一的标识符,他创建并与源服务器(主)上提交的每个事物相关联。
GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。

3、GTID的新特性

支持多线程复制,每个库有一个单独的(sql线程)
支持启用GTID,无需再知道binlog和POS点,只需知道master的IP/端口/账号密码即可
基于Row复制只保存改变的列,大大节省磁盘空间,网络,内存等
支持把master和slave的相关信息记录在table中,增强可用性。原来是记录在文件里。
支持延迟复制。

猜你喜欢

转载自www.cnblogs.com/heroke/p/10011887.html
今日推荐