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中,增强可用性。原来是记录在文件里。
支持延迟复制。