【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

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu