利用MHA+MaxScale配置MySQL 高可用+读写分离

MAH介绍

MHA(Master High Availability)是一种MySQL高可用解决方案,由日本DeNA公司开发,主要用于在故障切换和主从提升时进行快速切换,并最大程度保证数据一致性。
MHA主要由两部分组成:
1、MHA Manager(管理节点),管理节点部署在群集之外,主要用于定期监测群集中的主节点,并在主从切换时负责管理调度切换流程。
2、MHA Node(数据节点),数据节点部署在每个群集节点上,负责在主从切换时对比和应用差异日志。

管理节点主要包含以下工具:
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信息

数据节点主要包含以下工具:
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
##==============================================================##
MHA主要特性:
1、MHA切换不依赖实例使用存储引擎和BINLOG格式;
2、MHA不会增加MySQL服务器性能开销,除MHA管理节点外无需增加额外服务器;
3、在MySQL服务器上部署MHA数据节点不会影响当前实例运行;
4、MHA实现自动故障切换,也可以手动触发在线切换;
5、MHA可以实现秒级的故障切换;
6、MHA可以将任意slave提升master,也可以在切换时指定master候选节点;
7、MHA提供扩展接口,允许在MHA切换过程中的特定时间点执行用户自定义脚本。

##==============================================================##

MaxScale介绍

如图,客户端发送sql请求到MaxScale,MaxScale判断sql是读操作还是写操作,再讲sql请求转发到响应节点上,实现读写分离。
读写分离原理图

搭建过程

设置三台mysql,搭建主从;一台作为MHA和MaxScale管理节点:
主 1.1.1.1
从 1.1.1.2
从 1.1.1.3
管理节点 1.1.1.4
主从配置就不过多赘述了,可以看之前写的文章 https://blog.csdn.net/qq_33933666/article/details/103362407

搭建MHA

要注意一点,开启mysql的半同步复制:

vim  /etc/my.cnf
#添加模块
plugin-load=“rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so”
rpl_semi_sync_slave_enabled=1
rpl_semi_sync_master_enabled=1
#关闭自动删除relay日志
global relay_log_purge=0

配置整个集群互相免密ssh登录

#以其中一台为例,其他节点配置方法相同
ssh-keygen -t rsa
ssh-copy-id 1.1.1.2
ssh-copy-id 1.1.1.3
ssh-copy-id 1.1.1.4

部署管理节点
安装依赖

yum -y install perl-ExtUtils-* perl-CPAN-* 
#注意,管理节点也要安装node包
mha4mysql-node-0.56-0.el6.noarch.rpm
perl-Config-Tiny-2.14-7.el7.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm
perl-Mail-Sender-0.8.23-1.el7.noarch.rpm
perl-Mail-Sendmail-0.79-21.el7.noarch.rpm
perl-MIME-Lite-3.030-1.el7.noarch.rpm
perl-MIME-Types-1.38-2.el7.noarch.rpm
perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm

安装manager

tar -xf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56/
perl Makefile.PL INSTALL_BASE=xxx            #指定安装路径,我这里没有指定   
make && make install
mkdir -p /etc/mha_conf/log					 #创建mha工作目录和log目录
cp samples/conf/app1.cnf /etc/mha_conf/      #复制配置文件模板
cp bin/'*  /sbin/							 #复制bin下脚本到环境变量文件里
samples/scripts/master_ip_failover           #用于自动切换IP的脚本,但我这里没有使用
samples/scripts/master_ip_online_change		 #用于手动切换主从的脚本,我这里也没有使用

配置mha配置文件

	vim /etc/mha_conf/app1.cnf
	
  1 [server default]
  2 manager_workdir=/etc/mha_conf/app1
  3 manager_log=/etc/mha_conf/log/manager.log
  4 #master_ip_failover_script=/etc/mha_conf/master_ip_failover     //未启用自动切换脚本
  5 
  6 ssh_user=root													//ssh登录的用户
  7 ssh_port=22
  8 
  9 repl_user=repluser												//用于配置主从同步的账户
 10 repl_password=123456
 11 
 12 user=monitor													//用于监控mysql数据库状态的账户
 13 password=monitor123
 14 
 15 [server1]														//第一台服务器
 16 hostname=1.1.1.1
 17 candidate_master=1												//是否参与主库竞选
 18 
 19 [server2]
 20 hostname=1.1.1.2
 21 candidate_master=1
 22 
 23 <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值