zoukankan      html  css  js  c++  java
  • MySQL MHA安装与配置

    MySQL的MHA架构+中间件keepalive,是互联网云架构的主流架构,实现系统高可用,但是MySQL的切换因为,Binlog的延迟问题,不建议字段切换,最好确认完全无延迟再切换,否则自动切换造成的错误数据与手动切换造成的业务中断之间的权衡,就需要仁者见仁智者见智了。

    1、MHA介绍

          MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步).
          MHA有两部分组成:MHA Manager(管理节点)和MHA Node(数据节点).
          MHA Manager可以单独部署在一台独立机器上管理多个master-slave集群,也可以部署在一台slave上.MHA Manager探测集群的node节点,当发现master出现故障的时候,它可以自动将具有最新数据的slave提升为新的master,然后将所有其 它的slave导向新的master上.整个故障转移过程对应用程序是透明的。
          MHA node运行在每台MySQL服务器上(master/slave/manager),它通过监控具备解析和清理logs功能的脚本来加快故障转移的。

    2、MHA工作原理

    -从宕机崩溃的master保存二进制日志事件(binlog events)。
    -识别含有最新更新的slave。
    -应用差异的中继日志(relay log)到其它slave。
    -应用从master保存的二进制日志事件(binlog events)。
    -提升一个slave为新master。
    -使其它的slave连接新的master进行复制。

    3、MHA工具包:

    (1)、 Manager工具:
    - masterha_check_ssh : 检查MHA的SSH配置。
    - masterha_check_repl : 检查MySQL复制。
    - masterha_manager : 启动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线程)。

    下面是MySQL MHA安装与配置

    MySQL MHA配置
         MySQL环境:
         master:192.168.202.129:3306
         slave:192.168.202.129:3307,192.168.202.129:3307,192.168.202.130:3306,192.168.202.130:3307,192.168.202.130:3308
         MariaDB-10.0.13
         MHA环境:
         manager:192.168.202.129
         node:192.168.202.130(3306端口监听的实例作为备用主库),192.168.202.129
         下载地址:http://code.google.com/p/mysql-master-ha/ (这个需要FQ)

    环境准备

    一主两从MySQL环境


    MHA配置

    1 依赖安装:

    在node节点上,执行下面的命令:

    # yum install perl-DBD-MySQL

    在manager节点上:

    # yum install perl-DBD-MySQL
    # yum install perl-Config-Tiny
    # yum install perl-Log-Dispatch
    # yum install perl-Parallel-ForkManager
    # yum install -y rrdtool perl-rrdtool rrdtool-devel perl-Params-Validate

    2 rpm包安装:
    manager节点:

    # rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
    # rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

    node节点:

    # rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

    3 配置

    mkdir -p /etc/masterha/
    mkdir -p /var/log/masterha/app1/

    将下面的内容写进/etc/masterha/app1.cnf:

    cat <<EOF>> /etc/masterha/app1.cnf
    [server default]
    manager_workdir=/var/log/masterha/app1
    manager_log=/var/log/masterha/app1/manager.log
    user=admin
    password=admin
    ssh_user=root
    repl_user=repl
    repl_password=repl
    ping_interval=1
    shutdown_script=""
    master_ip_online_change_script=""
    report_script=""
    [server1]
    hostname=192.168.126.129
    port=3306
    candidate_master=1
    master_binlog_dir="/home/mysql/mydata/data1/binlog"
    [server2]
    hostname=192.168.126.130
    port=3306
    candidate_master=1
    master_binlog_dir="/home/mysql/mydata/data1/binlog"
    [server3]
    hostname=192.168.126.130
    port=3307
    [server4]
    hostname=192.168.126.130
    port=3308
    [server5]
    hostname=192.168.126.129
    port=3307
    [server6]
    hostname=192.168.126.129
    port=3308
    EOF
    
    cat /etc/masterha/app1.cnf


    4 配置ssh免秘钥:

    # ssh-keygen -t rsa
    # cd ~/.ssh
    # cat id_rsa.pub >> authorized_keys
    # chmod 600 authorized_keys

    将id_rsa.pub的内容粘贴到另一台服务器的~/.ssh/authorized_keys里(保证两个机器互相信任)。
    5 测试一下ssh: 

    masterha_check_ssh --conf=/etc/masterha/app1.cnf

    6 测试一下复制:

    masterha_check_repl --conf=/etc/masterha/app1.cnf 

    7 开启masterha_manager

    # nohup masterha_manager --conf=/etc/masterha/app1.cnf > /tmp/mha_manager.log 2>&1 &

    看一下状态:

    # masterha_check_status --conf=/etc/masterha/app1.cnf 
    Priestess©版权所有,禁止转载
  • 相关阅读:
    windows脚本设置网络IP地址
    土豆片
    删除iCloud手机备份
    Django——auth用户认证
    分布式文件存储——GlusterFS
    DAS、NAS、SAN
    高可用——数据
    高可用——可用性的度量
    Django——中间件
    高可用——网站架构
  • 原文地址:https://www.cnblogs.com/priestess-zhao/p/8267918.html
Copyright © 2011-2022 走看看