zoukankan      html  css  js  c++  java
  • MHA基本搭建流程

    1. MHA环境搭建
    规划:
    主库: 51    node
    从库:
    52      node
    53      node    manager

    2. 准备环境(略。1主2从GTID)搭建主从关系,此为简略
    配置文件:
    [mysqld]
    basedir=/usr/local/mysql/
    datadir=/data/mysql/data
    socket=/tmp/mysql.sock
    server_id=51
    port=3306
    secure-file-priv=/tmp
    autocommit=0
    log_bin=/data/binlog/mysql-bin
    binlog_format=row
    gtid-mode=on
    enforce-gtid-consistency=true
    log-slave-updates=1
    [mysql]
    prompt=db01 [\d]>
    初始化:
    mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql  --datadir=/data/mysql/data
    授权:
    grant replication slave  on *.* to repl@'10.0.1.%' identified by '123';
    主从数据同步:
    若主从关系一起建立,则不需要备份主库数据到从库,否则应该将最近一次的备份数据恢复到从库,然后进行同步位置确定,位置可以从备份文件中得到,应从备份位置开始。然后同步位置,
    change master to
    master_host='10.0.1.51',
    master_user='repl',
    master_password='123' ,
    MASTER_AUTO_POSITION=1;

    3. 配置关键程序软连接
    ln -s /usr/local/mysql/bin/mysqlbinlog    /usr/bin/mysqlbinlog
    ln -s /usr/local/mysql/bin/mysql          /usr/bin/mysql

    4. 配置各节点互信(各节点之间必须互通,包括自己)
    db01:
    rm -rf /root/.ssh
    ssh-keygen
    cd /root/.ssh
    mv id_rsa.pub authorized_keys
    scp  -r  /root/.ssh  10.0.1.52:/root
    scp  -r  /root/.ssh  10.0.1.53:/root
    各节点验证
    db01:
    ssh 10.0.1.51 date
    ssh 10.0.1.52 date
    ssh 10.0.1.53 date
    db02:
    ssh 10.0.1.51 date
    ssh 10.0.1.52 date
    ssh 10.0.1.53 date
    db03:
    ssh 10.0.1.51 date
    ssh 10.0.1.52 date
    ssh 10.0.1.53 date

    5. 安装软件
    # 下载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

    # 在db01主库中创建mha需要的用户
     grant all privileges on *.* to mha@'10.0.1.%' identified by 'mha';
    # Manager软件安装(db03)
    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

    6. 配置文件准备(db03)
    # 创建配置文件目录
     mkdir -p /etc/mha
    # 创建日志目录
     mkdir -p /var/log/mha/app1
    # 编辑mha配置文件
    vim /etc/mha/app1.cnf
    [server default]
    manager_log=/var/log/mha/app1/manager        
    manager_workdir=/var/log/mha/app1            
    master_binlog_dir=/data/binlog       
    user=mha                                   
    password=mha                               
    ping_interval=2
    repl_password=123
    repl_user=repl
    ssh_user=root                               
    [server1]                                   
    hostname=10.0.1.51
    port=3306                                  
    [server2]            
    hostname=10.0.1.52
    port=3306
    [server3]
    hostname=10.0.1.53
    port=3306

    7. 状态检查
    # 互信检查
    masterha_check_ssh  --conf=/etc/mha/app1.cnf

    主从状态检查
    masterha_check_repl  --conf=/etc/mha/app1.cnf

    8. 开启MHA(db03):
    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 &

    9. 查看MHA状态
    masterha_check_status --conf=/etc/mha/app1.cnf
    mysql -umha -pmha -h 10.0.1.51 -e "show variables like 'server_id'"
    mysql -umha -pmha -h 10.0.1.52 -e "show variables like 'server_id'"
    mysql -umha -pmha -h 10.0.1.53 -e "show variables like 'server_id'"

    10. 故障模拟及处理
    ### 停主库db01:    
    /etc/init.d/mysqld stop
    观察manager  日志 tail -f /var/log/mha/app1/manager
    末尾必须显示successfully,才算正常切换成功。                            
    修复主库
    [root@db01 ~]# /etc/init.d/mysqld start
    恢复主从结构
    CHANGE MASTER TO
    MASTER_HOST='10.0.1.52',
    MASTER_PORT=3306,
    MASTER_AUTO_POSITION=1,
    MASTER_USER='repl',
    MASTER_PASSWORD='123';
    start slave ;
    修改MHA配置文件,增加新的从节点
    [server1]
    hostname=10.0.1.51
    port=3306
    启动MHA
    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 &
    查看MHA状态
    masterha_check_status --conf=/etc/mha/app1.cnf

    ###额外参数:
    11. MHA-VIP功能
    设置配置文件:
    master_ip_failover_script=/usr/local/bin/master_ip_failover   #路径为脚本路径,需要先将脚本cp到这个位置,master_ip_failover为脚本名,需要有执行权限,注意脚本文件存在window字符,需要用dos2unix转换一下
    修改脚本:
    vi /usr/local/bin/master_ip_failover
    my $vip = '10.0.1.55/24';
    my $key = '1';
    my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
    my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
    手工在主库上绑定上面的虚拟ip地址:
    ifconfig eth0:1 10.0.1.55/24

    12. 重启MHA
    masterha_stop --conf=/etc/mha/app1.cnf
    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 &

    13. 设置邮件提醒
    设置配置文件:
    report_script=/usr/local/bin/send    #路径为邮件脚本所在位置,设置之前需要将脚本拷贝到这个位置,并授予执行权限send为脚本文件名
    配置邮件发送脚本,或用自己编写的发送脚本

    14. 重启MHA
    masterha_stop --conf=/etc/mha/app1.cnf
    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 &

    15. 设置二次补偿的binlog文件
    #设置配置文件
    vim /etc/mha/app1.cnf
    [binlog1]
    no_master=1
    hostname=10.0.1.53
    master_binlog_dir=/data/mysql/binlog
    #创建目录并授权
    mkdir -p /data/mysql/binlog
    chown -R mysql.mysql /data/*
    #拉取主库binlog日志
    cd /data/mysql/binlog     ----->必须进入到自己创建好的目录
    mysqlbinlog  -R --host=10.0.1.51 --user=mha --password=mha --raw  --stop-never mysql-bin.000001 &
    注意:
    拉取日志的起点,需要按照目前主库正在使用的那个为准.

    16. 重启MHA
    masterha_stop --conf=/etc/mha/app1.cnf
    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 &

    17. 测试
    关闭主库,观察情况
    tail -f /var/log/mha/app1/manager    #观察MHA日志情况
    查看VIP地址是否漂移到从库
    查看MHA配置文件是否已经删除了损坏节点
    查看从库是否已经晋升为主库
    查看另一个从库的连接信息
    查看MHA是否已经停止工作

    18. 恢复处理
      (1. 修故障库,并恢复1主2从
    找一台可正常使用的服务器,搭建好基础数据库环境
    利用备份数据,恢复数据到数据库。
    从备份数据文件的位置,同步到主库
    建立主从关系
      (2. 修复配置文件
    将新的从库添加到MHA配置文件
      (3. 修复binlogserver
    将原有日志文件删除,从先配置第15步操作
      (4. 检查ssh和主从
    检查MHA,ssh和主从状态,命令见上
      (5. 启动MHA
    命令见上
      (6.查看当前MHA状态

  • 相关阅读:
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结v2
    JS设置cookie、读取cookie、删除cookie
    Atitit 图像处理30大经典算法attilax总结
    Atitit数据库层次架构表与知识点 attilax 总结
    Atitit 游戏的通常流程 attilax 总结 基于cocos2d api
    Atitti css transition Animation differ区别
    Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结
    Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式
    Atitit 混合叠加俩张图片的处理 图像处理解决方案 javafx blend
    Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
  • 原文地址:https://www.cnblogs.com/hrers/p/11723072.html
Copyright © 2011-2022 走看看