搜索 SafeKit

使用 SafeKit 实现 MySQL 高可用性:安装 mysql.safe 模块以实现故障转移

MySQL 高可用性快速安装指南

本指南介绍如何使用 SafeKit 为 MySQL 设置 mirror 集群,确保自动故障转移和同步复制,而无需共享存储。

如需帮助,您可以使用SafeKit AI 🤖。

1. 概述

  • 架构: 采用双节点系统(主/备)。
  • 数据保护: 实现实时同步复制,实现零数据丢失(RPO = 0)。

2. 安装

  • 软件: 在两台服务器上安装 SafeKit 引擎。
  • 模块: 下载预配置的 mysql.safe 应用程序模块。

3. 配置

  • Web 控制台: 配置包含 MySQL 文件的特定文件夹。
  • 监控: 开始监控和保护 MySQL 应用程序。

SafeKit 高可用性限制

限制/要求原因与影响推荐替代方案
复制大小:几 TB故障后的重新同步时间(步骤 3):
• 1 Gb/s 网络 ≈ 3 小时/TB
• 10 Gb/s 网络 ≈ 1 小时/TB(取决于磁盘写入性能)
• 使用外部共享存储(更昂贵,更复杂)。
文件数量:< 1,000,000 个文件• 故障后的重新同步时间性能(步骤 3)。
• 比较两个节点之间每个文件所需的时间。
• 将要复制的许多文件放入虚拟硬盘/虚拟机中。
• 在这种情况下,只有代表虚拟硬盘/虚拟机的那些文件会被复制和重新同步。
故障转移容量:≤ 32 台虚拟机• 每个虚拟机都在独立的 mirror 模块中运行。
• 同一集群中最多可运行 32 个 mirror 模块。
• 使用外部共享存储和另一个虚拟机集群解决方案(更昂贵,更复杂)。
网络架构:远程站点之间的局域网/虚拟局域网• 虚拟 IP 地址在同一子网中的 2 个节点之间自动故障转移。
• 良好的带宽,用于重新同步(步骤 3)。
• 同步复制的低延迟:通常 < 5 毫秒 RTT;应根据应用程序的写入速率验证较高值。
• 如果两个节点位于不同的子网中(云中常见),请使用其他重新路由选项:负载均衡器、云提供商 CLI、BGP 或 DNS 重定向。
• 对于高延迟网络,请使用具有异步复制的备份解决方案。

SafeKit/MySQL 解决方案概述

解决方案在此处介绍:💡 最简单的 MySQL 高可用性:2 节点同步复制和故障转移。

在 Windows 和 Linux 上安装 SafeKit/MySQL 解决方案 (mysql.safe)

先决条件

  • 您需要在 2 个节点(虚拟机或物理服务器)上安装 MySQL。

在 Windows 上安装软件包

  • 在两台 Windows 节点上下载并安装 SafeKit 免费版。
    注意:免费版本包含所有 SafeKit 功能。试用期结束后,您无需卸载软件包即可激活永久许可证密钥。
  • 完成软件包安装后,选择 “立即设置控制台凭据和防火墙规则”,并为 SafeKit 控制台的 admin 用户配置密码。
    在所有节点上设置相同的密码。
  • C:/safekit/(默认安装目录)和您将要定义的所有复制文件夹从防病毒扫描中排除。
    由于 SafeKit 与操作系统紧密集成、采用虚拟 IP 机制、实时复制以及关键服务重启等特性,杀毒软件可能会面临检测挑战。

下载 SafeKit (Windows) >

在 Windows 上安装模块

  • 下载 mysql.safe 模块。该模块免费。它包含 userconfig.xml 文件和重启脚本。
  • 将 mysql.safe 放在 C:/safekit/Application_Modules/generic 目录下。

下载 mysql.safe (Windows) >

在 Linux 上安装软件包

  • 在 2 个 Linux 节点上安装免费版 SafeKit。注意:免费试用版包含所有 SafeKit 功能。试用期结束后,您无需卸载软件包即可激活永久许可证密钥。
  • 下载 safekit_xx.bin 包后,运行该包以提取 rpm 和 safekitinstall 脚本,然后运行 safekitinstall 脚本
  • 回答 “是” 以启用防火墙自动配置
  • 为 Web 控制台和默认用户 admin 设置密码。在所有节点上设置相同的密码。

下载 SafeKit (Linux) >

在 Linux 上安装模块

  • 下载 mysql.safe 模块。
    该模块是免费的。它包含 userconfig.xml 文件和重启脚本。
  • 将 mysql.safe 放在 /opt/safekit/Application_Modules/generic/ 目录下。

下载 mysql.safe (Linux) >

SafeKit/MySQL 服务器解决方案的分步配置

先决条件

  • MySQL 程序安装在 2 个节点上。
  • 复制数据的总量限制在几 TB 以内,超出此范围,重新同步所需的时间将变得非常长。
  • 节点之间的最小互连速度为 1Gb/s(建议使用 10Gb/s 以实现更快的重新同步)。
  • IP 故障转移要求两个节点位于同一 LAN 或扩展 LAN (L2) 上 — 不支持路由 L3 网络(🛠️ 云负载均衡器除外)。

1. 启动 SafeKit 控制台

  • 在某个集群节点上,通过连接到 http://localhost:9010 在浏览器中启动 Web 控制台。
  • 输入用户名 admin 和安装过程中定义的密码。

您也可以在集群外部工作站的浏览器中运行控制台。

⚠️ SafeKit 的配置通过单个浏览器在两个节点上完成。

ℹ️ 要保护 Web 控制台,请参阅用户指南中的 🛠️ 11. 保护 SafeKit Web 服务。

启动 SafeKit Web 控制台以配置 MySQL 集群

2. 配置节点地址

  • 输入节点 IP 地址,按 Tab key 检查连接性并填写节点名称。如果 node1 或 node2 为红色,请检查浏览器与这两个节点的连接性,并检查这两个节点的防火墙以进行 🛠️ 故障排除。
  • 然后,单击 Save and apply 以保存配置。
  • 检查两个节点上的 Success ✅ 消息。
  • 如果某个节点上发生配置 Failure ❌,请打开该节点的▼手风琴,然后查看消息。请注意,您可以使用 SafeKit AI 🤖 寻求帮助。

ℹ️ 如果您愿意,可以添加新的 LAN and nodes(首先 ➕),以创建第二个心跳和专用复制网络。

ℹ️ 如果您单击 Advanced configuration,则会显示 cluster.xml 文件。此文件由控制台自动填充并部署到节点上。

输入 MySQL 集群的节点

3. 选择模块

  • 在 New module 中,单击 mysql.safe ”模块。

ℹ️ 在顶部的蓝色横幅中,🛜 node1 代表控制台连接节点。此节点在需要时将请求中继到 node2。

ℹ️ 如果您在安装期间将模块放置在连接节点(node1)上的 Application_Modules/generic/ 目录中,则控制台会在该目录中搜索 xxx.safe

选择 MySQL 模块

4. 配置模块

  • 在 Module startup at boot 中,选择在启动时自动启动模块,无需延迟。
  • 在 Macros/SERVICES 中,按启动顺序输入应用程序的服务名称,并用逗号分隔。有关Milestone XProtect 服务的直观示例,请参阅此屏幕截图 🖼️。
  • 在 Heartbeat networks 中,您应该有一个用于进行复制的单一心跳网络。如果您在步骤 2 中添加了专用 LAN,那么您可以在专用 LAN 上配置两个带有复制流的心跳。
  • 在 Virtual IP addresses 中,输入虚拟 IP 地址。虚拟 IP 地址是与两个节点的 IP 地址位于同一 IP 网络(同一子网)中的标准 IP 地址。
    必须使用虚拟 IP 地址(或与虚拟 IP 地址关联的 DNS 名称)配置应用程序客户端。
    发生故障时,虚拟 IP 地址会自动切换。
  • 在 Replicated directories 中,设置要复制的目录路径。检查它们是否存在于两个节点上并包含应用程序数据。
    数据和日志复制对于数据库至关重要。
    您可以根据需要创建其他复制目录。
    请参阅此屏幕截图,了解Milestone XProtect SQL 复制的可视化示例 🖼️。
  • 在 Checkers 中,您可以根据需要配置检查器,例如进程监控、自定义检查器、TCP、ping 或裂脑检查器。
    例如,如果进程名称显示在 Monitored processes/services 中,则在发生故障时,它将通过重启操作进行监控。配置错误的进程名称将导致模块在启动后立即停止。

ℹ️ 如果您单击 Advanced configuration,则会显示 userconfig.xml 文件。此文件由控制台自动填充,并通过重启脚本部署到节点上。

ℹ️ 在云部署中,您无需在 SafeKit 中配置虚拟 IP 地址。虚拟 IP 由 🛠️ 云负载均衡器管理。

ℹ️ 应用 SafeKit 配置时,Windows 服务中的服务 startup type 会自动设置为 Manual。这可确保服务在系统启动时不会自动启动,而是在模块本身启动时才启动(Linux 上也适用)。

进入 MySQL 模块设置

5. 编辑脚本(可选)

  • 此步骤是可选的,在大多数情况下可以跳过,因为重启脚本已预先配置为重启上一步中定义的服务。
  • 因此,请直接点击 Next step。
  • start_prim.ps1 按照 SERVICES 列表中指定的顺序启动所有服务,而 stop_prim.ps1 按照相反的顺序停止所有服务。
  • 此外,start_prim.ps1 会检查每个服务的启动情况,如果任何服务未能正确启动,则会停止该模块。

进入 MySQL 模块设置

6. 通信加密(可选)

  • 保持节点间通信的加密。

MySQL 模块的通信加密

7. 保存并应用

  • 在两个节点上 Save and apply 配置和脚本。

保存并应用 MySQL 模块配置

8. 验证配置是否成功

  • 检查两个节点上的 Success ✅ 消息,然后单击 Monitor modules。
  • 如果某个节点上发生配置 Failure ❌,请打开该节点的▼手风琴,然后查看消息。请注意,您可以使用 SafeKit AI 🤖 寻求帮助。

⚠️ 在 Linux 上,如果复制的目录是挂载点,您可能会在此步骤中收到错误。🛠️ 请参阅 SK-0030 来解决此问题。

检查 MySQL 模块配置是否成功

9. 使用最新数据启动节点

  • 如果节点 1 拥有最新的复制目录,请选择它,然后⋯ Force start ▶ As primary。

当节点 2 启动时,所有数据将从节点 1 复制到节点 2。

⚠️ 如果您做出错误的选择,则有可能在两个节点上同步过时的数据。

⚠️ 还假定 MySQL 程序在节点 1 上已停止,以便 SafeKit 安装复制机制,然后在 start_prim 脚本中启动应用程序。

⚠️ 首次启动后,请使用 Start:SafeKit 会保留最新的服务器。首次启动或在特殊操作期间,请使用“启动 As primary。

将包含最新数据的 MySQL 节点启动为主要节点

10. 等待过渡到 ALONE ”(绿色)

  • 节点 1 应达到 ALONE(绿色)状态,这意味着虚拟 IP 已设置,并且 start_prim 脚本已在节点 1 上执行。

⚠️ 如果未达到 ALONE(绿色)或未启动应用程序,请使用节点 1 的模块日志 🖼️分析原因。

  • 单击 node1 的 🔍日志图标,打开模块日志,查找错误消息,例如检查器检测到错误并停止模块。
  • 点击日志中的 start_prim:脚本的输出消息显示在右侧,可以检测到错误,例如服务启动不正确。
  • 使用 SafeKit AI 🤖 获取日志消息方面的帮助。

⚠️ 如果集群处于 WAIT (red) not uptodate, STOP (red) not uptodate 状态,请停止 WAIT 节点并强制将其启动为主节点 🖼️。

第一个 MySQL 节点以主节点身份启动,并成为 ALONE

11. 启动节点 2

  • ⋯使用其上下文菜单 Start 节点 2。
  • 等待 SECOND(绿色)状态。

ℹ️ 节点 2 在重新同步复制目录(从节点 1 复制到节点 2)时保持 SECOND(橙色)状态。

  • 这可能需要一段时间,具体取决于复制目录中要重新同步的文件大小和网络带宽。
  • 要查看复制进度,请参阅节点 2 的模块日志 🖼️和复制资源 🖼️使用 SafeKit AI 🤖 协助处理日志消息。

启动 MySQL 节点 2

12. 验证集群是否正常运行

  • 检查集群是否为绿色/绿色,MySQL 服务是否在 PRIM 节点上运行,而不是在 SECOND 节点上运行。

在此状态下,只有文件内部的更改会实时复制。

⚠️ 作为 MySQL 服务客户端的组件必须配置虚拟 IP 地址。配置可以使用 DNS 名称(如果已创建 DNS 名称并将其与虚拟 IP 地址相关联)。

MySQL 节点 2 为 SECOND(绿色)

13. 测试

  • 向下滚动 PRIM 节点的上下文菜单,然后单击 Stop。
  • 验证 SECOND 节点上是否存在故障转移,该节点应变为 ALONE(绿色)。
  • 在 Windows 上使用 Microsoft 管理控制台 (MMC),或在 Linux 上使用命令行,检查 MySQL 服务的故障转移(在 stop_prim 脚本中停止节点 1 上的服务,并在 start_prim 脚本中启动节点 2 上的服务)。

⚠️ 如果 node2 未达到 ALONE(绿色)状态或应用程序未启动,请使用节点 2 的模块日志 🖼️分析原因。

  • 单击 node2 的 🔍日志图标以打开模块日志,并查找错误消息,例如检测器检测到错误并停止模块。
  • 点击日志中的 start_prim:脚本的输出消息显示在右侧,可以检测到错误,例如服务启动不正确。
  • 使用 SafeKit AI 🤖 获取日志消息方面的帮助。

⚠️

  • 如果一切正常,请在 node1 上启动,这将从 node2 重新同步复制的目录。
  • 如果出现问题,请停止 node2 并强制节点 1 启动为主节点 🖼️,它将使用停止时本地健康的数据重新启动。

ℹ️ 在SafeKit 在线培训中查找更多详细信息和视频。

停止 PRIM 服务器上的 MySQL 模块

14. 支持

  • 如需获取支持,请为每个节点拍摄 2 个 SafeKit Snapshots(2 个 .zip 文件)。

ℹ️ 有关支持的更多信息,请点击此处。

截取 MySQL 快照以获得支持

SafeKit mirror 解决方案演示

SafeKit 视频:应用级集群 (8:47)

在本视频中,您将了解 SafeKit 如何在没有 SAN 复杂性的情况下实现 mirror HA 集群。虽然此演示使用 Microsoft SQL Server,但该解决方案对其他数据库和应用程序也同样适用。

章节

  1. 🎬 两个带有 SQL Server 节点 (0:32)
  2. 🎬 配置集群和 mirror.safe 模块 (3:58)
  3. 🎬 启动和测试 SQL 复制、迁移、崩溃时故障转移 (4:17)

分步实施

🔍 探索 SafeKit

查找有关 SafeKit 功能、架构、视频、文档和免费试用的信息。

资源描述链接
主要功能了解 SafeKit 为何是一种简单且经济高效的高可用性解决方案。探索主要功能
用例了解 SafeKit 如何保持关键应用程序和基础设施的可用性。探索用例
部署模型SafeKit 无需 SAN 或共享存储即可提供高可用性。探索部署模型
高可用性策略比较虚拟机的可用性与应用程序的可用性。比较这两种策略
技术规格查看 SafeKit 集群的技术要求和限制。阅读技术规格
视频观看 SafeKit 配置和自动故障转移的演示。观看技术视频
架构了解 SafeKit mirror 集群如何实时复制文件并处理故障转移。探索 Mirror 架构
架构了解 SafeKit farm 集群如何平衡网络流量并处理故障转移。探索 Farm 架构
产品对比将 SafeKit 与传统的高可用性集群进行比较。比较解决方案
技术资源查找技术文档、下载 SafeKit 并访问免费试用版。访问文档和免费试用版
应用模块使用预配置的 SafeKit 模块为您的应用程序设置高可用性。探索应用模块
SafeKit AI Chat SafeKit AI