MySQL MHA 安装
MHA 安装手册
MHA软件由两部分组成,Manager工具包和Node工具包,具体的说明如下。
Manager工具包主要包括以下几个工具:
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_manger 启动MHA
masterha_check_status 检测当前MHA运行状态
masterha_master_monitor 检测master是否宕机
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的server信息
Node工具包(这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
1.部署MHA
接下来部署MHA,具体的搭建环境如下(所有操作系统均为centos 6.2 64bit,不是必须,server03和server04是server02的从,):
角色 ip地址 主机名 server_id 类型
Monitor host 10.10.10.155 db-manager - 监控复制组
Master 10.10.10.156 db-master 1 写入
Candicate master 10.10.10.157 db-slave01 2 读
Slave 10.10.10.158 db-slave02 3 读
其中master对外提供写服务,备选master(实际的slave,主机名server03)提供读服务,
slave也提供相关的读服务,一旦master宕机,将会把备选master提升为新的master,slave指向新的master
(1)在所有节点安装MHA node所需的perl模块(DBD:mysql),安装脚本如下:(run this shell )cat install.sh #!/bin/bashwget http://xrl.us/cpanm --no-check-certificatemv cpanm /usr/binchmod 755 /usr/bin/cpanmcat > /root/list << EOFinstall DBD::mysqlEOFfor package in `cat /root/list`docpanm $packagedone 如果有安装epel源,也可以使用yum安装安装以下perl 支持包yum install perl-DBD-MySQL -yyum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -yyum install gettext-devel -yyum install perl-CPAN -y在所有的节点安装mha node:tar xf mha4mysql-node-0.56.tar.gzcd mha4mysql-node-0.56perl Makefile.PLmake && make install安装完成后,会生成node 所需的工具包[root@bd-slave02 mha4mysql-node-0.56]# ll /usr/local/bin
总用量 44
-r-xr-xr-x 1 root root 16367 1月 31 11:33 apply_diff_relay_logs
-r-xr-xr-x 1 root root 4807 1月 31 11:33 filter_mysqlbinlog
-r-xr-xr-x 1 root root 8261 1月 31 11:33 purge_relay_logs
-r-xr-xr-x 1 root root 7525 1月 31 11:33 save_binary_logs2.安装MHA ManagerMHA Manager中主要包括了几个管理员的命令行工具,例如master_manger,master_master_switch等。MHA Manger也依赖于perl模块,具体如下:(1)安装MHA Node软件包之前需要安装依赖。我这里使用yum完成,没有epel源的可以使用上面提到的脚本(epel源安装也简单)。注意:在MHA Manager的主机也是需要安装MHA Node。rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install perl-DBD-MySQL -y
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y安装MHA Manager软件包:[root@bd-master download]# tar xf mha4mysql-manager-0.56.tar.gz
[root@bd-master download]# cd mha4mysql-manager-0.56/
[root@bd-master mha4mysql-manager-0.56]# perl Makefile.PL
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI ...loaded. (1.627)
- DBD::mysql ...loaded. (4.023)
- Time::HiRes ...loaded. (1.9725)
- Config::Tiny ...loaded. (2.14)
- Log::Dispatch ...loaded. (2.41)
- Parallel::ForkManager ...loaded. (1.18)
- MHA::NodeConst ...missing. (注意: 在manager 节点,也需要安装node ,安装完后,再回来安装manager cefp )
==> Auto-install the 1 mandatory module(s) from CPAN? [y] y安装完成后,会生成以下文件[root@bd-master mha4mysql-manager-0.56]# ll /usr/local/bin
总用量 84
-r-xr-xr-x 1 root root 16367 1月 31 11:46 apply_diff_relay_logs
-r-xr-xr-x 1 root root 4807 1月 31 11:46 filter_mysqlbinlog
-r-xr-xr-x 1 root root 1995 1月 31 11:47 masterha_check_repl
-r-xr-xr-x 1 root root 1779 1月 31 11:47 masterha_check_ssh
-r-xr-xr-x 1 root root 1865 1月 31 11:47 masterha_check_status
-r-xr-xr-x 1 root root 3201 1月 31 11:47 masterha_conf_host
-r-xr-xr-x 1 root root 2517 1月 31 11:47 masterha_manager
-r-xr-xr-x 1 root root 2165 1月 31 11:47 masterha_master_monitor
-r-xr-xr-x 1 root root 2373 1月 31 11:47 masterha_master_switch
-r-xr-xr-x 1 root root 5171 1月 31 11:47 masterha_secondary_check
-r-xr-xr-x 1 root root 1739 1月 31 11:47 masterha_stop
-r-xr-xr-x 1 root root 8261 1月 31 11:46 purge_relay_logs
-r-xr-xr-x 1 root root 7525 1月 31 11:46 save_binary_logs
[root@bd-master mha4mysql-manager-0.56]# 拷贝脚本到/usr/local/bin
[root@bd-master mha4mysql-manager-0.56]# ll samples/scripts
总用量 32
-rwxr-xr-x 1 4984 users 3648 4月 1 2014 master_ip_failover
-rwxr-xr-x 1 4984 users 9870 4月 1 2014 master_ip_online_change
-rwxr-xr-x 1 4984 users 11867 4月 1 2014 power_manager
-rwxr-xr-x 1 4984 users 1360 4月 1 2014 send_report
[root@bd-master mha4mysql-manager-0.56]# cp samples/scripts/* /usr/local/bin
[root@bd-master mha4mysql-manager-0.56]# 3.配置SSH登录无密码验证(节抄自以前配置oracle rac) 设置SSH,1).在主节点RAC1上以grid,oracle用户身份生成用户的公匙和私匙# su - oracle$ mkdir ~/.ssh$ ssh-keygen -t rsa$ ssh-keygen -t dsa2).在副节点RAC2上执行相同的操作,确保通信无阻# ping rac1-eth0# ping rac1-eth1# su - oracle$ mkdir ~/.ssh$ ssh-keygen -t rsa$ ssh-keygen -t dsa3).在主节点RAC1上oracle用户执行以下操作$ touch ~/.ssh/authorized_keys $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys#将RAC2的加入$ ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys$ ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys4).主节点RAC1上执行检验操作$ ssh rac1 date$ ssh rac2 date$ ssh rac1-private date$ ssh rac2-private date5).在副节点RAC2上执行检验操作$ ssh rac1 date$ ssh rac2 date$ ssh rac1-private date$ ssh rac2-private date4.编译安装mysql 主从架构见mysql 主从架构安装.log5.配置半同步首先加载插件因用户需执行INSTALL PLUGIN, SET GLOBAL, STOP SLAVE和START SLAVE操作,所以用户需有SUPER权限。主:mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';从:mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';查看插件是否加载成功有两种方式1. mysql> show plugins;rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL 2. mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';+----------------------+---------------+| PLUGIN_NAME | PLUGIN_STATUS |+----------------------+---------------+| rpl_semi_sync_master | ACTIVE |+----------------------+---------------+1 row in set (0.00 sec)启动半同步复制在安装完插件后,半同步复制默认是关闭的,这时需设置参数来开启半同步主:mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;从:mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;以上的启动方式是在命令行操作,也可写在配置文件中。主:plugin-load=rpl_semi_sync_master=semisync_master.sorpl_semi_sync_master_enabled=1rpl_semi_sync_master_timeout=1000从:plugin-load=rpl_semi_sync_slave=semisync_slave.sorpl_semi_sync_slave_enabled=1在有的高可用架构下,master和slave需同时启动,以便在切换后能继续使用半同步复制plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"rpl-semi-sync-master-enabled = 1rpl-semi-sync-slave-enabled = 1重启从上的IO线程mysql> STOP SLAVE IO_THREAD;mysql> START SLAVE IO_THREAD;如果没有重启,则默认还是异步复制,重启后,slave会在master上注册为半同步复制的slave角色。这时候,主的error.log中会打印如下信息:2016-08-05T10:03:40.104327Z 5 [Note] While initializing dump thread for slave with UUID <ce9aaf22-5af6-11e6-850b-000c2988bad2>, found a zombie dump thread with the same UUID. Master is killing the zombie dump thread(4).2016-08-05T10:03:40.111175Z 4 [Note] Stop asynchronous binlog_dump to slave (server_id: 2)2016-08-05T10:03:40.119037Z 5 [Note] Start binlog_dump to master_thread_id(5) slave_server(2), pos(mysql-bin.000003, 621)2016-08-05T10:03:40.119099Z 5 [Note] Start semi-sync binlog_dump to slave (server_id: 2), pos(mysql-bin.000003, 621)查看半同步是否在运行主:mysql> show status like 'Rpl_semi_sync_master_status';+-----------------------------+-------+| Variable_name | Value |+-----------------------------+-------+| Rpl_semi_sync_master_status | ON |+-----------------------------+-------+1 row in set (0.00 sec)从:mysql> show status like 'Rpl_semi_sync_slave_status';+----------------------------+-------+| Variable_name | Value |+----------------------------+-------+| Rpl_semi_sync_slave_status | ON |+----------------------------+-------+1 row in set (0.20 sec)这两个变量常用来监控主从是否运行在半同步复制模式下。6.配置MHA5.1 配置文件修改创建MHA的工作目录,并且创建相关配置文件(在软件包解压后的目录里面有样例配置文件)。# mkdir -p /etc/masterha# cp mha4mysql-manager-0.53/samples/conf/app1.cnf #配置文件[root@bd-master ~]# cat /etc/masterhamasterha/ masterha_default.cnf [root@bd-master ~]# cat /etc/masterha/app1.cnf [server default]manager_workdir=/var/log/masterha/app1manager_log=/var/log/masterha/app1/manager.logmaster_binlog_dir=/data/mysqlmaster_ip_failover_script= /usr/local/bin/master_ip_failovermaster_ip_online_change_script= /usr/local/bin/master_ip_online_changeuser=monitorpassword=monitor_passwordping_interval=1remote_workdir=/tmprepl_user=replrepl_password=repl_passwordreport_script=/usr/local/bin/send_reportsecondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02shutdown_script=""ssh_user=root[server1]hostname=10.10.10.156port=3301[server2]hostname=10.10.10.157port=3301candidate_master=1check_repl_delay=0[server3]hostname=10.10.10.158port=33015.2设置relay log 清除方式(在每个slave)#mysql -uroot -p -e 'set global relay_log_purge=0'MHA节点中包含了pure_relay_logs命令工具,它可以为中继日志创建硬链接,执行SET GLOBAL relay_log_purge=1,等待几秒钟以便SQL线程切换到新的中继日志,再执行SET GLOBAL relay_log_purge=0。5.3 设置定时清理relay 脚本# mkdir /data/masterha/log -p# mkdir /opt/shell# cat /opt/shell/purge_relay_log.sh #!/bin/bashuser=monitorpasswd=monitor_passwordport=3301log_dir='/data/masterha/log'work_dir='/data'purge='/usr/local/bin/purge_relay_logs'if [ ! -d $log_dir ]thenmkdir $log_dir -pfi$purge --user=$user --password=$passwd --disable_relay_log_purge --port=$port --workdir=$work_dir >> $log_dir/purge_relay_logs.log 2>&1#定期#crontab -l0 4 * * * /bin/bash /opt/shell/purge_relay_log.sh(这里我使用了monitor 用户,注意权限问题,)5.4 检查
5.4.1 检查MHA Manger到所有MHA Node的SSH连接状态:masterha_check_ssh --conf=/etc/masterha/app1.cnf 5.4.2 通过masterha_check_repl脚本查看整个集群的状态masterha_check_repl --conf=/etc/masterha/app1.cnf5.4.3 检查MHA Manager的状态:masterha_check_status --conf=/etc/masterha/app1.cnf6.开启MHA Manager监控# nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 & 再次检查一下启动状态:masterha_check_status --conf=/etc/masterha/app1.cnf关闭监控masterha_stop --conf=/etc/masterha/app1.cnf7. VIP 配置7. keepalived方式管理虚拟ip,keepalived配置方法如下:7.1 下载软件进行并进行安装(db-master,db-slave01 两台都要安装,备选master:db-slave01,在没有切换以前是slave):# wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz# tar xf keepalived-1.2.12.tar.gz # cd keepalived-1.2.12# ./configure --prefix=/usr/local/keepalived# make && make install# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/# mkdir /etc/keepalived# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/7.2 配置keepalived的配置文件,在master上配置 (db-master)8.
参考URL:
https://www.cnblogs.com/gomysql/p/3675429.html
VIP 配置MHA
http://blog.itpub.net/29416434/viewspace-2062533/
MySQL MHA 安装相关推荐
- mysql mha 安装_MySQL高可用方案 MHA之一MHA安装
MHA0.58安装 MHA(Master High Availability)由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点). 管理节点 mha4mysql-manag ...
- MySQL MHA 高可用架构
2019独角兽企业重金招聘Python工程师标准>>> MySQL MHA 项目的地址:https://code.google.com/p/mysql-master-ha/,这个 ...
- MySQL服务MySQL+MHA高可用服务集群搭建
MySQL MHA MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 1.所有服务器,关闭系统防火墙和安全机制 2.修改 master(192.1 ...
- 高可用MySQL MHA介绍
MySQL MHA介绍 MHA简介 MHA是一位日本MySQL大牛用Perl写一套MySQL故障切换方案,来保证数据库系统的高可用,在宕机的事件内(通常10-30秒),完成故障转意,部署MHA,可避免 ...
- Step By Step 搭建 MySql MHA 集群
关于MHA MHA(Master High Availability)是一款开源的mysql高可用程序,目前在mysql高可用方面是一个相对成熟的解决方案.MHA 搭建的前提是MySQL集群中已 ...
- MySQL MHA 搭建测试
一:背景介绍 MHA(Master HA)是一款开源的MySQL的高可用工具,能在MySQL主从复制的基础上,实现自动化主服务器故障转移.虽然MHA试图从宕机的主服务器上保存二进制日志,但并不是总是可 ...
- 阴沟翻船之 MYSQL MHA 故障 SSH timeout 与 Binlog not found
MYSQL MHA 的安装估计很多地方都是自动化安装的了,流水线方式.个人安装的MHA 的集群虽然没有几百台,但基本上已经突破了三位数,按理说安装应该是不会出什么奇怪的事情,但实际上每天都有新鲜事. ...
- Mysql MHA搭建
. 目录 机器配置 安装Docker Docker安装和启动Mysql8.0.26 搭建Mysql一主二从 设置三台机器免密访问 安装MHA 搭建问题记录 问题1 MHA验证主从复制报错Access ...
- MySQL MHA高可用集群部署及故障切换(图文详解)
文章目录 MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 实验思路 实验环境.安装包 1.所有服务器,关闭系统防火墙和安全机制 2.修改 mas ...
最新文章
- 【深度学习笔记】深度学习中关于epoch
- java实现十进制与二进制之间的转换
- EVM反编译软件Porosity的使用-mac
- Debug shell: Syntax error: “(“ unexpected
- XGB 调参基本方法
- ubuntu18.04安装nextcloud以及相关配置
- SAP Spartacus里的product carousel控件
- 使用 .NET CLI 构建项目脚手架
- 【Python学习】 - sklearn学习 - 自带数据集sklearn.datasets.x
- 小米手机将终结卡顿?未来所有机型将升级新MIUI
- bytebuf池_PooledByteBuf内存池-------这个我现在不太懂
- poj 2594 Treasure Exploration 最小路径覆盖
- #import和@class 的区别
- Leslie 模型预测
- Ubuntu 16.04 利用Sakurafrp工具管理多节点多隧道ID 实现 ssh 内网穿透
- 【html5插入透明Webm视频】
- 边缘计算是什么 优点
- 电力电子应用技术_应用于电气自动化驱动与控制的电力电子技术展示
- 【每日最爱一句】2013.07.31
- win7怎么装python_如何在win7上面安装python的包
热门文章
- 改进 网站资源探测工具(添加代理)
- 28个MongoDB经典面试题
- pimg src=http://img.blog.csdn.net/20150823142545135?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ...
- Ubuntu学习——第一篇
- 低碳生活:充电电池及充电器
- Session id的存储
- spring boot Filter过滤器的简单使用
- 创建第一个Django项目
- 剑指offer试题(PHP篇一)
- shell讲解-小案例