zoukankan      html  css  js  c++  java
  • MHA学习笔记

    MHA是一款开源的MySQL高可用程序,为MySQL主从复制架构提供了节点故障转移功能,当

    master发生故障时MHA会自动提升拥有最新数据的slave节点成为新的主节点,还提供了master节

    点的在线切换功能,即按需切换master/slave节点

    Manager会时刻监视主节点,并把主节点的二进制日志保存在本地一份,一旦主节点宕机了,它会找一台拥有最新数据的slave节点,

    并通过本地的二进制日志副本,将此slave节点还原到宕机前的一刻,如何找到拥有最新数据的slave节点是通过部署在每台MySQL上

    的MHA node实现的(具体实现过程是通过MHA node自带的4个脚本)

    MHA是建立在主从架构之上的,因此主从架构得事先配置好,当主节点宕机,任何一个从节点都有可能提升为主节点,因此每个从节点

    都得开启二进制日志,而以前的主节点从新上线时,会成为新的从节点,所以在主节点之上也得配置中继日志

    下载地址:

    http://www.mysql.gr.jp/frame/modules/bwiki/index.php?plugin=attach&pcmd=open&file=mha4mysql-manager-0.56-0.el6.noarch.rpm&refer=matsunobu

    wget http://www.mysql.gr.jp/frame/modules/bwiki/index.php?plugin=attach&pcmd=open&file=mha4mysql-node-0.56-0.el6.noarch.rpm&refer=matsunobu

    一共使用4台虚拟机做测试,一台manager(192.168.238.223),一台主(192.168.238.224 ),两台从(192.168.238.225-

    226),主从架构配置上篇博文有介绍这里就不说了,建议在每台mariadb的配置文件中设置skip_name_resolve=ON (禁用DNS主机名查)

    不过在两台从节点的配置文件中必须添加relay_log_purge=0(将中继日志重放完成自动删除中继日志的功能关闭),这是因

    manager要根据中继日志判断从节点的复制进度,从而在主节点宕机时提升拥有最新数据的从节点为主节点

     以下操作在centos6上完成

    1.在主节点授权一个用户,使manager能使用该用户在各主机上进行必要的管理操作:

     grant all on *.* to 'mha'@'192.168.%.%' identified by 'mhapass';

     flush privileges;

    2.在MHA的架构中每个节点都必须要能同过ssh协议的密钥方式通信(即基于ssh协议通信无需手动输入密码)

      (1)为了方便在某个主机上生成一对ssh密钥,将该对密钥通过scp命令放置在各节点的相应目录下

         ssh-keygen -t rsa -P '' (-t 指使用rsa加密方式生成密钥对,-P ‘’ 指不对生成的私钥文件加密)

         如果此命令是root用户运行的,则私钥默认保存在/root/.ssh/id_rsa文件中,公钥保存在/root/.ssh/id_rsa.pub文件中

      (2)所有节点都是用相同的公钥和私钥,将公钥都追加到/root/.ssh/authorized_keys文件中

         cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

       (3) 将id_rsa,id_rsa.pub文件和authorized_keys文件都复制到其他节点的对应目录下

         例: scp -p .ssh/authorized_keys .ssh/id_rsa 192.168.238.225:/root/.ssh/

        为了安全建议将authorized_keys文件权限改为600权限,使用scp命令复制时使用-p选项来保留文件权限

    接下来在各节点安装好从上面地址下载下来的rpm包,manager只安装在一台单独的服务器上,安装manager,要先配置好epel源

    而且要先安装node包(上面下载的包在centos7上也可用)

    定义application配置文件:mkdir /etc/mha  vim /etc/mha/cluster1.cnf

    [server default]
    user=mha    

    password=mhapass

    manager_workdir=/data/masterha/app1       (manager工作目录,这个目录要事先创建)

    manager_log=/data/mastermha/app1/manager.log      (manager 日志)

    remote_workdir=/data/mastermha/app1      (manager 远程工作目录)

    master_binlog_dir=/mydata/data     (指定主节点上二进制日志放置的目录)

    ssh_user=root    

    repl_user=repl

    repl_password=replpass

    ping_interval=1      (对主节点的检测时间间隔使用 ping)

    [server1]
    hostname=192.168.238.224

    [server2]
    hostname=192.168.238.225

    candidate_master=1(如果主节点宕机,此节点会被提升为主节点即使此节点的不拥有最新数据,建议此节点与主节点配置半同步模式)

    [server3]
    hostname=192.168.238.226

    使用masterha_check_ssh --conf=/etc/mha/cluster1.cnf检测各节点间ssh通信是否ok

    最后看到All SSH connection tests passed successfully.表示成功

    使用masterha_check_repl --conf=/etc/mha/cluster1.cnf检测主从复制是否ok

    最后看到MySQL Replication Health is OK.表示成功

    启动MHA: masterha_manager --conf=/etc/mha/cluster1.cnf  (在前台启动测试的目的用)

    关掉主节点,查看指定的从节点是否被提升为主节点

    检测MHA状态命令masterha_check_status --conf=/etc/mha/cluster1.cnf

    停止MHA:masterha_stop --conf=/etc/mha/cluster1.cnf

    启动MHA:nohup masterha_manager --conf=/etc/mha/cluster1.cnf > /data/masterha/app1/manager.log 2>&1 &

     nohup 表示与当前终端剥离,关闭当前终端MHA依然运行

    MHA manager发现主节点宕机时会提升一个从节点为主,但自己也会自动下线,必须手动从新启动MHA,手动启动的过程要通过从节

    点的数据备份和从新导入到新的从节点等就绪工作才能从新启动MHA

    当从节点提升为主时,manager会自动关闭从节点read_only

    问题:当主节点切换,ip地址也会跟着切换,前端的正在进行的写操作将无法进行,如何做到ip地址不会跟着转换

  • 相关阅读:
    keys命令的缺点
    redis与memcache的区别
    sql与nosql如何选择?
    MongoDB与MySql的区别
    linux环境搭建系列之memcached安装步骤
    linux环境搭建系列之tomcat安装步骤
    linux环境搭建系列之Apache ant安装步骤
    linux环境搭建系列之jdk安装
    虚拟机安装教程(linux、centOS)
    memcached解压报错gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now的解决方法
  • 原文地址:https://www.cnblogs.com/linuxboke/p/5443875.html
Copyright © 2011-2022 走看看