MySQL MHA

MHA是MySQL高可用性方案,提供0~30秒内自动故障切换,确保数据一致性。本文详细介绍了MHA的环境配置、安装步骤、特点及验证过程,涉及MHA Manager和Node组件的安装、无密码认证配置等。
摘要由CSDN通过智能技术生成

目录

一、MHA概述

1.MHA简介

2.MHA特点

二、 MHA

1.环境

2.安装编译依赖环境(三台MySQL服务器)

3.复制启动脚本与配置文件

4.修改master的主配置文件

5.配置从服务器

6.配置MySQL 一主两从

7.在两台节点服务器进行同步

8.配置MHA

(1)同步阿里云时间服务器

(2)node组件

(3)在MHA节点上安装manager组件

9.配置无密码认证

(1)在mannager上配置到所有数据库节点的无密码认证

(2)在master上配置到slave1和salve2的无密码认证

(3)在slave1上配置到master和salve2的无密码认证

(4)在slave2上配置到master和salve1的无密码认证

10.配置MHA

(1)在MHA节点上复制相关脚本到/usr/local/bin目录

(2)修改master_ip_failover内容

(3)创建MHA软件目录并拷贝配置文件

11.配置文件解析

12.启动MHA

13.验证


一、MHA概述

1.MHA简介

        MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,MHA是由日本人开发,是一套优秀的MySQL故障切换和主从复制的高可用软件。
       在MySQL故障切换的过程中,MHA能做到0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能够最大程度上保证数据库的一致性,以达到真正意义上的高可用。
        MHA由perl语言编写,该工具仅仅使用于MySQLReplication环境,目的在于维持Master主库的高可用性。
MHA是基于标准的MySQL主从复制(异步/半同步)。
MHA由两部分组成管理节点(MHA manager)和数据节点(MHA Node)两部分组成。
MHA manager 可以单独部署在一台服务器上,可以部署在一台slave上面。
主从复制架构:主从复制(一主多从);MHA架构(多主多从);MMM架构(3主多从)。

2.MHA特点

        自动故障切换过程中,MHA总会试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失。但这并不总是可行,例如如果主服务器硬件故障或者无法通过ssh访问,MHA则无法保存二进制日志,只能进行故障转移而丢失了最新的数据。

        使用MySQL5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。
       有时候可故意设置从节点慢于主节点,当发生意外删除数据库倒是数据丢失时可从从节点二进制日志中恢复。

MHA :为了解决的了是故障切换、数据尽可能的保存,以及所有节点日志的一致性。

二、 MHA

1.环境

服务器
MHA-manager :192.168.22.168  管理节点,安装 manager 组件与node组件

MySQL服务器
master 192.168.22.128安装 node 组件
slave1 192.168.22.228安装 node 组件
slave2 192.168.22.126安装 node 组件

2.安装编译依赖环境(三台MySQL服务器)

yum -y install ncurses-devel gcc-c++ perl-Module-Install

安装cmake编译工具
mount.cifs //192.168.226.1/LAMP-C7 /mnt

cd /mnt
tar zxvf cmake-2.8.6.tar.gz -C /opt

cd /opt/cmake-2.8.6/
./configure
gmake && gmake install

安装mysql5.6
cd /mnt
tar zxvf mysql-5.6.26.tar.gz -C /opt
cd /opt/mysql-5.6.26/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DSYSCONFDIR=/etc

make && make install 

3.复制启动脚本与配置文件

/etc/init.d/:各种服务器和程序的二进制文件存放目录。 
/etc/rc.d/: 各个启动级别的执行程序连接目录。里头的文件很多都是指向init.d/的一些软连接

cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/rc.d/init.d/mysqld

chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld

echo 'PATH=$PATH:/usr/local/mysal/bin' >> /etc/profile
source /etc/profile

useradd -M -s /sbin/nologin mysql
chown -R mysql.mysql /usr/local/mysql

mysql_install_db 初始化,目录文件basedir和数据文件datadir都必须要有
/usr/local/mysql/scripts/mysql_install_db \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data \
--user=mysql

4.修改master的主配置文件

开启二进制日志log_bin,允许从服务器同步log-slave-updates 22行之后
cat /etc/my.cnf
[mysqld]
server-id = 1
log-bin = master-bin
log-slave-updates = true

 

5.配置从服务器

在/etc/my.cnf 中修改或者增加下面内容
开启中继日志,创建索引,同步主服务器
slave 1
vim /etc/my.cnf
server-id = 2
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-realy-bin.index

slave 2
vim /etc/my.cnf
server-id = 3
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-realy-bin.index

 

 

 

 

master、slave1、slave2分别做两个软链接 

第一个是mysql命令 
第二个mysqlbinlog是节点恢复
ln -s /usr/local/mysql/bin/mysql /usr/sbin
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin

 

 

 

在后台启动mysql服务

(mysql_safe 安全启动,相当于多了一个守护进程,mysqld挂了会自动把mysqld进程拉起来)
/usr/local/mysql/bin/mysqld_safe --user=mysql &

6.配置MySQL 一主两从

在所有数据库节点上授权两个用户,一个是从库同步使用,另一个是manager使用
grant replication slave on *.* to 'myslave'@'192.168.22.%' identified by '123456'; 
grant all privileges on *.* to 'mha'@'192.168.22.%' identified by 'manager';


下面三条授权理论上不用添加,通过MHA检查MySQL主从报错,
报两个从库通过主机名连接不上主库,所以所有数据库都需要添加以下授权
通过mha检查的时候,是通过主机名的形式进行监控,这种情况会容易报错
grant all privileges on *.* to 'mha'@'master' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave1' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';

所有从库开启只读功能(不会对超级管理员super生效,普通用户)

set global read_only=1;

flush privileges;

 

 

 

 

 

在master上查看二进制文件和同步点

show master status;

 

 7.在两台节点服务器进行同步

change master to master_host='192.168.22.128',master_use
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值