MySQL之MHA+keepalived方案演示(二)

一、配置MHA工作环境

192.168.2.130机器操作:
1.1.创建MHA的工作目录,并且创建相关配置文件
(在软件包解压后的目录里面有样例配置文件)。指的是可以下载 mha4mysql-manager-0.56.tar.gz解压后找到样例配置文件

[[email protected] ~]# ifconfig eth1|awk -F ‘[ :]+‘ ‘NR==2{print $4}‘
192.168.2.130
[[email protected] ~]# ll /usr/bin/masterha*
-rwxr-xr-x 1 root root 1995 Apr  1  2014 /usr/bin/masterha_check_repl
-rwxr-xr-x 1 root root 1779 Apr  1  2014 /usr/bin/masterha_check_ssh
-rwxr-xr-x 1 root root 1865 Apr  1  2014 /usr/bin/masterha_check_status
-rwxr-xr-x 1 root root 3201 Apr  1  2014 /usr/bin/masterha_conf_host
-rwxr-xr-x 1 root root 2517 Apr  1  2014 /usr/bin/masterha_manager
-rwxr-xr-x 1 root root 2165 Apr  1  2014 /usr/bin/masterha_master_monitor
-rwxr-xr-x 1 root root 2373 Apr  1  2014 /usr/bin/masterha_master_switch
-rwxr-xr-x 1 root root 5171 Apr  1  2014 /usr/bin/masterha_secondary_check
-rwxr-xr-x 1 root root 1739 Apr  1  2014 /usr/bin/masterha_stop

[[email protected] ~]# cp -arp /usr/bin/masterha_* /usr/local/bin/

[[email protected] bin]# cd /usr/bin/
[[email protected] bin]# find ./ -name apply_diff_relay_logs
./apply_diff_relay_logs
[[email protected] bin]# find ./ -name filter_mysqlbinlog
./filter_mysqlbinlog
[[email protected] bin]# find ./ -name purge_relay_logs
./purge_relay_logs
[[email protected] bin]# find ./ -name save_binary_logs
./save_binary_logs

cp /usr/bin/save_binary_logs /usr/local/bin/
cp /usr/bin/purge_relay_logs /usr/local/bin/
cp /usr/bin/filter_mysqlbinlog /usr/local/bin/
cp /usr/bin/apply_diff_relay_logs /usr/local/bin/

ln -s /usr/local/mysql/bin/mysql  /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysqlbinlog  /usr/bin/mysqlbinlog 
[[email protected] bin]# cd /usr/local/bin/
You have new mail in /var/spool/mail/root
[[email protected] bin]# ls
apply_diff_relay_logs  filter_mysqlbinlog  masterha_check_ssh  masterha_conf_host  masterha_master_monitor  masterha_secondary_check  save_binary_logs
masterha_check_repl  masterha_check_status  masterha_manager masterha_master_switch   masterha_stop    purge_relay_logs

MHA配置文件如下

[[email protected] ~]#  mkdir -p /etc/masterha
[[email protected] ~]# cat  /etc/masterha/app1.cnf
[server default]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1.log
master_binlog_dir=/data/mysql/logs/bin-log
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_online_change
password=123456
ping_interval=1
remote_workdir=/tmp
repl_password=123456
repl_user=repmha
report_script=/usr/local/bin/send_report
secondary_check_script=/usr/local/bin/masterha_secondary_check -s server03 -s server02 --user=root --master_host=server02 --master_ip=192.168.2.128 --master_port=3306
shutdown_script=""
ssh_port=12570
ssh_user=root
user=monitor

[server1]
hostname=192.168.2.128
port=3306

[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.2.129
port=3306

[server3]
hostname=192.168.2.130
port=3306

1.2配置文件参数介绍:

[[email protected] ~]# cat /etc/masterha/app1.cnf

[server default]
manager_workdir=/var/log/masterha/app1.log                           //设置manager的工作目录
manager_log=/var/log/masterha/app1/manager.log                  //设置manager的日志
master_binlog_dir=/data/mysql                                                   //设置master 保存binlog的位置,以便MHA可以找到master的日志,我这里的也就是mysql的数据目录
#master_ip_failover_script= /usr/local/bin/master_ip_failover //设置自动failover时候的切换脚本
master_ip_online_change_script= /usr/local/bin/master_ip_online_change  //设置手动切换时候的切换脚本
password=123456                                                                        //设置mysql中root用户的密码,这个密码是前文中创建监控用户的那个密码
user=root                                                                                       //设置监控用户root
ping_interval=1                                                                            //设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行railover
remote_workdir=/tmp                                                                 //设置远端mysql在发生切换时binlog的保存位置
repl_password=123456                                                            //设置复制用户的密码
repl_user=repl                                                                           //设置复制环境中的复制用户名
report_script=/usr/local/bin/send_report                               //设置发生切换后发送的报警的脚本
secondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02 --user=root --master_host=server02 --master_ip=192.168.2.128 --master_port=3306                               

                                                                                                //一旦MHA到server02的监控之间出现问题,MHA Manager将会尝试从server03登录到server02
shutdown_script=""                                                              //设置故障发生后关闭故障主机脚本(该脚本的主要作用是关闭主机放在发生脑裂,这里没有使用)
ssh_user=root                                                                      //设置ssh的登录用户名
ssh_port=12570                                                                  //设置ssh的登录端口。默认是22
[server1]
hostname=192.168.2.128
port=3306

[server2]
hostname=192.168.2.129
port=3306
candidate_master=1
                                                                                            //设置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个主库不是集群中事件最新的slave
check_repl_delay=0                                                        //默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为一个新的master,因为对于这个slave的恢复需要花费很长时

间,通过设置check_repl_delay=0,MHA触发切换在选择一个新的master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master

[server3]
hostname=192.168.2.130
port=3306

注意:
##master_ip_failover_script= /usr/local/bin/master_ip_failover
MHA的Failover两种方式:一种是虚拟IP地址,一种是全局配置文件。MHA并没有限定使用哪一种方式,而是让用户自己选择,虚拟IP地址的方式会牵扯到其它的软件,比如keepalive软件,而且还要修改脚本
master_ip_failover。
所以先暂时注释master_ip_failover_script= /usr/local/bin/master_ip_failover这个选项。后面引入keepalived后和修改该脚本以后再开启该选项

二、设置relay log的清除方式(在每个slave节点上):

2.1三个节点服务器本地hosts解析

[[email protected] ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.2.128   server02
192.168.2.129   server03
192.168.2.130   server04
在slave master03 192.168.2.129操作:

[[email protected] ~]# mysql -uroot -p123456 -e "set global relay_log_purge=0"
mysql: [Warning] Using a password on the command line interface can be insecure.
[[email protected] ~]# 

在slave master04 192.168.2.130操作:

[[email protected] ~]# mysql -uroot -p123456 -e "set global relay_log_purge=0"
mysql: [Warning] Using a password on the command line interface can be insecure.
[[email protected] ~]# 

注意:
MHA在发生切换的过程中,从库的恢复过程中依赖于relay log的相关信息,所以这里要将relay log的自动清除设置为OFF,采用手动清除relay log的方式。在默认情况下,从服务器上的中继日志会在SQL线程执行完毕后被自动删除。但是在MHA环境中,这些中继日志在恢复其他从服务器时可能会被用到,因此需要禁用中继日志的自动删除功能。定期清除中继日志需要考虑到复制延时的问题。在ext3的文件系统下,删除大的文件需要一定的时间,会导致严重的复制延时。为了避免复制延时,需要暂时为中继日志创建硬链接,因为在linux系统中通过硬链接删除大文件速度会很快。(在mysql数据库中,删除大表时,通常也采用建立硬链接的方式)

2.2设置定期清理relay脚本(两台slave服务器):
在slave sever03 192.168.2.129操作:

[[email protected] ~]# cat /data/scripts/purge_relay_log.sh
#!/bin/bash
user=root
passwd=123456
port=3306
log_dir=‘/data/masterha/log‘
work_dir=‘/data‘
purge=‘/usr/local/bin/purge_relay_logs‘

if [ ! -d $log_dir ]
then
   mkdir $log_dir -p
fi

$purge --user=$user --password=$passwd --disable_relay_log_purge --port=$port --workdir=$work_dir >> $log_dir/purge_relay_logs.log 2>

在slave server04 192.168.2.130操作跟上面是一样的,这里不演示了。

脚本中参数介绍:

--user mysql                      //用户名
--password mysql                  //密码
--port                            //端口号
--workdir                         //指定创建relay log的硬链接的位置,默认是/var/tmp,由于系统不同分区创建硬链接文件会失败,故需要执行硬链接具体位置,成功执行脚本后,硬链接的中继日志文件被删除
--disable_relay_log_purge         //默认情况下,如果relay_log_purge=1,脚本会什么都不清理,自动退出,通过设定这个参数,当relay_log_purge=1的情况下会将relay_log_purge设置为0。清理relay log之后,最后将参数设置为OFF。

purge_relay_logs脚本删除中继日志不会阻塞SQL线程。下面我们手动执行看看什么情况:

[[email protected] ~]# purge_relay_logs --user=root --password=123456 --port=3306 -disable_relay_log_purge --workdir=/data/
2018-07-01 11:53:16: purge_relay_logs script started.
 Found relay_log.info: /data/mysql/relay-log.info
 Opening /data/mysql/logs/relay-log/relay-bin.000001 ..
 Opening /data/mysql/logs/relay-log/relay-bin.000002 ..
 Executing SET GLOBAL relay_log_purge=1; FLUSH LOGS; sleeping a few seconds so that SQL thread can delete older relay log files (if it keeps up); SET GLOBAL relay_log_purge=0; .. ok.
2018-07-01 11:53:20: All relay log purging operations succeeded.
[[email protected] ~]# 

原文地址:http://blog.51cto.com/wujianwei/2135795

时间: 2024-10-09 05:37:45

MySQL之MHA+keepalived方案演示(二)的相关文章

MySQL之MHA+keepalived方案演示(五)

接着上篇博文MySQL之MHA+keepalived方案演示(四)中的MySQL的故障切换,当前主库变为了192.168.2.129机器,同时129机器上的keepalived服务被开启.然而192.168.2.128原来的主库被挂掉了,运行的keepalived也被停止了.重新启动192.168.2.128机器上的mysql,添加192.168.2.128机器上的mysql作为192.168.2.129新主库的slave从库. 查看 192.168.2.130 机器上的故障切换日志: grep

MySQL之MHA+keepalived方案演示(四)

配置VIP实现MHA架构中主库故障自动切换 1.说明 引入keepalived实现MHA架构中主库master故障时,从库slave自动提升为新的maservip配置可以采用两种方式:一种通过keepalived的方式管理虚拟ip的浮动:另外一种通过脚本方式启动虚拟ip的方式(即不需要keepalived或者heartbeat类似的软件).此处先介绍通过安装keepalived来管理虚拟IP的浮动: 1.1下载软件安装keepalived (两台master,准确的说一台是master,另外一台

MySQL之MHA+keepalived方案演示(三)

一.MHA之SSH免密码登录测试 1.1配置SSH登录无密码验证 上述博文已经提到过,此处再次粘贴出来,防止遗忘此步骤在server02 192.168.2.128操作(Master): 192.168.2.128 [root ~]$ ssh-keygen -t rsa 192.168.2.128 [root ~]$ ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] 192.168.2.128 [root ~]$ ssh-copy-id

mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

mysql主从复制与lvs+keepalived实现负载高可用 目录 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方案    4 3.1.环境    4 3.2.架构图    5 3.3.设计原理    6 4.相关软件安装    6 4.配置mysql的主从    7 5.通过lvs+keepalived实现负载与热备,并实现读写分离    8 1.前言 最近研究了下高可用的东西,这里总结一下mysql主从复制读

Mysql双主+keepalived实现HA

下面是从网上看到的Mysql双主+keepalived实现HA的介绍,搭建双主是没有问题的,问题在于如果互为主从的一台机器如果挂掉了,并且另外一台机器的数据还不是从库中最新的,那么这个时候就会出问题.并且,两台互为主从的数据库二进制日志必须完全一致.要保证这一点,就必须在安装应用的时候都要规划好. 关于MySQL-HA,目前有多种解决方案,比如heartbeat.drbd.mmm.共享存储,但是它们各有优缺点.heartbeat.drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对

整个MHA+keepalived+lvs+mysql高可用架构配置说明

整个MHA+keepalived+lvs+mysql高可用架构配置说明1.1. 环境简介1.1.1.vmvare虚拟机,系统版本CentOS7.5 x86_64位最小化安装,mysql的版本5.7.21,1.1.2.虚拟机器的ssh端口均为默认22,1.1.3.虚拟机的iptables全部关闭,1.1.4.虚拟机的selinux全部关闭,1.1.5.虚拟机服务器时间全部一致 ntpdate 0.asia.pool.ntp.org1.1.6.3台机器的ssh端口为22**1.2.此次试验采用的是3

MySQL MHA+Keepalived

一.MHA的简单介绍MHA是由perl语言编写的,用外挂脚本的方式实现mysql主从复制的高可用性.MHA可以自动检测mysql是否宕机,如果宕机,在10-30s内完成new master的选举,应用所有差异的binlog日志到所有slave,将所有的slave切换到新的master上来.MHA除了自动检测mysql是否宕机,还能够交互式的切换master,在日常的数据库维护中,这个功能还是挺有用的.由于MHA本身只负责数据库主从的切换,但是应用程序并不知道数据库的master变了.针对这种情况

mysql高可用架构方案之一(keepalived+主主双活)

Mysql双主双活+keepalived实现高可用 目录 1.前言... 4 2.方案... 4 2.1.环境及软件... 4 2.2.IP规划... 4 2.3.架构图... 4 3.安装设置MYSQL半同步... 5 4.Keepalived实现MYSQL的高可用... 11 1.前言 最近研究了下高可用的东西,这里总结一下mysql主主双活的架构方案,整体上提高服务的高可用性,出现问题也不需要手动切换,提高整体的维护效率.确定改造的话,只需要让他们的程序中使用vip地址就可以,实现起来比较

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

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