mha部署

MHA部署文档

简介:
MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证 数据库系统的高可用.在宕机的时间内(通常10—30秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新服务器的费用,不影响服务器性能,易安装,不改变现有部署。
还支持在线切换,从当前运行master切换到一个新的master上面,只需要很短的时间(0.5-2秒内),此时仅仅阻塞写操作,并不影响读操作,便于主机硬件维护。
一: 前期准备
1: 准备4台服务器 1核1G
2: ip规划:
高可用lnmp服务器集群ip部署规则
服务器名称 ip 运行的服务
Mysql主服务器 192.168.206.139 Mysql+node
Mysql从服务器 192.168.206.140 Mysql+node
Mysql从服务器 192.168.206.141 Mysql+node
manager 192.168.206.151 Manager+node
vip ip 192.168.206.121

二: 安装前的检查:
1: 检查网络:
ping www.baidu.com
在这里插入图片描述

2: 检查防火墙:
systemctl status firewalld
在这里插入图片描述
关闭防火墙: systemctl stop firewalld
关闭setenforce: setenforce 0

3: 检查内核系统,要保持一致
uname -r
在这里插入图片描述
cat /etc/redhat-release
在这里插入图片描述

4: 时间同步 检查时间
ntpdate ntp.aliyun.com 同步阿里云的时间
检查时间
date
在这里插入图片描述

三 安装部署
1: 配置免密
(139 140 141 151)
ssh-keygen
ssh-copy-id
2: 安装mysql 配置mysql文件
(139 140 141 )
yum -y install mariadb mariadb-server
192.168.206.139(主)
vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
If you need to run mysqld under a different user or group,
#customize your systemd unit file for mariadb according to the
instructions in http://fedoraproject.org/wiki/Systemd

server-id=1
log-bin=mysql-bin

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

include all files from the config directory

!includedir /etc/my.cnf.d

192.168.206.140(从)
vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#Settings user and group are ignored when systemd is used.
#If you need to run mysqld under a different user or group,
#customize your systemd unit file for mariadb according to the
#instructions in http://fedoraproject.org/wiki/Systemd
server-id=2
log-bin=slave-bin
relay-log=slave-log
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

include all files from the config directory

!includedir /etc/my.cnf.d

192.168.206.141(从)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#Settings user and group are ignored when systemd is used.
#If you need to run mysqld under a different user or group,
#customize your systemd unit file for mariadb according to the
instructions in http://fedoraproject.org/wiki/Systemd
server-id=3
log-bin=slave2-bin
relay-log=slave2-log
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

include all files from the config directory

!includedir /etc/my.cnf.d

3: 配置主从
192.168.206.139(主)

mysql

grant all on . to tom@‘192.168.206.140’ identified by ‘123’;
grant all on . to tom@‘192.168.206.141’ identified by ‘123’;
flush privileges ;
show master status;

192.168.206.140(从)

mysql

change master to master_host=‘192.168.206.139’, master_user=‘tom’, master_password=‘123’, master_log_file=‘mysql-bin.000003’, master_log_pos=592;
start slave ;
show slave status\G;

在这里插入图片描述

192.168.206.141(从)

mysql

change master to master_host=‘192.168.206.139’, master_user=‘tom’, master_password=‘123’, master_log_file=‘mysql-bin.000003’, master_log_pos=592;
start slave ;
show slave status\G;

在这里插入图片描述

139 140 141(master,slaves)

grant all privileges on . to tom@‘192.168.206.%’ identified by ‘123’;
flush privileges;
4: node节点安装
139 140 141 151 all
yum -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-DBD-MySQL perl-devel perl-CPAN
上传mha的node源码包
mha4mysql-node-0.57.tar.gz (可去自行下载)
mkdir /etc/mha
tar zxf mha4mysql-node-0.57.tar.gz -C /etc/mha
mv /etc/mha/mha4mysql-node-0.57/ /etc/mha/node
cd /etc/mha/node
perl Makefile.PL
make && make install

注意:编译安装前最好做时间同步.
5: manager节点安装
192.168.206.151 (manager)
yum -y install epel-release --nogpgcheck
yum -y install perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
上传mha的manager的源码包
mha4mysql-manager-0.57.tar.gz (自行下载)
tar zxf mha4mysql-manager-0.57.tar.gz -C /etc/mha
mv /etc/mha/mha4mysql-manager-0.57/ /etc/mha/manager
cd /etc/mha/manager
perl Makefile.PL
make && make install

修改manager的配置文件

mkdir /etc/mha/app1
cp /etc/mha/manager/samples/conf/app1.cnf /etc/mha
vim /etc/mha/app1.cnf

[server default]
manager_workdir=/etc/mha/app1
manager_log=/etc/mha/app1/manager.log
master_binlog_dir="/var/lib/mysql"
remote_workdir=/etc/mha/app1
master_ip_failover_script=/etc/mha/master_ip_failover
master_ip_online_change_script=/etc/mha/master_ip_online_change
report_script=/etc/mha/send_report
user=tom
password=123
repl_user=tom
repl_password=123
ping_interval=1
secondary_check_script= masterha_secondary_check -s 192.168.206.140 -s 192.168.206.141

[server1]
hostname=192.168.206.139
port=3306
ssh_port=22

[server2]
hostname=192.168.206.140
port=3306
ssh_port=22
candidate_master=1
check_repl_delay=0

[server3]
hostname=192.168.206.141
port=3306
no_master=1
ssh_port=22

6: 配置脚本
给两台从服务器配置脚本
192.168.206.140 192.168.206.141 (从)

mysql
set global relay_log_purge=0;
exit

mkdir /var/lib/mysql/logs1
ln /var/lib/mysql/relay-log* /var/lib/mysql/logs1/
vim /etc/mha/purge_relay_log.sh

#!/bin/bash
user=root
passwd=123
port=3306
log_dir=’/var/lib/mysql/’
work_dir=’/var/lib/mysql/logs1’
purge=’/usr/local/bin/purge_relay_logs’
if [ ! -d $log_dir ]
then
mkdir $log_dir -p
fi
p u r g e − − u s e r = purge --user= purgeuser=user --password=$passwd --disable_relay_log_purge --port= p o r t − − h o s t = l o c a l h o s t − − w o r k d i r = port --host=localhost --workdir=

### 如何部署 MySQL MHA (Master High Availability) #### 配置测试环境 为了配置和部署MySQL MHA,在开始之前需确认已经具备安装软件的能力,处理SSH密钥以及设置MySQL复制的知识[^1]。这些前置技能对于成功搭建MHA至关重要。 #### 准备工作 确保所有服务器上的时间同步非常重要,因为MHA依赖于精确的时间戳来管理故障转移过程中的事务顺序。可以通过NTP服务实现这一点。另外,所有的MySQL实例应该被正确配置为支持主从复制模式,并且已验证数据一致性[^2]。 #### 安装 Manager 和 Node 组件 Manager组件负责监控集群状态并执行自动切换操作;Node组件则运行在各个数据库节点上协助完成整个流程。具体来说: - **安装Manager:** 将其部署在一个独立的机器或者现有的管理节点之上。 - **安装Nodes:** 在每一个参与复制链路内的MySQL主机上面都要安装相应的node包。 ```bash # 更新yum源列表 sudo yum update -y # 安装EPEL扩展库以便获取更多第三方资源 sudo yum install epel-release -y # 对于CentOS/RHEL系统可以直接通过yum命令安装mha4mysql-manager mha4mysql-node sudo yum install perl-MHA4mysql-manager perl-MHA4mysql-node -y ``` #### 创建 SSH 密钥对免密码登录 为了让manager能够远程控制nodes,需要创建一对SSH公私钥文件,并将其分发给所有目标服务器,从而允许无密码访问。 #### 编辑配置文件 `/etc/mha/app1.cnf` 此文件定义了有关master-slave拓扑结构的信息以及其他必要的参数设定。下面是一个简单的例子说明如何指定masters、slaves及其连接细节: ```ini [server default] user=mha_user password=your_password_here ssh_user=root repl_user=repl repl_password=slavepass ping_interval=1 master_ip_failover_script=/usr/local/bin/master_ip_failover secondary_check_script=/usr/local/bin/secondary_check interval_fileexists_check=0.01 no_master_change=true [server1] hostname=192.168.0.171 [server2] hostname=192.168.0.172 [server3] hostname=192.168.0.173 ``` #### 测试配置有效性 最后一步是在实际应用前先做一次完整的模拟演练,这有助于发现潜在问题并及时调整策略以提高成功率。可以利用`--test-mode`选项来进行这样的预演练习。 ```bash mhads --conf /etc/mha/app1.cnf --test-mode ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值