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= purge−−user=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=