Presentation is loading. Please wait.

Presentation is loading. Please wait.

MHA(Master High Availability) 作者

Similar presentations


Presentation on theme: "MHA(Master High Availability) 作者"— Presentation transcript:

1 MHA(Master High Availability) 作者

2 数据库HA架构 一主带三从,高可用架构采用开源MHA+半同步复制semi replication MHA管理多组集群

3 生产数据库HA架构 目前为一主带三从,高可用架构采用开源MHA+半同步复制semi replication,参数为:
sync_binlog = 1 innodb_flush_log_at_trx_commit = 1 innodb_support_xa = 1 (事务的两阶段提交) 和MMM架构主要区别是:数据补齐功能。当原主库连接不上,监控管理机会试图scp主库的binlog,把没有同步复制完成的那一部分差异数据补齐。

4 恢复步骤: 1、识别最新的Slave, 并试图从死掉的Master 上scp那一部分差异的 binlog执行完, 并提升为新的Master; 4、最后再scp死掉的Master上那一部分差异的binlog,并执行完。至此数据全部恢复一致。 2、等待最老的Slave把中继日志relay-log执行完; 3、从最新的Slave上scp那一部分差异的中继日志relay-log,并执行完;

5 如何识别最新的Slave?

6 MHA架构注意事项: 1、防止网络抖动误切换,造成数据不一致,其实现原理为:投票机制,当监控管理机无法ping通和无法连接MySQL主库,会试图从监控备机上去ping和连接MySQL主库,只有双方都连接失败,才认定MySQL主库宕机。假如有一方可以连接MySQL主库,都不会切换。 参数:secondary_check_script=/usr/local/bin/masterha_secondary_check \ -s s user=root --master_host=QCZJ-dbm \ --master_ip= master_port=3306 由于masterha_secondary_check脚本写死了端口,所以要手工修改ssh端口: $ssh_user = "root" unless ($ssh_user); $ssh_port = unless ($ssh_port); $master_port = unless ($master_port);

7 MHA架构注意事项: 2、VIP没有采用keepalived,就是怕网络抖动问题。 修改的以下两个脚本,自带VIP:
master_ip_failover_script=/usr/local/bin/master_ip_failover master_ip_online_change_script=/usr/local/bin/master_ip_online_change # Hardcode stuff now until the next MHA release passes SSH info in here MHA::ManagerUtil::exec_ssh_cmd( $new_master_ip, '62222', "ip addr add /32 dev em2;arping -q -c 2 -U -I em ", undef );

8 MHA架构注意事项: 3、新浪DBA刘江之前问了我一个问题,mha依赖ssh,ssh有时会出现连接慢或者不通的情况,你们怎么解决 ?
答:设置一下ssh连接超时时间(ssh timeout):

9 MHA架构注意事项: 4、死掉的原Master如何与提升为新的Master建立同步复制关系?
答:# grep -i 'change' manager.log Sat Sep 5 12:50: [info] All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='QCZJ-dbm or ', MASTER_PORT=3308, MASTER_LOG_FILE='mysql-bin ', MASTER_LOG_POS=326, MASTER_USER='repl', MASTER_PASSWORD='xxx'; Sat Sep 5 12:50: [info] Executed CHANGE MASTER. 5、MHA结合半同步复制semi replication注意些什么? 答:我们是金融公司,数据不丢失是第一位的。开启半同步复制势必会影响性能,所以我们针对这种情况,将DB服务器通过VLAN划分为一个独立网段,与应用是隔离的,保障有一个良好的网络环境。 此外,由于MHA是基于ssh公私钥认证,有些公司禁止ssh互通,怕被黑客入侵,然后可以跳到其他DB服务器里,所以将DB与应用隔离,是必要的。

10 MHA架构安装: 1、官网安装文档 RHEL/CentOS 6安装步骤: # MHA安装包(MHA管理节点、MASTER、SLAVE均安装) yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager 如果你没有找到rpm包,要安装一下epel源 rpm -ivh epel-release-6-8.noarch.rpm #在管理节点,安装MHA管理和客户端安装包 tar zxvf mha4mysql-node-0.56.tar.gz cd mha4mysql-node perl Makefile.PL make make install

11 MHA架构安装: ------------------------------------
tar zxvf mha4mysql-manager-0.56.tar.gz cd mha4mysql-manager perl Makefile.PL make make install #在master和slave节点,安装MHA客户端安装包 tar zxvf mha4mysql-node-0.56.tar.gz cd mha4mysql-node # 公私钥认证,打通SSH无密码(管理节点、master和slave均执行如下) ssh-keygen ssh-copy-id '-p 22 ssh-copy-id '-p 22 ssh-copy-id '-p 22 ssh-copy-id '-p 22

12 MHA架构安装: ------------------------------------ MHA 重点参数详解
1、如果你的环境是链式复制架构,比如A-B-C,那么设置candidate_mast=1 如果不是,设置candidate_mast=0 2、在默认情况下,当一个slave同步延迟超过100M relay log, MHA在做故障切换时不会选择这个slave做为新的master,因为恢复需要经过很长时间。 当设置了check_repl_delay = 0, MHA将忽略被选择的slave上的同步延迟。 这个选项在设置了candidate_master = 1特声明的期望这台机器成为master的情况下特别有用。 3、在默认情况下,不会在slave存在故障的情况下(SQL Thread已经停止出错)的情况下进行Master的故障切换。 当设置了ignore_fail = 1时,MHA会在所有的机器有问题的时间也会进行故障切换。


Download ppt "MHA(Master High Availability) 作者"

Similar presentations


Ads by Google