保证事务的一致性
达到真正意义上的高可用
MHA提供了什么功能
监控主数据库服务器是否可用
当主DB不可用时,从多个从服务器中选举出新的主数据库服务器
提供了主从切换和故障转移功能
MHA可以与半同步结合
提供主从切换和故障转移功能
MHA是如何进行主从切换的:
尝试从出现故障的主数据库保存二进制日志
从多个备选从服务器中选举出新的备选主服务器
可以人为设置一些服务器不参与选举
在备选主服务器和其它从服务器之间同步差异二进制数据
应用从原主DB服务器上保存的二进制日志
提升备选主DB服务器为新的主DB服务器
迁移集群中的其他从DB作为新的主DB的从服务器
MHA演示架构
使用GTID的复制模式
MHA配置步骤:
1、配置集群内所有主机的SSH免认证登陆,比如故障转移过程中保存
原主服务器二进制,配置虚拟IP地址等。
2、安装MHA-node软件包(在所有服务器)和MHA-manager软件包(在监控服务器)
yum -y install perl-Config-Tiny.noarch perl-Time-HiRes.x86_64 perl-Parallel-ForkManager perl-Log-Dispatch-Perl.noarch
perl-DBD-MySQL ncftp
3、建立主从复制集群
4、配置MHA管理节点
5、使用masterha_check_ssh和masterha_check_repl对配置进行检验
6、启动并测试MHA服务
具体配置:
1、建立基础复制架构
启用gtid_mode
建立复制用户
启动复制链路:3.201;3102都启动
配置MHA:
1、建立SSH的免认证登陆:ssh-keygen生成密钥
下面三个命令在每个节点(100,101,102)都需要执行
ssh -copy-id -i /root/.ssh/id_rsa '-p 22 root@192.168.3.100'
ssh -copy-id -i /root/.ssh/id_rsa '-p 22 root@192.168.3.101'
ssh -copy-id -i /root/.ssh/id_rsa '-p 22 root@192.168.3.102'
安装node软件包
安装支持软件包:yum -y install perl-DBD-MySQL ncftp perl-DBI.x86(所有节点都安装)
在监控服务器安装:
yum -y install perl-Config-Tiny.noarch perl-Time-HiRes.x86_64 perl-Parallel-ForkManager perl-Log-Dispatch-Perl.noarch
perl-DBD-MySQL ncftp
安装(监控服务器): rpm -ivh mha4mysql-manager-0.57-0.el7.noarch.rpm
安装好后配置:
建立MHA配置目录:mldir -p /etc/mha
从主服务器下载二进制目录(工作目录): mkdir -p /home/mysql_mha
[server default]
user=mha
password=123456 (在主服务器建立用户:grant all privileges on *.* to mha@'192.168.3.%' identified by '123456';)
manager_workdir=/home/mysql_mha (工作目录)
manager_log=/home/mysql_mha/manager.log
remote_workdir=/home/mysql_mha (远程服务器工作目录,需要在其 他节点建立这个目录mkdir -p /home/mysql_mha)
ssh_user=root
repl_user=repl (复制用户)
repl_password=123456
ping_interval=1 (manage线程来检测主数据库是否可以正常连接的间隔)
master_binlog_dir=/home/mysql/sql_log (最好把bin-log都配置在同样的目录,在主从切换时不需要再配置)
master_ip_failover_script=/user/bin/master_ip_failover
secondary_check_script=/usr/bin/masterha_secondary_check -s 192.168.3.101 -s 192.168.3.102 -s 192.168.3.100
[server1]
hostname=192.168.3.100
candidate_master=1
[server2]
hostname=192.168.3.101
candidate_master=1
[server3]
hostname=192.168.3.102
no_master=1
切换虚拟IP的脚部/user/bin/master_ip_failover
检测是否ssh是否配置成功:masterha_check_ssh --conf=/etc/mha/mysql_mha.cnf
检测配置文件:masterha_check_repl --conf=/erc/mha/mysql_mha.cnf
启动mha:nohup masterha_manager --conf=/etc/mha/mysql_mha.cnf &
主动配置虚拟IP:ifconfig eth0:1 192.168.3.90/24
MHA 工具的优点:
Perl语言开发的开源软件
可以支持基于GTID的复制模式
MHA在进行故障转移时更不易产生数据丢失
同一台监控节点可以监控多个集群
MHA的缺点:
需要编写脚本或利用第三方工具来时间Vip的配置
MHA启动后只会对主数据库进行监控
需要基于SSH免认证配置,存在一定的安全隐患
没有提供从服务器负载均衡的功能