我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MHA搭建及故障维护的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MHA搭建及故障维护的方法是什么

本篇内容主要讲解“MHA搭建及故障维护的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MHA搭建及故障维护的方法是什么”吧!

(一)环境介绍

1.主机部署

CentOS 7改主机名

hostnamectl set-hostname master

192.168.56.121    master
192.168.56.122    slave1    #备用master
192.168.56.123    slave2    
192.168.56.124    manager

将ip和域名配置到/etc/hosts文件中

尝试在各主机上的防火墙上加上端口的允许

iptables -I INPUT -s 0/0 -p tcp --dport 3306 -j ACCEPT

这条规则的意思是,想要在输入数据INPUT中,protocol为tcp/IP的方式,访问端口3306,都会被允许的

iptables -L -n|grep 3306
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306

(二)用ssh-keygen实现四台主机之间相互免密钥登录

1.生成密钥

[master,slave1,slave2,manager]

ssh-keygen -t rsa

[slave1,slave2,manager]

scp .ssh/id_rsa.pub master:/root/.ssh/slave1.pub 
scp .ssh/id_rsa.pub master:/root/.ssh/slave2.pub
scp .ssh/id_rsa.pub master:/root/.ssh/manager.pub

2.在主机上用cat xxx >> authorized_keys导入公钥到/root/.ssh/authorized_keys文件中

[master]

cat ~/.ssh/*.pub>>~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys slave1:/root/.ssh/authorized_keys 
scp ~/.ssh/authorized_keys slave2:/root/.ssh/authorized_keys 
scp ~/.ssh/authorized_keys manager:/root/.ssh/authorized_keys

(三)安装MHAmha4mysql-node,mha4mysql-manager 软件包

1.安装MHAmha4mysql-node

[manager,master,slave1,slave2]

yum -y install perl-DBD-MySQL
yum -y install perl-Config-Tiny    
yum -y install perl-Log-Dispatch    
yum -y install perl-Parallel-ForkManager
mha4mysql-node-0.55-0.el6.noarch.rpm

2.安装mha4mysql-manager

[manager]

 yum -y install perl
 yum -y install cpan
 rpm -ivh mha4mysql-manager-0.55-0.el6.noarch.rpm

缺啥,yum install xxx 啥就行。

(四)、建立master,slave1,slave2之间主从复制

(五)、管理机manager上配置MHA文件

[manager]

1.创建目录

mkdir -p /masterha/app1
mkdir /etc/masterha
vi /etc/masterha/app1.cnf

[server default]
user=root
password=root
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
remote_workdir=/masterha/app1
ssh_user=root
repl_user=rep
repl_password=repl
ping_interval=1
[server1]
hostname=192.168.56.122
master_binlog_dir=/var/lib/mysql
candidate_master=1
#relay_log_purge=0
[server2]
hostname=192.168.56.121
master_binlog_dir=/var/lib/mysql
candidate_master=1
[server3]
hostname=192.168.56.123
master_binlog_dir=/var/lib/mysql
no_master=1
#relay_log_purge=0

(六)、masterha_check_ssh工具验证ssh信任登录是否成功

[manager]

masterha_check_ssh --conf=/etc/masterha/app1.cnf
[root@manager ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf
Thu Feb 23 12:00:24 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Thu Feb 23 12:00:24 2017 - [info] Reading application default configurations from /etc/masterha/app1.cnf..
Thu Feb 23 12:00:24 2017 - [info] Reading server configurations from /etc/masterha/app1.cnf..
Thu Feb 23 12:00:24 2017 - [info] Starting SSH connection tests..
Thu Feb 23 12:00:25 2017 - [debug] 
Thu Feb 23 12:00:24 2017 - [debug]  Connecting via SSH from root@192.168.56.122(192.168.56.122:22) to root@192.168.56.121(192.168.56.121:22)..
Thu Feb 23 12:00:25 2017 - [debug]   ok.
Thu Feb 23 12:00:25 2017 - [debug]  Connecting via SSH from root@192.168.56.122(192.168.56.122:22) to root@192.168.56.123(192.168.56.123:22)..
Thu Feb 23 12:00:25 2017 - [debug]   ok.
Thu Feb 23 12:00:25 2017 - [debug] 
Thu Feb 23 12:00:25 2017 - [debug]  Connecting via SSH from root@192.168.56.121(192.168.56.121:22) to root@192.168.56.122(192.168.56.122:22)..
Warning: Permanently added '192.168.56.121' (ECDSA) to the list of known hosts.
Thu Feb 23 12:00:25 2017 - [debug]   ok.
Thu Feb 23 12:00:25 2017 - [debug]  Connecting via SSH from root@192.168.56.121(192.168.56.121:22) to root@192.168.56.123(192.168.56.123:22)..
Thu Feb 23 12:00:25 2017 - [debug]   ok.
Thu Feb 23 12:00:26 2017 - [debug] 
Thu Feb 23 12:00:25 2017 - [debug]  Connecting via SSH from root@192.168.56.123(192.168.56.123:22) to root@192.168.56.122(192.168.56.122:22)..
Warning: Permanently added '192.168.56.123' (ECDSA) to the list of known hosts.
Thu Feb 23 12:00:26 2017 - [debug]   ok.
Thu Feb 23 12:00:26 2017 - [debug]  Connecting via SSH from root@192.168.56.123(192.168.56.123:22) to root@192.168.56.121(192.168.56.121:22)..
Thu Feb 23 12:00:26 2017 - [debug]   ok.
Thu Feb 23 12:00:26 2017 - [info] All SSH connection tests passed successfully.
[root@manager ~]#

(七)、masterha_check_repl工具验证mysql复制是否成功

[manager]

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

[root@manager mysql]# masterha_check_repl --conf=/etc/masterha/app1.cnf
Thu Feb 23 14:37:05 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Thu Feb 23 14:37:05 2017 - [info] Reading application default configurations from /etc/masterha/app1.cnf..
Thu Feb 23 14:37:05 2017 - [info] Reading server configurations from /etc/masterha/app1.cnf..
Thu Feb 23 14:37:05 2017 - [info] MHA::MasterMonitor version 0.55.
Thu Feb 23 14:37:05 2017 - [info] Dead Servers:
Thu Feb 23 14:37:05 2017 - [info] Alive Servers:
Thu Feb 23 14:37:05 2017 - [info]   master(192.168.56.121:3306)
Thu Feb 23 14:37:05 2017 - [info]   slave1(192.168.56.122:3306)
Thu Feb 23 14:37:05 2017 - [info]   slave2(192.168.56.123:3306)
Thu Feb 23 14:37:05 2017 - [info] Alive Slaves:

.......此处省略

Thu Feb 23 14:37:08 2017 - [info]   Connecting to root@192.168.56.123(slave2:22).. 
Creating directory /masterha/app1.. done.
  Checking slave recovery environment settings..
    Opening /var/lib/mysql/relay-log.info ... ok.
    Relay log found at /tmp, up to mysql-relay-bin.000004
    Temporary relay log file is /tmp/mysql-relay-bin.000004
    Testing mysql connection and privileges..Warning: Using a password on the command line interface can be insecure.
 done.
    Testing mysqlbinlog output.. done.
    Cleaning up test file(s).. done.
Thu Feb 23 14:37:08 2017 - [info] Slaves settings check done.
Thu Feb 23 14:37:08 2017 - [info] 
master (current master)
 +--slave1
 +--slave2

Thu Feb 23 14:37:08 2017 - [info] Checking replication health on slave1..
Thu Feb 23 14:37:08 2017 - [info]  ok.
Thu Feb 23 14:37:08 2017 - [info] Checking replication health on slave2..
Thu Feb 23 14:37:08 2017 - [info]  ok.
Thu Feb 23 14:37:08 2017 - [warning] master_ip_failover_script is not defined.
Thu Feb 23 14:37:08 2017 - [warning] shutdown_script is not defined.
Thu Feb 23 14:37:08 2017 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

(八)、启动MHA manager,并监控日志文件

[manager]

masterha_manager --conf=/etc/masterha/app1.cnf 
tail -f /masterha/app1/manager.log

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

1.停掉master上的mysql服务

[master]

[root@master ~]# service mysql stop
Shutting down MySQL..... SUCCESS! 
[root@master ~]# 
[manager]

2.宕掉master后,/masterha/app1/manager.log文件显示:

tail -f /masterha/app1/manager.log

日志文件显示:

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

app1: MySQL Master failover master to slave1 succeeded

Master master is down!

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

Started automated(non-interactive) failover.
The latest slave slave1(192.168.56.122:3306) has all relay logs for recovery.
Selected slave1 as a new master.
slave1: OK: Applying all logs succeeded.
slave2: This host has the latest relay log events.
Generating relay diff files from the latest slave succeeded.
slave2: OK: Applying all logs succeeded. Slave started, replicating from slave1.
slave1: Resetting slave info succeeded.
Master failover to slave1(192.168.56.122:3306) completed successfully.

上面的结果表明master成功切换。

切换过程中需要关注的几个问题

1.切换过程会自动把read_only关闭

2.切换之后需要删除手工删除/masterha/app1/app1.failover.complete,才能进行第二次测试

3.一旦发生切换管理进程将会退出,无法进行再次测试,需将故障数据库加入到MHA环境中来

4.原主节点重新加入到MHA时只能设置为slave,在

change master to master_host='192.168.56.122',
master_user='repl',
master_password='repl',
master_log_file='mysql-bin.000010',
master_log_pos=120;

之前需要先 reset slave

5.关于ip地址的接管有几种方式,这里采用的是MHA自动调用IP别名的方式,好处是在能够保证数据库状态与业务IP切换的一致性。启动管理节点 之后 VIP会自动别名到当前主节点上,Keepalived也只能做到对3306的健康检查,但是做不到比如像MySQL复制中的Slave-SQL、 Slave-IO进程的检查,容易出现对切换的误判。

6.注意:二级从服务器需要将log_slave_updates打开

7.手工切换需要先定义好master_ip_online_change_script脚本,不然只会切换mysql,IP地址不会绑定上去,可以根据模板来配置该脚本

8.通过设置no_master=1可以让某一个节点永远不成为新的主节点

恢复集群运行

①在manager上删除app1.failover.complete文件

cd /masterha/app1
rm -f app1.failover.complete

②原master主节点服务启动

service mysql start

③ manager管理节点,检查同步报错

masterha_check_repl --conf=/etc/masterha/app1.cnf
Thu Feb 23 15:00:56 2017 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln604] There are 2 non-slave servers! MHA manages at most one non-slave server. Check configurations.

⑤查看现在的slave1上的信息

mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000010
         Position: 120
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

④配置187节点mysql为新的slave,并启动同步进程

change master to master_host='192.168.56.122',
master_user='repl',
master_password='repl',
master_log_file='mysql-bin.000010',
master_log_pos=120;
mysql> start slave;

再次在管理节点上检查同步状态成功:

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

需注意:按如上步骤操作后,此时121节点作为slaver已加入到集群中,但是宕机这段时间122、123中新产生的数据在121中没有,所以还需要先从主节点备份导入最新的数据再启动同步

⑤启动MHA
nohup masterha_manager –conf=/etc/masterha/app1.cnf > /mha/app1/mha_manager.log &1 &

回切:
同样的道理,以上步骤配置无问题的话停止当前master的MySQL进程,MHA可直接切换master至原节点

到此,相信大家对“MHA搭建及故障维护的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MHA搭建及故障维护的方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis搭建及维护的方法是什么

要搭建和维护Redis,可以按照以下步骤进行:1. 下载和安装Redis:可以从Redis官方网站上下载适合自己操作系统的Redis安装包,并按照安装说明进行安装。2. 启动Redis服务器:在安装完成后,可以使用命令行或者配置文件来启动R
2023-08-30

Linux运维常见故障及处理的方法是什么

今天就跟大家聊聊有关Linux运维常见故障及处理的方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。作为Linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问
2023-06-16

厦门网站建设维护的方法是什么

我可以提供以下建议:1.选择合适的网站建设平台或工具,如WordPress、Wix等,以便快速搭建网站。2.设计网站的结构和界面,包括主题、布局、颜色、字体等,以确保网站的易用性和美观性。3.编写网站内容,包括页面文本、图片、视频等,以提供
2023-06-12

mysqlcluster搭建及使用的方法是什么

MySQL Cluster是一种高可用性、高性能的数据库集群解决方案,可以实现数据的分布式存储和处理。以下是MySQL Cluster搭建及使用的方法:1. 安装MySQL Cluster软件包:下载MySQL Cluster软件包并安装到
2023-06-10

webservice搭建及调用的方法是什么

要搭建和调用Web服务,你可以遵循以下步骤:1. 定义服务接口:确定你要提供的服务以及其输入和输出。这将是一个描述服务功能的接口。2. 选择Web服务技术:选择适合你的项目的Web服务技术。常用的Web服务技术包括SOAP(Simple O
2023-09-21

重庆网站空间建设维护的方法是什么

1.选择合适的主机服务商:选择可靠的主机服务商,确保网站能够稳定运行。2.网站备份:定期备份网站数据,以防止数据丢失。3.安全防护:安装网站安全插件,设置强密码和防火墙,防止黑客攻击和恶意软件侵入。4.网站更新:定期更新网站内容,保证网站内
2023-06-12

云服务器维护的方法是什么

云服务器维护的方法可以包括以下几点:1. 系统更新和补丁管理:定期检查和应用操作系统、软件和安全补丁,以确保服务器的稳定性和安全性。2. 数据备份和恢复:定期备份服务器中的重要数据,并测试数据恢复过程,以便在出现故障或数据丢失时能够快速恢复
2023-08-09

深圳服务器维护的方法是什么

深圳服务器维护的方法包括以下几个方面:1. 定期检查服务器硬件的状态,包括CPU、内存、硬盘等,确保它们的正常运行。2. 定期升级服务器的操作系统、应用软件和安全补丁,以确保服务器的稳定性和安全性。3. 定期备份服务器的数据,以防止数据丢失
2023-06-08

vps搭建的方法是什么

vps搭建的方法:1、通过SSH建立与服务器的加密连接访问;2、更新服务器的安全补丁和功能,保证vps的安全性和稳定性;3、创建一个新用户并分组,然后使用新用户登录SSH;4、更改SSH的默认侦听端口,注意更改前要备份配置文件;5、生成SS
2023-02-09

厦门网站制作维护的方法是什么

我无法提供具体的技术步骤,但以下是一些一般的建议:1.选择合适的网站制作工具或平台,如WordPress、Wix、Squarespace等。2.确定网站的设计和布局,包括颜色、字体、图片等。3.编写网站内容,包括文字、图片、视频等。4.优化
2023-06-12

云服务器维护升级的方法是什么

云服务器维护升级的方法包括以下几个步骤:1. 创建备份:在维护升级之前,应该首先创建服务器的备份。备份可以用于在升级过程中出现问题时恢复服务器状态。2. 通知用户:在维护升级之前,应提前通知用户,告知维护时间和可能的影响。这样用户可以提前做
2023-08-22

mysql cluster搭建的方法是什么

搭建MySQL Cluster的方法可以分为以下几个步骤:安装MySQL Cluster软件:首先需要下载MySQL Cluster软件,并根据操作系统的要求进行安装。配置MySQL Cluster管理节点:在MySQL Cluster中,
mysql cluster搭建的方法是什么
2024-04-09

云服务器维护升级的方法是什么

云服务器维护升级指南定期备份数据、更新操作系统和软件,监控服务器健康,实施安全措施,优化性能。必要时升级服务器类型,制定灾难恢复计划。自动化维护任务,定期培训团队。与云服务提供商合作,确保高效升级。
云服务器维护升级的方法是什么
2024-04-11

docker搭建hadoop的方法是什么

要在Docker上搭建Hadoop,需要按照以下步骤进行操作:安装Docker:确保你的机器上已经安装了Docker。你可以访问官方网站(https://www.docker.com/get-started)根据你的操作系统下载和安装Doc
2023-10-27

数据库的实施与维护的方法是什么

数据库的实施与维护方法包括以下几个方面:1. 数据库设计:在实施数据库之前,需要进行数据库设计,包括确定数据库的结构、表的字段和关系的设计等。数据库设计需要根据实际需求和业务流程来进行,以确保数据库能够有效地存储和管理数据。2. 数据库实施
2023-10-18

php主机环境搭建及配置的方法是什么

搭建PHP主机环境的方法包括以下步骤:1. 安装Web服务器:常见的Web服务器包括Apache、Nginx等。选择一种并进行安装。2. 安装PHP:从PHP官网下载对应版本的PHP安装包,并进行安装。3. 配置Web服务器:将Web服务器
2023-06-11

租用深圳服务器维护的方法是什么

租用深圳服务器维护的方法包括以下几个方面:1. 硬件维护:定期检查服务器硬件设备的运行状态,如电源、风扇、硬盘、内存等,及时更换损坏的硬件设备。2. 网络维护:监控服务器的网络流量、带宽使用情况,保证服务器网络畅通无阻。3. 数据备份:定期
2023-06-05

php虚拟主机搭建及配置的方法是什么

以下是php虚拟主机搭建及配置的方法:1. 选择合适的虚拟主机管理软件,如cPanel、Plesk等。2. 在虚拟主机管理软件中创建一个新的虚拟主机,指定域名、主机名和IP地址等基本信息。3. 在虚拟主机中安装PHP和相关扩展,如MySQL
2023-06-04

编程热搜

目录