【MHA】MySQL高可用MHA介绍7-常见问题

2024-04-26 09:36

本文主要是介绍【MHA】MySQL高可用MHA介绍7-常见问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

常见问题解答

支持哪些 MySQL 版本?

支持哪些操作系统?

MHA 可靠吗?

是否提供 MHA 的商业支持?

是否支持基于行的二进制日志格式?

在云环境中是否工作?

是否有其他解决方案可以完成与 MHA 相同的事情?

是否可以提升特定服务器为新主服务器?

是否可以使用 MHA 进行手动交互式故障切换?

MHA Manager 何时不执行故障切换?

哪个主机不会被选为新主服务器?

哪个主机会被选为新主服务器?

如何使 MHA Manager 节点自身高度可用?

当我们添加或删除 MySQL 服务器时,应该执行什么操作?

我不想在配置文件中写入明文密码。

如何在配置文件中设置主机?

如果在执行故障切换时,必要的中继日志被 purge_relay_logs 清除怎么办?


常见问题解答

支持哪些 MySQL 版本?

MHA 支持 MySQL 5.0 及更高版本。不支持 MySQL 4.1 或更低版本。

MHA 还透明地支持 5.6+ 系统表复制信息(在系统表中管理中继日志位置)。

支持哪些操作系统?

MHA 支持所有 Linux 发行版。MHA 应该也可以在其他 UNIX 平台上运行,但尚未进行测试。不支持 Windows。

MHA 可靠吗?

是的,只要您使用两层(常规主从)复制。在两层复制中,主服务器的二进制日志文件和位置被写入从服务器的中继日志中(详见幻灯片 p.17-)。因此,它的作用类似全局事务标识符。只要从服务器存活,MHA 就可以通过解析中继日志确定确切的起始位置。默认情况下,除非所有从服务器都存活,否则 MHA 不会开始故障切换,因此当 MHA 运行时应该是可靠的。

是否提供 MHA 的商业支持?

是的,SkySQL 提供 MHA 的商业支持。

是否支持基于行的二进制日志格式?

是的。任何二进制日志格式,包括基于语句的和基于行的(以及混合)都受支持。已知的一个问题是,在基于语句的二进制日志记录执行大型 LOAD DATA 后,如果主服务器失败,恢复可能会失败。在 MySQL 中使用基于语句的二进制日志记录执行 LOAD DATA 已被弃用,请不要使用。

在云环境中是否工作?

如果您拥有 root 账户,是的,您可以使用。MHA 需要在 MySQL 服务器上的操作系统账户以便读取二进制日志或中继日志,并生成工作文件。通常读取二进制/中继日志需要 mysql 或 root 操作系统用户账户。如果您的云服务不提供操作系统账户,则无法在那里使用 MHA。MHA 不依赖于虚拟 IP 地址。因此,即使云供应商不提供许多虚拟 IP 地址,您也可以使用 MHA。

是否有其他解决方案可以完成与 MHA 相同的事情?

据我所知,没有。如果您只有一个主服务器和一个从服务器,“一些从服务器落后于最新的从服务器”情况就永远不会发生,因此自动故障切换变得更加容易。在云环境中,Amazon RDS 的 MultiAZ 提供了这样的功能。但请记住,使用一个从服务器会引起许多潜在问题。

是否可以提升特定服务器为新主服务器?

(我不想提升一些服务器,因为它们不太稳定。)

是的。请检查 candidate_master 和 no_master 参数。

是否可以使用 MHA 进行手动交互式故障切换?

是的。请检查 masterha_master_switch 命令。

MHA Manager 何时不执行故障切换?

当一个或多个从服务器未存活,或者在稍后描述的某些情况下,MHA 不会开始故障切换。

“未存活”意味着以下情况。

  • 无法通过 MySQL 连接
  • SQL 线程无法启动并出现错误
  • 无法通过 SSH 连接(仅在需要应用差异中继日志事件时)

例如,如果其中一个从服务器停止并出现重复键错误,MHA 不会开始故障切换。这是因为此类 SQL 错误无法自动解决,需要由 DBA 手动修复。由于 MySQL/操作系统/硬件故障引起的主服务器故障不会导致 SQL 线程停止(除非您使用旧版有缺陷的 MySQL 版本),因此不应发生此类情况。

如果在配置文件的每个主机上设置了 ignore_fail 参数,即使主机未存活,MHA 也会开始故障切换。

MHA 还在以下情况下不会开始故障切换。

  • 当从服务器的二进制日志或中继日志过滤规则(binlog-do-db、replicate-do-db 等)不同时
  • 上次故障切换失败时。在这种情况下,故障切换错误文件会在工作目录下创建。删除它并重新启动手动故障切换。
  • 上次故障切换太近(默认为 8 小时,可以通过设置 --last_failover_minute=(minute) 更改)。在这种情况下,MHA Manager 不会执行故障切换,因为很可能只通过故障切换无法解决问题。
哪个主机不会被选为新主服务器?

以下主机不会被选为新主服务器。

  • 配置文件中设置了 no_master=1
  • MySQL 中未启用日志记录
  • 主要 MySQL 版本(5.0/5.1/..)不是所有从服务器中最旧的
  • SQL 线程延迟显著。如果目标从服务器上的 Relay_Master_Log_File 落后于最新从服务器上的 Master_Log_File,或者 Exec_Master_Log_Pos 相对于最新从服务器上的 Read_Master_Log_Pos 超过 100,000,000,则 MHA 会认为目标从服务器延迟显著。
哪个主机会被选为新主服务器?

如果主机符合上述条件,则新主服务器的确定基于以下规则。

  • 如果您在某些主机上设置了 candidate_master=1,则它们将被优先选择。
  • 如果它们中有一些是最新的(接收到最新二进制日志事件的从服务器),则该主机将被选择为新主服务器。
  • 如果有多个主机是最新的,则将根据“配置文件中的部分名称排序”来确定主机。例如,如果您有 server1、server2 和 server3 部分,并且 server1 和 server3 都是 candidate_master 并且最新的,则将选择 server1 作为新主服务器。
  • 如果没有服务器设置 candidate_master=1,则最新的从服务器将成为新主服务器。如果有多个最新的从服务器,则将应用“按部分名称排序”规则。
  • 如果没有最新的从服务器可以成为新主服务器,则将从非最新的从服务器中选择一个作为新主服务器。此处也将应用“按部分名称排序”规则。
  • 如果将 latest_priority 参数设置为 0,则“从服务器是否最新”将不影响决定新主服务器。如果您希望完全控制新主服务器的优先级(可以在配置文件中定义规则:按部分名称排序),使用此参数可能有所帮助。
如何使 MHA Manager 节点自身高度可用?

目前,不支持从多个 MHA Manager 监控相同的主服务器。因此,如果 MHA Manager 出现故障,无法启动自动主故障切换。MHA Manager 故障不会导致主服务器故障,因此这就不太严重了,但是您可能希望尽可能地使 MHA Manager 高度可用。当前推荐的 MHA Manager 高可用解决方案是使用常见的主备解决方案,如 Pacemaker。

当我们添加或删除 MySQL 服务器时,应该执行什么操作?

当您添加或删除 MySQL 服务器时,应更新应用程序配置文件,以便添加新主机或删除旧主机。更新文件后,建议重新启动 MHA Manager。当您希望自动化此过程时,masterha_conf_host 是有用的。

我不想在配置文件中写入明文密码。

检查 init_conf_load_script 参数。该参数是为此类目的而引入的。

如何在配置文件中设置主机?

您不需要在应用程序配置文件中设置主机。MHA Manager 会连接配置文件中的所有主机,并自动识别当前的主服务器。

如果在执行故障切换时,必要的中继日志被 purge_relay_logs 清除怎么办?

这绝对不应该发生。MHA Manager 在故障切换开始时会在所有从服务器上获取咨询锁。当执行清除操作时,purge_relay_logs 客户端程序也会在目标从服务器上获取相同的咨询锁。

这篇关于【MHA】MySQL高可用MHA介绍7-常见问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937223

相关文章

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

mysql重置root密码的完整步骤(适用于5.7和8.0)

《mysql重置root密码的完整步骤(适用于5.7和8.0)》:本文主要介绍mysql重置root密码的完整步骤,文中描述了如何停止MySQL服务、以管理员身份打开命令行、替换配置文件路径、修改... 目录第一步:先停止mysql服务,一定要停止!方式一:通过命令行关闭mysql服务方式二:通过服务项关闭

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据