MHA实现mysql高可用性

一、 MHA:Master High Availability

    对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经支持一主一从
官网:https://code.google.com/archive/p/mysql-master-ha/
MHA集群架构

MHA实现mysql高可用性

1.MHA工作原理:

(1) 从宕机崩溃的master保存二进制日志事件(binlog events)
(2) 识别含有最新更新的slave
(3) 应用差异的中继日志(relay log)到其他的slave
(4) 应用从master保存的二进制日志事件(binlog events)
(5) 提升一个slave为新的master
(6) 使其他的slave连接新的master进行复制
2.MHA软件由两部分组成,Manager工具包和Node工具包
(1)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信息
(2)Node工具包:这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:
save_binary_logs       保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog     去除不必要的ROLLBACK事件(MHA已不再使用此工具)
purge_relay_logs       清除中继日志(不会阻塞SQL线程)
(可选:为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL 5.5的半同步复制)
3.自定义扩展:
secondary_check_script:         通过多条网络路由检测master的可用性
master_ip_ailover_script:       更新Application使用的masterip
shutdown_script:                强制关闭master节点
report_script:                  发送报告
init_conf_load_script:              加载初始配置参数
master_ip_online_change_script:更新master节点ip地址
4.配置文件:
global配置,为各application提供默认配置
application配置:为每个主从复制集群
5.实现MHA
(1)在管理节点上安装两个包:
mha4mysql-manager (须开启epel源,必要时yum install mha4*)
mha4mysql-node
(2)在被管理节点安装:
mha4mysql-node
6.在管理节点建立配置文件
vim /etc/mastermha/app1.cnf
[server default]
user=mhauser
password=123456
master_binlog_dir=/data/bin/
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=repluser
repl_password=123456
ping_interval=1

[server1]
hostname=192.168.30.16
candidate_master=1
[server2]
hostname=192.168.30.66
candidate_master=1
[server3]
hostname=192.168.30.6
candidate_master=1
7.实现Master
vim /etc/my.cnf
[mysqld]
log-bin=/data/bin/mysql-bin
server_id=1
skip_name_resolve=1

mysql>show master logs
mysql>grant replication slave on *.* to repluser@'192.168.30.%' identified by ‘123456';
mysql>grant all on *.* to mhauser@'192.168.30.%’identified by‘123456';
8.实现slave
vim /etc/my.cnf
[mysqld]
server_id=2     #不同节点此值各不相同
log-bin=/data/bin/mysql-bin
read_only
relay_log_purge=0
skip_name_resolve=1
mysql>CHANGE MASTER TO 
MASTER_HOST=‘MASTER_IP',
MASTER_USER='repluser', 
MASTER_PASSWORD=‘123456',
MASTER_LOG_FILE='mariadb-bin.000001', 
MASTER_LOG_POS=245;
9.在所有节点实现相互之间ssh key验证
(1)MHA验证和启动
masterha_check_ssh --conf=/etc/mastermha/app1.cnf
masterha_check_repl --conf=/etc/mastermha/app1.cnf
masterha_manager --conf=/etc/mastermha/app1.cnf  //此命令执行后会默认在前台执行,除非主节点出现问题导致自动提升从节点做新的主节点
(2)模拟主节点宕机:
systemctl stop mariadb
(3)排错日志
cat /data/mastermha/app1/manager.log | tail  //可以查看哪个从节点被提升为新的主节点

转载于:https://blog.51cto.com/14230230/2391303

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值