mysql高可用解决方案MHA架构

1、初始化操作

MHA:192.168.2.6
master:192.168.2.16
slave1:192.168.2.26
slave2:192.168.2.36

master:
[[email protected] ~]# yum -y install mariadb-server
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server_id=16
skip_name_resolve       #跳过ip地址反向解析
log_bin                 #二进制日志
[[email protected] ~]# systemctl start mariadb

slavel:
[[email protected] ~]# yum -y install mariadb-server
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server_id=26
read-only
log-bin
relay_log_purge=0           #不清理中继日志
skip_name_resolve
[[email protected] ~]# systemctl start mariadb

slave2:
[[email protected] ~]# yum -y install mariadb-server
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server_id=36
read-only
log-bin
relay_log_purge=0
skip_name_resolve
[[email protected] ~]# systemctl start mariadb

2、账号建立

master:
MariaDB [(none)]> grant replication slave on *.* to [email protected]‘192.168.2.%‘ identified by ‘123456‘;      #复制账号

MariaDB [(none)]> grant all on *.* to mha[email protected]‘192.168.2.%‘ identified by ‘123456‘;     #管理账号

slavel:
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST=‘192.168.2.16‘,
    ->   MASTER_USER=‘repluser‘,
    ->   MASTER_PASSWORD=‘123456‘,
    ->   MASTER_PORT=3306,
    ->   MASTER_LOG_FILE=‘mariadb-bin.000001‘,
    ->   MASTER_LOG_POS=245;
Query OK, 0 rows affected (0.06 sec)
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G

slave2:
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST=‘192.168.2.16‘,
    ->   MASTER_USER=‘repluser‘,
    ->   MASTER_PASSWORD=‘123456‘,
    ->   MASTER_PORT=3306,
    ->   MASTER_LOG_FILE=‘mariadb-bin.000001‘,
    ->   MASTER_LOG_POS=245;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G

3、测试主从复制是否成功

master:
MariaDB [(none)]> create database db1;

slave1:
MariaDB [(none)]> show databases;

slave2:
MariaDB [(none)]> show databases;

4、基于key验证,并测试互相正常通信

mananger:
[[email protected] ~]# ssh-keygen
[[email protected] ~]# ssh-copy-id 192.168.2.6
[[email protected] ~]# scp -rp .ssh 192.168.2.16:/root/
[[email protected] ~]# scp -rp .ssh 192.168.2.26:/root/
[[email protected] ~]# scp -rp .ssh 192.168.2.36:/root/

[[email protected] ~]# ssh 192.168.2.16
Last login: Tue May  7 22:25:19 2019 from 192.168.2.6
[[email protected] ~]# ssh 192.168.2.26
Last login: Wed May  8 05:11:02 2019 from 192.168.2.1

5、下载安装MHA(有依赖性需要配置epel)

mananger:
[[email protected] ~]# ls
mha4mysql-node-0.56-0.el6.noarch.rpm
mha4mysql-manager-0.56-0.el6.noarch.rpm
[[email protected] ~]# yum -y install *.rpm

master:
[[email protected] ~]# ls
mha4mysql-node-0.56-0.el6.noarch.rpm
[[email protected] ~]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm

slave1:
[[email protected] ~]# ls
mha4mysql-node-0.56-0.el6.noarch.rpm
[[email protected] ~]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm 

slave2:
[[email protected] ~]# ls
mha4mysql-node-0.56-0.el6.noarch.rpm
[[email protected] ~]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm

6、在管理节点建立配置文件

mananger:
[[email protected] ~]# mkdir /data
[[email protected] ~]# mkdir /etc/mha/
[[email protected] ~]# vim /etc/mha/app1.conf
[server default]
user=mhauser
password=123456
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=repluser
repl_password=123456
ping_interval=1
[server1]
hostname=192.168.2.16
candidate_master=1
[server2]
hostname=192.168.2.26
candidate_master=1
[server3]
hostname=192.168.2.36
candidate_master=1

7、在管理节点,MHA验证和启动

mananger:
[[email protected] ~]# masterha_check_ssh --conf=/etc/mha/app1.conf     #密钥验证检查
[[email protected] ~]# masterha_check_repl --conf=/etc/mha/app1.conf        #复制检查
[[email protected] ~]# masterha_manager --conf=/etc/mha/app1.conf       #前台启动,等着主服务宕机之后,立即提升一个slave为新的master

8、测试:主服务器写入大量数据,然后突然宕机

master:
[[email protected] ~]# mysql db1 < testlog.sql
[[email protected] ~]# kill -9 11442  

9、查看日志

[[email protected] ~]# cat /data/mastermha/app1/manager.log
----- Failover Report -----

app1: MySQL Master failover 192.168.2.16(192.168.2.16:3306) to 192.168.2.26(192.168.2.26:3306) succeeded

Master 192.168.2.16(192.168.2.16:3306) is down!

Check MHA Manager logs at mananger:/data/mastermha/app1/manager.log for details.

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

slave1、slave2查看状态
MariaDB [(none)]> show slave status\G

注意:MHA一次性任务,所以将以提升的master的配置文件read-only去掉,否则机器重启后不能写入数据

10、最终验证

新的主服务进行数据操作,看是否可以同步到从服务

原文地址:https://blog.51cto.com/14230743/2391279

时间: 2024-11-08 22:41:17

mysql高可用解决方案MHA架构的相关文章

MySQL高可用之MHA—MHA介绍

MHA简介 MHA是由日本人yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的MySQL高可用方案.MHA能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性.目前淘宝也正在开发相似产品TMHA,目前已支持一主一从. MHA架构 MHA由MHA Manager和MHA Node组成.如下图 MHA Manager 运行一些工具,比如masterha_manager工具实现自动监控MySQL Master和实现master故障切换,其它工具实现手动实

MySQL高可用之MHA

MySQL高可用之MHA MHA简介 MHA是由日本人yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的MySQL高可用方案.MHA能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性.目前淘宝也正在开发相似产品TMHA,目前已支持一主一从. MHA架构MHA由MHA Manager和MHA Node组成,如下图所示: MHA Manager:运行一些工具,比如masterha_manager工具实现自动监控MySQL Master和实现maste

MySQL 高可用之MHA

目录 MySQL高可用之MHA MHA简介 MHA工作流程 HMA架构 MHA工具介绍 部署MHA MySQL环境准备 配置GTID主从复制 配置关闭relaylog自动删除 安装MHA Node 安装MHA Manager 测试故障切换 修复主从和MHA 配置VIP漂移 配置binlog-server 故障排错 MySQL高可用之MHA MHA简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshima

[ZZ]MySQL高可用解决方案

MySQL高可用解决方案(MySQL HA Solution) 什么是高可用性? 很多公司的服务都是24小时*365天不间断的.比如Call Center.这就要求高可用性.再比如购物网站,必须随时都可以交易.那么当购物网的server挂了一个的时候,不能对业务产生任何影响.这就是高可用性. 高可用性2个问题: 如何共享数据或同步数据?如何处理failover? 解释failover,意思就是当服务器down掉,或者出现错误的时候,可以自动的切换到其他待命的服务器,不影响服务器上App的运行.

企业主流MySQL高可用集群架构三部曲之PXC

前段时间,老张给大家介绍了企业中主流MySQL高可用集群架构三部曲中的前两部,有不了解的同学可以去访问我之前的博客内容. 第一部曲直通车>> 企业中MySQL主流高可用架构实战三部曲之MHA 第二部曲直通车>>企业中MySQL高可用集群架构三部曲之MM+keepalived 独家新课程上线>>MySQL体系结构深入剖析及实战DBA视频课程 今儿给大家介绍最后一部曲,是percona公司的percona xtraDB cluster.简称PXC.它是基于GaLera协议的

MySQL高可用方案MHA自动Failover与手动Failover的实践及原理

集群信息 角色                             IP地址                 ServerID      类型 Master                         192.168.244.10   1                 写入 Candicate master          192.168.244.20   2                 读 Slave                           192.168.244.

MySQL 高可用集群架构 MHA

MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA里有两个角色一个是MHA Node(数据节点)另一个是

MySQL高可用之MHA—其它高可用解决方案和问题

在上一篇的MHA介绍中提及过其它一些MySQL的高可用解决方案,只是略微介绍了以下,在这里详细的介绍. MySQL复制是异步或者半同步的.当master故障时,一些slave可能并没有收到最新的relay log,也就意味着每个slave可能处于不同的状态.手动处理这些一致性问题是小事,因为不修复这些问题,就不能开始复制.但是手动修复这些问题,花费一个小时或更多的时间并不少见. 一主一从 如果架构是一主一从,就不会出现一部分slave的状态落后于最新的slave的问题.当master出现故障,可

构建MHA实现MySQL高可用集群架构

一.MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA里有两个角色一个是MHA Node(数