mysql MHA

Posted h0001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql MHA相关的知识,希望对你有一定的参考价值。

MHA【Master High Availabilty】目前在Mysql高可用方面是是一个相对程数的解决方案,是一套优秀的作为Mysql高可用性环境下故障切换和主从提升的高可用软件。在Mysql故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

MHA是由日本DeNA公司youshimaton(现就职于Facebook公司)开发。

mysql的一致性:一致性是指数据处于一种语义上的有意义且正确的状态。一致性是对数据可见性的约束,保证在一个事务中多次操作的数据中间对其他事务不可见的。因为这些中见状态,是一个过度状态,与事务的开始状态和事务的结束状态时不一致的。

 

 

 

进行实例:【准备三台centos7,至少需要三台】

 

1.  在三台centos7上面执行时间同步

 

              

 

 

              [root@ localhost ~]# echo "*/s * * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1" >>/var/spool/cron/root

 

2.  更改主机名三台都要执行,更改之后断开xshell重新连一下就好了

              hostname直接更改是临时的使用hostctl来进行更改是永久的

              

                

 

 

3.  进行hosts解析(三台都要执行)

          

 

          cat >> /etc/hosts<<EOF
           > c701 10.0.0.42
           > c702 10.0.0.47
           > c703 10.0.0.46
             EOF

4.  关闭防火和SElinux(三台都要执行)

          

 

 

            [root@ c72 ~]# sed -i \'/^SELINUX/s#enforceing#disabled#g\' /etc/selinux/config

 

5.  互相配置ssh免密登录【ip写的是自己的,三台虚拟机都要进行执行】,ssh进行连接测试一下看是否可以

              

              yum -y install sshpass

 

              vim  ssh.sh

              

 

 

6.  安装mysql,每一台都要执行

           

 

            

 

            

 

             

 

 

             

 

            wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

              rpm -ivh mysql-community-release-el7-5.noarch.rpm

            yum -y install mysql

            yum install mysql-server -y

 

7.  安装完毕之后开启MySQL并更改密码

            

 

            

 

 

              mysql> update mysql.user set password=password(\'123456\') where user=\'root\' and host=\'localhost\';

              mysql> flush privileges;

8.  MySQL主从从配置,编辑mysql配置文件/etc/my.cnf(在c71)

            

 

 

              

 

            

 

 

 

 

 

9.  进入MySQL命令行,执行同步,并查看master日志(在c72)

            

 

 

              

 

 

           在从的这台centos7的系统上:

                

 

 

                  

 

                

 

 

          在从的centos7的系统上(在c73):执行c72同样的步骤

 

 

10.  三台centos7系统上都安装好    “mha4mysql-node-0.58-0.el7.centos.noarch.rpm”,在安装这个之前一定要安好依赖

            yum install perl-DBD-MySQL -y

            yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes

            

 

 

11.  在c73这个slave上安装 “mha4mysql-manager-0.58-0.el7.centos.noarch.rpm”(安装这个是为了防止master不随便跳机)

            rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

            

 

12.  创建mha目录,编辑配置文件【vim /etc/mha/app1.cnf】在配置文件中加上一下的代码

     mkdir -p /etc/mha

        mkdir -p /var/log/mha/app1

     

[server default]
manager_log=/var/log/mha/app1/manager.log
manager_workdir=/var/log/mha/app1
master_binlog_dir=/var/lib/mysql
password=mha
ping_interval=2
repl_password=123456
repl_user=rep
ssh_user=root
user=mha

[server1]
hostname=10.0.0.42
port=3306

[serve2]
hostname=10.0.0.47
port=3306

[server3]
hostname=10.0.0.46
ignore_fail=1
no_master=1
port=3306

 

 

13.  进行检测

 

masterha_check_repl --conf=/etc/mha/app1.cnf  
masterha_check_ssh --conf=/etc/mha/app1.cnf

 

 

如果你出现这种状况,请在MySQL的配置文件中加上:skip-name-resolve(表示跳过本机域名),然后在进行测试 “masterha_check_repl --conf=/etc/mha/app1.cnf”,一定是“is ok”才算成功

 

14.   进行开启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 &
ps -ef | grep mha
masterha_check_status --conf=/etc/mha/app1.cnf

 

 

 

 

15.

 

16.

 

      17.

 

      18.

 

      19.

 

      20.

 

masterha_check_repl --conf=/etc/mha/app1.cnf  masterha_check_ssh --conf=/etc/mha/app1.cnf

以上是关于mysql MHA的主要内容,如果未能解决你的问题,请参考以下文章

MySQL-高可用架构MHA

MySQL-高可用架构MHA

MySQL的MHA

MySQL高可用之MHA—MHA介绍

Mysql 高可用集群 ------ MHA

边看MHA源码边学Perl语言之三 NodeUtil.pm