MYSQL + MHA +keepalive + VIP安装配置(二)--MHA的配置

一、总概

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线程)。

二、主机部署

manager机:192.168.1.201  manager安装:mha4mysql-manager-0.54-0.el6.noarch.rpm

master机:192.168.1.231   节点安装: mha4mysql-node-0.54-0.el6.noarch.rpm

slave1机:192.168.1.232(备用master) 节点安装:mha4mysql-node-0.54-0.el6.noarch.rpm

三、首先用ssh-keygen实现三台主机之间相互免密钥登录

[manager--201]

1、生成证书

shell> ssh-keygen -t rsa -b 2048  //一直按回车直接生成。

shell> scp id_rsa.pub [email protected]:/root/.ssh/  //复现到主机231

shell> scp id_rsa.pub [email protected]:/root/.ssh/  //复现到主机232

2.在主机231、232中/root/.ssh/下 执行

cat id_rsa.pub >> authorized_keys

//导入公钥到/root/.ssh/authorized_keys文件中

3.测试201无密登录到231、232

ssh 192.168.1.231

ssh 192.168.1.232

[node--231、232]

重复执行上面的步骤。

通过ssh测试任何两台主机间两两可以无密登录。

注意:如果不能实现任何两台主机间两两可以无密登录,后面的步骤会有问题。

四、安装MHAmha4mysql-node,mha4mysql-manager 软件包

1、manager mha4mysql-manager软件安装

[manager--201]

shell> yum install perl

shell> yum install cpan

shell> rpm -ivh mha4mysql-manager-0.53-0.el6.noarch.rpm

error:

perl(Config::Tiny) is needed by mha4mysql-manager-0.53-0.noarch

perl(Log::Dispatch) is needed by mha4mysql-manager-0.53-0.noarch

perl(Log::Dispatch::File) is needed by mha4mysql-manager-0.53-0.noarch

perl(Log::Dispatch::Screen) is needed by mha4mysql-manager-0.53-0.noarch

perl(Parallel::ForkManager) is needed by mha4mysql-manager-0.53-0.noarch

perl(Time::HiRes) is needed by mha4mysql-manager-0.53-0.noarch

说明有很多依赖包没有安装,解决方法:

shell> wget ftp://ftp.muug.mb.ca/mirror/cent ... 8-41.el5.x86_64.rpm

shell> wget ftp://ftp.muug.mb.ca/mirror/cent ... 9-15.el6.x86_64.rpm

shell> wget http://downloads.naulinux.ru/pub ... 27-1.el6.noarch.rpm

shell> wget http://dl.fedoraproject.org/pub/ ... .9-1.el6.noarch.rpm

shell> wget http://dl.fedoraproject.org/pub/ ... 16-3.el6.noarch.rpm

shell> wget http://dl.fedoraproject.org/pub/ ... 9-12.el6.noarch.rpm

shell> wget http://mirror.centos.org/centos/ ... -136.el6.x86_64.rpm

shell> rpm -ivh perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm perl-Log-Dispatch-2.27-1.el6.noarch.rpm perl-Mail-Sender-0.8.16-3.el6.noarch.rpm perl-Mail-Sendmail-0.79-12.el6.noarch.rpm perl-Time-HiRes-1.9721-136.el6.x86_64.rpm

再安装

shell> rpm -ivh mha4mysql-manager-0.53-0.el6.noarch.rpm

2、node MHAmha4mysql-node软件安装

shell>wget http://mirror.centos.org/centos/ ... 13-3.el6.x86_64.rpm

shell>rpm -ivh perl-DBD-MySQL-4.013-3.el6.x86_64.rpm

shell>wget http://mysql-master-ha.googlecod ... 54-0.el6.noarch.rpm

shell>rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm

安装过程可能会报错(具体错误我没有记下)都是依赖包的问题,这么解决吧

shell>yum install perl-MIME-Lite

yum install perl-Params-Validate

五、MHA的配置

1、管理机manager上配置MHA文件

shell> mkdir -p /masterha/app1    //创建目录

shell> mkdir /etc/masterha        //创建目录

shell> vi /etc/masterha/app1.cnf  //创建配置文件

[server default]

user=root                //linux用于管理mysql用戶名

password=sunney          //linux用于管理mysql密码

manager_workdir=/masterha/app1

manager_log=/masterha/app1/manager.log

remote_workdir=/masterha/app1

ssh_user=root            //ssh免密钥登录的帐号名

repl_user=sunney         //mysql复制帐号,用来在主从机之间同步二进制日志等

repl_password=sunney     //mysql密码

ping_interval=1          //ping间隔,用来检测master是否正常

[server1]

hostname=192.168.1.231

#ssh_port=9999

master_binlog_dir=/var/lib/mysql //mysql数据库目录不同的安装方式目录不一样

candidate_master=1               //master机宕掉后,优先启用这台作为新master

[server2]

hostname=192.168.1.232

#ssh_port=9999

master_binlog_dir=/var/lib/mysql

candidate_master=1

2、masterha_check_ssh工具验证ssh信任登录是否成功

[manager:201]

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

注意:用ssh-keygen实现三台主机之间相互免密钥登录决定这一步是否成功。

Wed Apr  23 22:10:01 2014 - [debug]   ok.

Wed Apr  23 22:10:01 2014 - [info] All SSH connection tests passed successfully.

成功!

3、masterha_check_repl工具验证mysql复制是否成功

[manager:201]

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

注意:上一篇文章中的master--slaver是否成功决定这一步是否成功。或是MHA文件配置的用户账号有关。

Wed Apr 23 22:10:56 2014 - [info] Checking replication health on 192.168.1.232..

Wed Apr 23 22:10:56 2014 - [info]  ok.

Wed Apr 23 22:10:56 2014 - [warning] master_ip_failover_script is not defined.

Wed Apr 23 22:10:56 2014 - [warning] shutdown_script is not defined.

Wed Apr 23 22:10:56 2014 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

成功。

4、启动MHA manager,并监控日志文件

[manager:201]

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

shell> tail -f /masterha/app1/manager.log  //这名最好在新窗口执行

结果:

Thu Apr 24 04:41:03 2014 - [info] Slaves settings check done.

Thu Apr 24 04:41:03 2014 - [info]

192.168.1.231 (current master)

+--192.168.1.232

Thu Apr 24 04:41:03 2014 - [warning] master_ip_failover_script is not defined.

Thu Apr 24 04:41:03 2014 - [warning] shutdown_script is not defined.

Thu Apr 24 04:41:03 2014 - [info] Set master ping interval 1 seconds.

Thu Apr 24 04:41:03 2014 - [warning] secondary_check_script is not defined. It is highly recommended setting it to check master reachability from two or more routes.

Thu Apr 24 04:41:03 2014 - [info] Starting ping health check on 192.168.1.231(192.168.1.231:3306)..

Thu Apr 24 04:41:03 2014 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn‘t respond..

5、测试master(231)宕机后,是否会自动切换

[master--231]

shell>service mysql stop

[manager--201]

shell>tail -f tail -f /masterha/app1/manager.log

-----日志显示如下------

-------- Failover Report -----

app1: MySQL Master failover 192.168.1.231 to 192.168.1.232 succeeded

Master 192.168.1.231 is down!

Check MHA Manager logs at localhost.localdomain:/masterha/app1/manager.log for details.

Started automated(non-interactive) failover.

The latest slave 192.168.1.232(192.168.1.232:3306) has all relay logs for recovery.

Selected 192.168.1.232 as a new master.

192.168.1.232: OK: Applying all logs succeeded.

Generating relay diff files from the latest slave succeeded.

192.168.1.232: Resetting slave info succeeded.

Master failover to 192.168.1.232(192.168.1.232:3306) completed successfully.

6、故障转移后,用命令恢复原来的master

(1)、在旧master上执行

1.在旧master上执行

shell>service mysql start //数据库启动

shell>mysql -usunney -psunney

mysql> reset master;

mysql> change master to master_host=‘192.168.1.232‘, master_port=3306, master_user=‘sunney‘, master_password=‘sunney‘, master_log_file=‘mysql-bin.000031‘, master_log_pos=112;

mysql> start slave;      #暂时先把旧master变为slave

(2)然后在manager节点上:

shell> masterha_master_switch --master_state=alive --conf=/etc/masterha/app1.cnf

过程中一直输入YES;

这样的话mysql主从机进行了切换。可以测试一下数据在新的master(232)的表中新增数据后,在新slave(231)对应的表中是否已实现数据同步。

六、MHA已完成配置并进行了测试。但如果是程序连接数据库并不会自动切换IP,那我们如何实现呢,请期待一篇keepalive + VIP安装配置。

时间: 2024-10-06 00:16:38

MYSQL + MHA +keepalive + VIP安装配置(二)--MHA的配置的相关文章

MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置

一.概述 keepalived介绍:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人 工做的只是修复故障的web服务器. 二.环境 ? 1 2 3 vip:192.168.1.203\204 mysql-master:192.168.1.231 mysql-

MYSQL + MHA +keepalive + VIP安装配置(一)--MYSQL安装配置

一.总概: 本文介绍了MySQL高可用性的实现方案MHA,MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,不管是MySQL主服务器,还是MySQL从服务器,都要安装Node.主从安装keepalived ,实现虚拟ip漂移,程序不用改IP自动切换. 二.环境 1.操作系统:centos 6.5 64位 2.数据库:   MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar 下载 3.MHA版本:mha4mysql-node-0.54-0.

centos下mysql源码编译安装和主备异步配置

安装机器:10.11.1.193.10.11.1.194 主备同步方式:异步同步 mysql版本:mysql community5.6.28 下载源码并解压: tar -zxf mysql-5.6.28.tar.gz cmake安装: 安装编译所需环境: sudo yum install make gcc-c++ cmake bison-develncurses-devel libaio libaio-devel net-tools perl 编译安装mysql cmake-DCMAKE_INS

centos6.6 Kickstart无人值守安装(二):配置篇 A

环境说明: Kickstart服务器系统:server-centos 6.6 final iP地址:172.100.11.231 子网掩码:255.255.255.0 网关:172.100.11.1 需要安装部署的Linux系统:CentOS 6.6 配置前奏: 一.关闭SELINUX vi /etc/selinux/config SELINUX=disable :wq! #以上步骤是为了让selinux重启后禁用 setenforce 0 #使配置立即生效,本次,及时. 二.service i

window平台上的mysql(5.6.24)安装和navicat(10.0.11)安装

准备: 1.window电脑,我的是64位的 2.mysql的压缩包mysql-5.6.24-winx64.zip 3.navicat的压缩包,我的版本是10.0.11 mysql的安装 1.解压,把解压过后的文件夹放到你想放置的任何一个地方,我这里放在F盘,是:F:\mysql-5.6.24-winx64,注意,点击里面的mysql.exe是不能安装的: 2.配置环境变量,首先在系统变量中新建一个“MYSQL_HOME”的变量,值是我们上面的地址“F:\mysql-5.6.24-winx64”

MySQL高可用MHA部署 (一主二从)

MHA介绍: MHA是一套MySQL故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性.MHA部署简单,也需要额外的服务器开销,运行MHA时对数据服务器性能几乎没有影响,也不需要对现有架构做调整. 同时MHA还支持主库在线切换,能够安全地将现在的主库切到新的主库,只会对写操作有0.5~2s的阻塞,对读没有影响. MHA有以下功能,对有高可用,数据一致性,主库不停机维

MHA 多VIP 多MySQL实例的支持

MHA 多VIP 多MySQL实例的支持 首先看power_manager 脚本 MHA Manager如果能够SSH到Master主机,会调用stopssh方法,stopssh方法根据master_pid_file来远程kill MySQL实例的进程,不管是 kill 成功还是失败,最后都要返回10, 至于kill掉所有mysql instance的代码直接去掉. MHA Manager如果不能够SSH到Master主机,会调用stop方法,由于是MySQL多实例,stop方法就一定不能 sh

源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护

前    言 摘   要 MHA 是当 master 出现故障,挑选一个 slave 作为新的 master 并构建成新的 主从架构的管理工具.从 master 出现故障到构建成新的主从架构时间是 10-30 秒.在 master 出现故障时可能会出现 slave 同步的数据不一致的现象,此工具 可以自动应用差异的中继日志到其他 slave 上保证数据的一致性. 一.Mha 优点 1.M aster crash 时可以快速的进行故障切换. 9-12 秒内可以检测到 master 故障, 7-10

mysql 5.7.14 安装配置方法图文教程(转)

http://www.jb51.net/article/90259.htm ******************************** 因笔者个人需要需要在本机安装Mysql,先将安装过程记录如下,希望对他人有所参考. 一.下载软件 1. 进入mysql官网,登陆自己的oracle账号,下载Mysql-5.7.14,下载地址:http://dev.mysql.com/downloads/mysql/ 2.将下载好的文件解压到指定目录,笔者解压在C:\software\Mysql\mysql