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状态

  • 相关阅读:
    React Children 使用
    Redux 中间件和异步操作
    Redux 核心概念
    React 的setState 异步理解
    JS 中类型和类型转换
    ES6 新增集合----- Set 和Map
    ES6 新增基本数据类型Symbol
    ES6 解构赋值
    ES6 对象增强
    ES6 中的let 和 const
  • 原文地址:https://www.cnblogs.com/hrers/p/11723072.html
Copyright © 2011-2022 走看看