mysql-MHA高可用

1.高级架构演变

多活:没有切换的动作
单活:有切换的动作
高可用架构:
  单活:
      MMM架构——mysql-mmm(google)---2主1从
      MHA架构——mysql-master-ha(日本DeNa)---1主2从
      T-MHA架构——淘宝的---1主1从
  多活:
      (MGC)MariaDB Galera Cluster架构
      (PXC)Percona XtraDB Cluster架构
       MySQL Cluster(Oracle rac)架构
      (MGR)MySQL Group replication(5.7.17新特性) 
    
Innodb Cluster 高性能架构: 读写分离架构(读性能较高,写比较少) 代码级别 MySQL proxy (Atlas,mysql router,proxySQL(percona),maxscale)、 amoeba(taobao) xx-dbproxy等。 分布式架构(读写性能都提高):分布式架构里面一般都支持高可用方案 分库分表——cobar,TDDL,DRDS Mycat,DBLE自主研发等。 NewSQL,TiDB
     innodb cluster.

2.MHA环境搭建

MHA:manager(管理端)+node(节点端)
架构介绍:
    1主2从,master:132   slave:133   134 
    MHA 高可用方案软件构成
    Manager软件:选择一个从节点安装
    Node软件:所有节点都要安装

安装规划:(实验环境将其manager安装在134上面) 
    主库: 
        132    node 
    从库: 
        133    node
        134    node    
    manager
        135
要求:
    1.配置免秘钥登录

部署MHA高可用架构:
1.配置关键程序软连接:(mha脚本里面已经写了绝对路径,所以要使用软连接)
    ln -s /usr/local/mysql/bin/mysqlbinlog    /usr/bin/mysqlbinlog
    ln -s /usr/local/mysql/bin/mysql          /usr/bin/mysql
2.配置免秘钥:(mha在工作过程中要传输文件)
  db01:
    rm -rf /root/.ssh 
    ssh-keygen
    cd /root/.ssh 
    mv id_rsa.pub authorized_keys
    scp  -r  /root/.ssh  192.168.253.133:/root 
    scp  -r  /root/.ssh  192.168.253.134:/root 
  验证结果:
    ssh 192.168.253.132 date
    ssh 192.168.253.133 date
    ssh 192.168.253.134 date
3.安装mha软件
  下载mha软件:
    mha官网:https://code.google.com/archive/p/mysql-master-ha/
    github下载地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads
  所有节点安装Node软件依赖包
    yum install perl-DBD-MySQL -y
    rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
  Manager软件安装(234机器)
    yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
    rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
  在132主库中创建mha监控专用的管理用户:主库创建,从库会同步过去
    grant all privileges on *.* to mha@'192.168.253.%' identified by 'mha';

3.MHA环境manager管理工具的配置文件

创建manager的配置文件目录(234节点)
 mkdir -p /etc/mha
创建日志目录
 mkdir -p /var/log/mha/app1
编辑mha配置文件
vim /etc/mha/app1.cnf   # 注意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
repl_user=repl
ssh_user=root                               
[server1]                                   
hostname=192.168.253.132
port=3306                                  
[server2]            
hostname=192.168.253.133
port=3306
[server3]
hostname=192.168.253.134
port=3306

4.MHA环境的状态检查

1.免秘钥登录检查
[root@db3 data]# masterha_check_ssh  --conf=/etc/mha/app1.cnf 
Mon Feb 24 12:36:07 2020 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Mon Feb 24 12:36:07 2020 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Mon Feb 24 12:36:07 2020 - [info] Reading server configuration from /etc/mha/app1.cnf..
Mon Feb 24 12:36:07 2020 - [info] Starting SSH connection tests..
Mon Feb 24 12:36:07 2020 - [debug] 
Mon Feb 24 12:36:07 2020 - [debug]  Connecting via SSH from [email protected](192.168.253.132:22) to [email protected](192.168.253.133:22)..
Mon Feb 24 12:36:07 2020 - [debug]   ok.
Mon Feb 24 12:36:07 2020 - [debug]  Connecting via SSH from [email protected](192.168.253.132:22) to [email protected](192.168.253.134:22)..
Mon Feb 24 12:36:07 2020 - [debug]   ok.
Mon Feb 24 12:36:08 2020 - [debug] 
Mon Feb 24 12:36:07 2020 - [debug]  Connecting via SSH from [email protected](192.168.253.133:22) to [email protected](192.168.253.132:22)..
Mon Feb 24 12:36:07 2020 - [debug]   ok.
Mon Feb 24 12:36:07 2020 - [debug]  Connecting via SSH from [email protected](192.168.253.133:22) to [email protected](192.168.253.134:22)..
Mon Feb 24 12:36:08 2020 - [debug]   ok.
Mon Feb 24 12:36:08 2020 - [debug] 
Mon Feb 24 12:36:08 2020 - [debug]  Connecting via SSH from [email protected](192.168.253.134:22) to [email protected](192.168.253.132:22)..
Mon Feb 24 12:36:08 2020 - [debug]   ok.
Mon Feb 24 12:36:08 2020 - [debug]  Connecting via SSH from [email protected](192.168.253.134:22) to [email protected](192.168.253.133:22)..
Mon Feb 24 12:36:08 2020 - [debug]   ok.
Mon Feb 24 12:36:08 2020 - [info] All SSH connection tests passed successfully.
[root@db3 data]# 
2.主从状态检查
[root@db3 data]# masterha_check_repl  --conf=/etc/mha/app1.cnf 
Mon Feb 24 12:38:03 2020 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Mon Feb 24 12:38:03 2020 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Mon Feb 24 12:38:03 2020 - [info] Reading server configuration from /etc/mha/app1.cnf..
Mon Feb 24 12:38:03 2020 - [info] MHA::MasterMonitor version 0.56.
Mon Feb 24 12:38:05 2020 - [info] GTID failover mode = 1
Mon Feb 24 12:38:05 2020 - [info] Dead Servers:
Mon Feb 24 12:38:05 2020 - [info] Alive Servers:
Mon Feb 24 12:38:05 2020 - [info]   192.168.253.132(192.168.253.132:3306)
Mon Feb 24 12:38:05 2020 - [info]   192.168.253.133(192.168.253.133:3306)
Mon Feb 24 12:38:05 2020 - [info]   192.168.253.134(192.168.253.134:3306)
Mon Feb 24 12:38:05 2020 - [info] Alive Slaves:
Mon Feb 24 12:38:05 2020 - [info]   192.168.253.133(192.168.253.133:3306)  Version=5.7.26-log (oldest major version between slaves) log-bin:enabled
Mon Feb 24 12:38:05 2020 - [info]     GTID ON
Mon Feb 24 12:38:05 2020 - [info]     Replicating from 192.168.253.132(192.168.253.132:3306)
Mon Feb 24 12:38:05 2020 - [info]   192.168.253.134(192.168.253.134:3306)  Version=5.7.26-log (oldest major version between slaves) log-bin:enabled
Mon Feb 24 12:38:05 2020 - [info]     GTID ON
Mon Feb 24 12:38:05 2020 - [info]     Replicating from 192.168.253.132(192.168.253.132:3306)
Mon Feb 24 12:38:05 2020 - [info] Current Alive Master: 192.168.253.132(192.168.253.132:3306)
Mon Feb 24 12:38:05 2020 - [info] Checking slave configurations..
Mon Feb 24 12:38:05 2020 - [info]  read_only=1 is not set on slave 192.168.253.133(192.168.253.133:3306).
Mon Feb 24 12:38:05 2020 - [info]  read_only=1 is not set on slave 192.168.253.134(192.168.253.134:3306).
Mon Feb 24 12:38:05 2020 - [info] Checking replication filtering settings..
Mon Feb 24 12:38:05 2020 - [info]  binlog_do_db= , binlog_ignore_db= 
Mon Feb 24 12:38:05 2020 - [info]  Replication filtering check ok.
Mon Feb 24 12:38:05 2020 - [info] GTID (with auto-pos) is supported. Skipping all SSH and Node package checking.
Mon Feb 24 12:38:05 2020 - [info] Checking SSH publickey authentication settings on the current master..
Mon Feb 24 12:38:05 2020 - [info] HealthCheck: SSH to 192.168.253.132 is reachable.
Mon Feb 24 12:38:05 2020 - [info] 
192.168.253.132(192.168.253.132:3306) (current master)
 +--192.168.253.133(192.168.253.133:3306)
 +--192.168.253.134(192.168.253.134:3306)

Mon Feb 24 12:38:05 2020 - [info] Checking replication health on 192.168.253.133..
Mon Feb 24 12:38:05 2020 - [info]  ok.
Mon Feb 24 12:38:05 2020 - [info] Checking replication health on 192.168.253.134..
Mon Feb 24 12:38:05 2020 - [info]  ok.
Mon Feb 24 12:38:05 2020 - [warning] master_ip_failover_script is not defined.
Mon Feb 24 12:38:05 2020 - [warning] shutdown_script is not defined.
Mon Feb 24 12:38:05 2020 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.
[root@db3 data]# 
3.开启MHA
[root@db3 data]# 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 &
[1] 10724
4.检查MHA状态
[root@db3 ]# masterha_check_status --conf=/etc/mha/app1.cnf
 app1 (pid:10724) is running(0:PING_OK), master:192.168.253.132
[root@db3 ]# 

5.MHA软件构成

Manager工具包主要包括以下几个工具:
  masterha_manger             # 启动MHA 
  masterha_check_ssh          # 检查MHA的SSH配置状况 
  masterha_check_repl         # 检查MySQL复制状况 
  masterha_master_monitor     # 检测master是否宕机 
  masterha_check_status       # 检测当前MHA运行状态 
  masterha_master_switch      # 控制故障转移(自动或者手动)
  masterha_conf_host          # 添加或删除配置的server信息

Node工具包主要包括以下几个工具:
  这些工具通常由MHA Manager的脚本触发,无需人为操作
  save_binary_logs            # 保存和复制master的二进制日志 
  apply_diff_relay_logs       # 识别差异的中继日志事件并将其差异的事件应用于其他的
  purge_relay_logs            # 清除中继日志(不会阻塞SQL线程)
扫描二维码关注公众号,回复: 9387207 查看本文章

6.MH高可用架构原理

站在开发的角度分析MHA应该具备的功能

pass

猜你喜欢

转载自www.cnblogs.com/p0st/p/12359819.html
今日推荐