【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 客户端程序也会在目标从服务器上获取相同的咨询锁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/573974.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

azure云服务器学生认证优惠100刀续订永久必过方法记录

前面的话 前几天在隔壁网站搞了个美国edu邮箱,可以自定义用户名。今天就直接认证Azure,本来打算等GitHub学生包过期后用这个edu邮箱重新认证白嫖Azure的。在昨天无意中看到续期,就把原本那个Azure账号续了一年,所以这个美国edu邮…

25计算机考研院校数据分析 | 浙江大学

浙江大学(Zhejiang University),简称“浙大”,坐落于“人间天堂”杭州。前身是1897年创建的求是书院,是中国人自己最早创办的新式高等学校之一。 浙江大学由教育部直属、中央直管(副部级建制)&a…

一文掌握Vue3:深度解读Vue3新特性、Vue2与Vue3核心差异以及Vue2到Vue3转型迭代迁移重点梳理与实战

每次技术革新均推动着应用性能与开发体验的提升。Vue3 的迭代进步体现在性能优化、API重构与增强型TypeScript支持等方面,从而实现更高效开发、更优运行表现,促使升级成为保持竞争力与跟进现代前端趋势的必然选择。本文深度解读Vue3 响应式数据data、生命…

常用的JDK9-JDK17的一些新增语法特性

目录 1.前言2.一些新增的特性2.1 yield关键字2.2 var关键字2.3 空指针异常2.4 密封类2.5 接口中的私有方法2.6 instanceof2.7 其他 1.前言 从springboot3.0开始,已经不⽀持JDK8了。参考资料 :Spring官方博客。从3.0开始,转变为JDK17。 官方…

使用windows端MySQL创建数据库

1.命令行登录数据库 命令:mysql -u用户名 -p密码; 切记命令后面要以分号结尾 2. 查看和创建数据库 查看数据库命令:show database; 创建数据库命令:mysql> create database db_classes; 创建一个名为db_classes的…

【漏洞复现】WebLogic XMLDecoder反序列化(CVE-2017-10271)

1、漏洞描述 CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。攻击者发送精心构造的xml数据甚至能…

AIGC算法3:Attention及其变体

1.Attention Attention是Transformer的核心部分,Attention机制帮助模型进行信息筛选,通过Q,K,V,对信息进行加工 1.1 attention计算公式 Attention ⁡ ( Q , K , V ) softmax ⁡ ( Q K T d k ) V \operatorname{Attention}(Q, K…

找不到mfc140.dll如何解决?mfc140.dll丢失的几种解决方法分享

在我们启动并开始利用电脑进行日常工作的过程中,如果遭遇了操作系统提示“mfc140.dll文件丢失”的错误信息,导致某些应用程序无法正常运行,这究竟是何种情况呢?小编将介绍计算机缺失mfc140.dll文件的5种解决方法,帮助大…

二叉树数据结构详解及java使用二叉树示例代码

二叉树详解: 二叉树是一种常见的树形数据结构,它由节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。 二叉树组成: 节点(Node): 每个节点包含三个要素:数…

【AI学习】RAG与推荐系统

一、《双塔模型的瓶颈究竟在哪?》 文章介绍了谷歌的一篇论文,《Large Dual Encoders Are Generalizable Retrievers》 文章主要在讲,稠密检索模型在OOD(Out-Of-Distribution,即域外)泛化能力不行&#xff…

【Pytorch】(十五)模型部署:ONNX和ONNX Runtime

文章目录 (十五)模型部署:ONNX和ONNX RuntimeONNX 和 ONNX Runtime的关系将PyTorch模型导出为ONNX格式使用Netron可视化ONNX模型图检查ONNX模型验证ONNX Runtime推理结果使用ONNX Runtime运行超分模型 (十五)模型部署&…

外贸干货|真正的销售高手,都很会提问

你的产品性价比很高,为什么客户没有买单呢? 最重要的原因是你没有了解到他真正的需求。 真正的销售高手,应该是一个提问高手,至少要连续问对方6个问题,问出客户的真实需求。 假如他回答你的问题,你有一种&a…

git 冲突与解决冲突

目录 1.使用 git 解决冲突 GIT 常用命令 制造冲突 解决冲突 2.使用 IDEA 解决冲突 产生冲突 解决冲突 1.使用 git 解决冲突 GIT 常用命令 命令作用git clone克隆git init初始化git add 文件名添加到暂存区git commit -m " 日志信息" 文件名提交到本地库git st…

【运维自动化-配置平台】如何通过模板创建集群和模块

通过【每天掌握一个功能点】配置平台如何创建业务机拓扑(集群-模块)我们知道了直接创建集群和模块的操作方法,直接创建的方式适合各集群模块都相对独立的场景,那大量的、标准规范的集群模块如何快速创建呢,这里就引入了…

条件生成对抗网络(cGAN)在AI去衣技术中的应用探索

随着深度学习技术的飞速发展,生成对抗网络(GAN)作为其中的一个重要分支,在图像生成、图像修复等领域展现出了强大的能力。其中,条件生成对抗网络(cGAN)通过引入条件变量来控制生成模型的输出&am…

面试十五 容器

一、vector容器 template<typename T> class Allocator{ public:T* allocator(size_t size){// 负责内存开辟return (T*)malloc(sizeof(T) * size);}void deallocate(void * p){free(p);}void construct(T*p,const T&val){// 定位newnew (p) T(val);}void destroy(…

Golang对接Ldap(保姆级教程:概念搭建实战)

Golang对接Ldap&#xff08;保姆级教程&#xff1a;概念&搭建&实战&#xff09; 最近项目需要对接客户的LDAP服务&#xff0c;于是趁机好好了解了一下。LDAP实际是一个协议&#xff0c;对应的实现&#xff0c;大家可以理解为一个轻量级数据库。用户查询。比如&#xff…

DiT论文精读Scalable Diffusion Models with Transformers CVPR2023

Scalable Diffusion Models with Transformers CVPR2023 Abstract idea 将UNet架构用Transformer代替。并且分析其可扩展性。 并且实验证明通过增加transformer的宽度和深度&#xff0c;有效降低FID 我们最大的DiT-XL/2模型在classconditional ImageNet 512、512和256、256基…

switch语句深讲

一。功能 1.选择&#xff0c;由case N:完成 2.switch语句本身没有分支功能&#xff0c;分支功能由break完成 二。注意 1.switch语句如果不加break&#xff0c;在一次判断成功后会执行下面全部语句并跳过判断 2.switch的参数必须是整形或者是计算结果为整形的表达式,浮点数会…

centos 7 yum install -y nagios

centos 7 systemctl disable firewalld --now vi /etc/selinux/config SELINUXdisabled yum install -y epel-release httpd nagios yum install -y httpd nagios systemctl enable httpd --now systemctl enable nagios --now 浏览器 IP/nagios 用户名&#xff1a;…
最新文章