MySQL高可用架构_高可用架构社区

MySQL高可用架构_高可用架构社区一、MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)

一、MHA介绍

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

       MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为主库),大概0.5-2秒内即可完成。

  • 自动故障检测和自动故障转移

       MHA能够在一个已经存在的复制环境中监控MySQL,当检测到Master故障后能够实现自动故障转移,通过鉴定出最“新”的Salve的relay log,并将其应用到所有的Slave,这样MHA就能够保证各个slave之间的数据一致性,即使有些slave在主库崩溃时还没有收到最新的relay log事件。一个slave节点能否成为候选的主节点可通过在配置文件中配置它的优先级。由于master能够保证各个slave之间的数据一致性,所以所有的slave节点都有希望成为主节点。在通常的replication环境中由于复制中断而极容易产生的数据一致性问题,在MHA中将不会发生。

  • 交互式(手动)故障转移

       MHA可以手动地实现故障转移,而不必去理会master的状态,即不监控master状态,确认故障发生后可通过MHA手动切换

  • 在线切换Master到不同的主机

       MHA能够在0.5-2秒内实现切换,0.5-2秒的写阻塞通常是可接受的,所以你甚至能在非维护期间就在线切换master。诸如升级到高版本,升级到更快的服务器之类的工作,将会变得更容易。

二、MHA优势

• 自动故障转移快。

• 主库崩溃不存在数据一致性问题。

• 配置不需要对当前mysql环境做重大修改。

• 不需要添加额外的服务器(仅一台manager就可管理上百个replication)。

• 性能优秀,可工作在半同步复制和异步复制,当监控mysql状态时,仅需要每隔N秒向master发送ping包(默认3秒),所以对性能无影响。你可以理解为MHA的性能和简单的主从复制框架性能一样。

• 只要replication支持的存储引擎,MHA都支持,不会局限于innodb。

三、MHA组成

  MHA由Manager节点和Node节点组成。

       MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave 提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

MySQL高可用架构_高可用架构社区

四、MHA工作原理

• 从宕机崩溃的master保存二进制日志事件(binlog events);

• 识别含有最新更新的slave;

• 应用差异的中继日志(relay log)到其他的slave;

• 应用从master保存的二进制日志事件(binlog events);

• 提升一个slave为新的master;

• 使其他的slave连接新的master进行复制;

五、MHA安装

• 准备四个节点,其中一个是管理节点,三个是一主两从的环境

Manager节点:

MySQL03 (192.168.56.13) 

Node节点:

MySQL01 (192.168.56.11)

MySQL02 (192.168.56.12)

MySQL04 (192.168.56.14)

 

• 安装node节点

yum install -y perl-DBD-MySQL

wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm 

rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

代码100分

 

• 安装manager节点

代码100分yum install -y perl-DBD-MySQL

wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm 

rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -ivh epel-release-latest-7.noarch.rpm

yum install perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager -y

wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

 

• 在四个节点的/etc/hosts中添加主机内容:

192.168.56.11  MySQL01

192.168.56.12  MySQL02

192.168.56.13  MySQL03

192.168.56.14  MySQL04

 

• 在manager节点创建配置文件 

[root@MySQL03 ~]# cat /etc/app1.cnf
# mysql user and password
user=mha
password=456
repl_user=repl
repl_password=mysql
#linux user ssh_user
=root # working directory on the manager manager_workdir=/var/log/masterha/app1 # working directory on MySQL servers remote_workdir=/var/log/masterha/app1 [server1] hostname=MySQL01 port=3306 master_binlog_dir=/data/data [server2] hostname=MySQL02 port=3306 master_binlog_dir=/usr/local/mysql/data [server3] hostname=MySQL04 port=3306 master_binlog_dir=/usr/local/mysql/data

 

 

• 两个slave节点的my.cnf文件添加下面的参数:

代码100分log_bin=binlog
relay_log_purge=0

 

• 重启两个slave使配置文件生效

/etc/init.d/mysql.server restart

 

 • 创建“mha”@”192.168.56.%”用户用于manager节点监控mysql工作状态、操作mysql实例

create user "mha"@"192.168.56.%";

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SUPER ON *.* TO `mha`@`192.168.56.%` identified by "456";

 

创建

create user "repl"@"192.168.56.%";

GRANT REPLICATION SLAVE ON *.* TO `repl`@`192.168.56.%` identified by "mysql";

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10492.html

(0)
上一篇 2022-12-26
下一篇 2022-12-26

相关推荐

  • Python Entry管理器:轻松管理应用程序入口

    Python Entry管理器:轻松管理应用程序入口Python Entry是Python官方PEP 397文档介绍的一个标准库,用于管理与应用程序有关的入口文件。它可以轻松地为Python应用程序创建和管理命令行脚本、GUI程序、Web应用程序等入口文件,提供统一的管理和部署方式。

    2024-01-13
    103
  • 【赵强老师】删除表和Oracle的回收站

    【赵强老师】删除表和Oracle的回收站一、Oracle的Drop Table语句 首先,我们来看一下Oracle Drop Table的语法格式。 解释一下里面的参数: schema Schema表示方案名称,这里可以理解为用户名,缺省为

    2023-02-14
    142
  • Python字符串编码:如何将字符串转换为指定编码的字节序列

    Python字符串编码:如何将字符串转换为指定编码的字节序列Python是一个可移植、解释、面向对象的高级编程语言,广泛应用于Web、科学计算、人工智能等领域。在Python中,字符串是一种常见的数据类型,同时也是一种复杂的数据类型。字符串编码是指将字符串转换为指定编码的字节序列,常用于文件读写、网络传输等场景。

    2024-01-18
    120
  • 使用Python编写爬虫

    使用Python编写爬虫在互联网时代,信息爆炸已经成为常态,人们需要从海量的数据中获取指定的信息,而爬虫技术就是一项强大的工具。Python作为一种简洁有效的编程语言,其出色的网络数据抓取功能备受开发人员的青睐,越来越多的人开始使用Python编写爬虫。

    2024-06-30
    51
  • sql求合计值(rollup函数应用)[通俗易懂]

    sql求合计值(rollup函数应用)[通俗易懂]CREATE TABLE `test1` ( `id` varchar(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `count` var…

    2023-03-25
    152
  • 索引 b+树_b+树索引和hash索引

    索引 b+树_b+树索引和hash索引索引原理及B树索引 http://hongyitong.github.io/2017/01/05/%E7%B4%A2%E5%BC%95%E5%8E%9F%E7%90%86%E5%8F%8AB%E6%A

    2023-02-27
    151
  • 两个表组合查询_mysql数据库合并工具

    两个表组合查询_mysql数据库合并工具1. 题目 表1: Person ± ± +| 列名 | 类型 |± ± +| PersonId | int || FirstName | varchar || LastName | varchar…

    2023-04-08
    152
  • Python安装方法

    Python安装方法Python是一种高级语言,可以用于处理大量数据,进行机器学习、人工智能等领域的开发。Python的学习门槛低,易于入门是其广受欢迎的一个原因。Python虽然是跨平台的语言,但在不同平台上安装的方法可能会有所不同。本文将对Python在不同平台上的安装进行详细介绍。

    2024-07-07
    41

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注