MySQL MHA高可用架构

0、MHA的实现原理及功能

       1)、监控节点(通过配置文件获取所有节点信息)

                  系统、网络

                   主从状态

        2) 选主策略

                1) 如果判断从库(position 或者gtid),数据有差异,最接近于master的slave,成为备选主;

                2) 如果判断从库(position 或者GTid)数据一致安装配置文件配置server的顺序选择(默认)

                3)如果设定有权重(candidate_master=1) ,按照权重强制指定备选主

                      1)、默认情况下如果一个slave落后master 100M的relay logs的话,即使有权重也不会选它;

                      2)、如果check_repl_delay=0的话,即使落后很多日志,也强制选择其为备选主

       3) 数据补偿策略

              1)当ssh能连接,从库对主库gtid或者position 号,立即将二进制日志保持至各个从节点并且应用(save_binary_logs);

              2)当ssh不能连接时,对比从库之间的relaylog的差异(apply_diff_relay_logs)

      4) Failover 

           将备选主进行身份切换,对外提供服务其余从库和新主库确认新的主从关系

     5) 应用透明(VIP)

     

     6)通知机制(send_report)

     7) 二次数据补偿(binlog_server)

    8) 自愈(待开发中.......)

               

1、MHA的环境1主2从,确保主从环境正常

下载mha-node 和mha-manage

下载地址:https://github.com/yoshinorim/mha4mysql-node/releases

2、主从之间配置ssh 互信

ssh-keygen -t rsa -P  ' '  

ssh-copy-id 

在三个节点上相互操作并相互验证

3、创建软连接

ln -s /app/mysql/bin/mysqlbinlog  /usr/bin/mysqlbinlog

ln -s /app/mysql/bin/mysql  /usr/bin/mysql

4、安装node 软件(三个节点都装)

yum install perl-DBD-MySQL -y
yum localinstall mha4mysql-node-0.58-0.el7.centos.noarch.rpm 

5、选择其中一台服务器作为manager服务器并安装下面软件

yum install -y perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManger perl-Time-HiRes

编译安装时需要安装下面的库(yum install  perl-CPAN* -y)

yum localinstall mha4mysql-manager-0.58-0.el7.centos.noarch.rpm  -y

6、创建MHA专用监控管理用户(直接在主库上创建就可以)

grant all privileges on *.* to 'mha'@'192.168.1.%' identified by '123';

flush privileges;

7、在三个节点上查看mha用户是否不同成功

select user,host from mysql.user;

8、在manager节点配置manager 配置文件

创建配置目录

mkdir  -p /etc/mha

创建日志目录

mkdir -p /var/log/mha

编辑mha配置文件

[server default]
manager_log=/var/log/mha/app1/manager
manager_workdir=/var/log/mha/app1
master_binlog_dir=/data/mysql/binlog
user=mha
password=mha
ping_interval=2
repl_password=123.com
repl_user=repl
ssh_user=root
[server1]
hostname=192.168.1.130
port=3306
[server2]
hostname=192.168.1.141
port=3306
[server3]
hostname=192.168.1.145
port=3306
 

9、使用mha自带的命令工具验证ssh互信(都是ok,就说明环境正常)

master_check_ssh --conf=/etc/mha/app1.conf

10、验证主从复制

master_check_repl --conf=/etc/mha/app1.conf

11、启动manager

nohup masterha_manager  --conf=/etc/mha/app1.cnf  --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
验证启动是否成功  

masterha_check_status --conf=/etc/mha/app1.cnf 
 


 

猜你喜欢

转载自blog.csdn.net/pang_2899/article/details/93464656