---
title: "使用 SafeKit 实现 PostgreSQL 高可用性：安装 postgresql.safe 模块以进行故障转移"
canonical: "https://safekit.eviden.com/zh-hans/quick-install/safekit-quick-installation-guide-with-postgresql/"
description: "为 SafeKit 部署 postgresql.safe 模块，以在 Windows 和 Linux 上启用 PostgreSQL 的同步实时复制和自动故障转移。本指南将引导您在没有共享存储的情况下为关键应用程序设置 2 节点 SANless 集群。"
category: "quick-install"
lang: "zh-hans"
topics: "PostgreSQL 高可用快速安装指南, SafeKit 高可用性限制, SafeKit / PostgreSQL 解决方案概述, 在 Windows 和 Linux 上安装 SafeKit / PostgreSQL 解决方案 (postgresql.safe), SafeKit / PostgreSQL解决方案的逐步配置, SafeKit镜像解决方案演示"
---

# SafeKit 的 PostgreSQL 高可用性：安装 postgresql.safe 模块以进行故障转移 {#postgresql-high-availability-with-safekit-install-the-postgresqlsafe-module-for-failover}

## PostgreSQL 高可用快速安装指南 {#quick-guide}

本指南解释了如何设置 **镜像簇** 对于PostgreSQL使用SafeKit，确保自动故障转移和同步复制，无需共享存储。 

如需帮助，您可以使用 [SafeKit AI 🤖](https://safekit.eviden.com/zh-hans/zh-hans/resources/safekit-support/).

### 1. 概述

  * **架构：** 使用双节点系统（主/辅助）。
  * **数据保护：** 实现实时同步复制 **零数据丢失** （RPO=0）。

### 2. 安装

  * **软件：** 在两台服务器上安装 SafeKit 引擎。
  * **模块：** 下载预先配置好的 `postgresql.safe.safe` 应用模块。

### 3. 配置

  * **网络控制台：** 配置包含 PostgreSQL 文件的特定文件夹。
  * **监控：** 开始监视和保护 PostgreSQL 应用程序。

## SafeKit 高可用性限制 {#safekit-ha-limitations}

限制 / 要求 | 原因与影响 | 推荐替代方案  
---|---|---  
复制大小：数 TB |  故障后的重新同步时间 ([步骤 3](https://safekit.eviden.com/architectures/file-replication-byte-level-with-failover-mirror-cluster/product/#safekit-mirror-cluster))： <br>• 1 Gb/s 网络 ≈ 3 小时 / TB<br>• 10 Gb/s 网络 ≈ 1 小时 / TB (取决于磁盘写入性能)  |  • 使用[外部共享存储](https://safekit.eviden.com/best-practises/san-vs-nas-shared-storage-for-a-failover-cluster/) (更昂贵、更复杂)。    
文件数量：< 1,000,000 个文件 |  • 故障后的重新同步时间性能 ([步骤 3](https://safekit.eviden.com/architectures/file-replication-byte-level-with-failover-mirror-cluster/product/#safekit-mirror-cluster))。<br>• 检查两个节点之间每个文件所需的时间。  |  • 将要复制的大量文件放在虚拟硬盘 / 虚拟机中。<br>• 在这种情况下，将仅复制和重新同步代表虚拟硬盘 / 虚拟文件的文件。    
故障转移容量：≤ 32 个虚拟机 (VM) |  • 每个虚拟机在独立的镜像模块中运行。<br>• 在同一集群上运行的镜像模块最多 32 个。  |  • 使用外部共享存储和其他虚拟机集群解决方案 (更昂贵、更复杂)。    
网络架构：远程站点之间的 LAN/VLAN 网络 |  • 具有同一子网中 2 个节点的[虚拟 IP 地址](https://safekit.eviden.com/best-practises/how-a-virtual-ip-address-works/)自动故障转移。<br>• 用于重新同步的良好带宽 ([步骤 3](https://safekit.eviden.com/architectures/file-replication-byte-level-with-failover-mirror-cluster/product/#safekit-mirror-cluster))。<br>•  [同步复制](https://safekit.eviden.com/best-practises/synchronous-replication-vs-asynchronous-replication/)的低延迟：通常 < 5 ms RTT；更高值应根据应用程序的写入速率进行验证。  |  • 如果 2 个节点位于 2 个子网中，请使用[虚拟 IP 地址负载均衡器](https://safekit.eviden.com/best-practises/how-a-virtual-ip-address-works/) (SafeKit 支持，尤其是在云端)。<br>• 对于高延迟网络，请使用带有异步复制的备份解决方案。

 

## SafeKit / PostgreSQL 解决方案概述 {#overview-of-the-safekit--postgresql-solution}

解决方案描述如下：**💡[最简单的 PostgreSQL 高可用性：2 节点同步复制和故障转移](<https://safekit.eviden.com/zh-hans/solutions/postgresql-high-availability-synchronous-replication-failover/>)**。

## 在 Windows 和 Linux 上安装 SafeKit / PostgreSQL 解决方案 (postgresql.safe) {#installation-of-the-safekit--postgresql-solution-on-windows-and-linux-postgresqlsafe}

### 先决条件 {#prerequisites}

  * 您需要在 2 个节点（虚拟机或物理服务器）上安装 PostgreSQL。

### Windows上的软件包安装

  * 下载并安装免费版本 SafeKit 于 2 Windows 节点。   
注意：免费版本包含 SafeKit 的所有功能。试用结束后，您可以激活永久许可证密钥，而无需卸载软件包。 
  * 完成软件包安装后，选择 **Set console credentials and firewall rules now** 并配置密码 **admin** SafeKit 控制台的用户。   
**在所有节点上设置相同的密码。**
  * 从防病毒扫描中排除 **C:/safekit/** （默认安装目录）和 **所有复制的文件夹** 你要定义的。   
防病毒软件可能面临检测挑战 SafeKit 由于其与操作系统的紧密集成、虚拟IP机制、关键服务的实时复制和重启。 

<a class="btn-download" href="/zh-hans/resources/safekit-free-trial/">下载 SafeKit (Windows) &gt;</a>

### Windows上的模块安装

  * 下载postgresql.safe模块。该模块是免费的。它包含文件 userconfig.xml 和重新启动脚本。
  * 放 **postgresql.safe** 下 **C:/safekit/Application_Modules/generic**.

<a class="btn-download" href="/wp-content/uploads/downloads_safekit/version-82/modules_windows/postgresql.safe" download="postgresql.safe">下载 postgresql.safe (Windows) ></a> 

### Linux上的软件包安装

  * 安装免费版本 SafeKit 于 2 Linux 节点。注：免费试用包含所有 SafeKit 特点。试用结束后，您可以激活永久许可证密钥，而无需卸载软件包。
  * 下载safekit_xx.bin包后，执行解压rpm和safekitinstall脚本，然后执行 **safekitinstall** 脚本
  * 回答 **是的** 防火墙自动配置
  * 设置 Web 控制台的密码和默认用户 **admin**. **在所有节点上设置相同的密码。**

<a class="btn-download" href="/zh-hans/resources/safekit-free-trial/">下载 SafeKit (Linux) &gt;</a>

### Linux上的模块安装

  * 下载postgresql.safe模块。   
该模块是免费的。它包含文件 userconfig.xml 和重新启动脚本。 
  * 放 **postgresql.safe** 下 **/opt/safekit/Application_Modules/generic/**.

<a class="btn-download" href="/wp-content/uploads/downloads_safekit/version-82/modules_linux/postgresql.safe" download="postgresql.safe">下载 postgresql.safe（Linux） &gt;</a>

 

## SafeKit / PostgreSQL解决方案的逐步配置 {#step-by-step-configuration-of-the-safekit--postgresql-solution}

### 先决条件

  * PostgreSQL 应用程序安装在 2 个节点上。
  * 总复制数据限制为几 TB — 除此之外，重新同步时间变得很重要。
  * 节点之间至少 1Gb/s 互连（建议使用 10Gb/s 以加快重新同步速度）。
  * IP 故障转移需要同一 LAN 或扩展 LAN (L2) 上的两个节点 — 不支持路由 L3 网络（🛠️ [ 云负载均衡器 ](https://safekit.eviden.com/resources/safekit-user-guide-82/#Cloud) 除外）。

### 1.启动SafeKit控制台

  * 通过连接到 `http://localhost:9010`，在一个集群节点上的浏览器中启动 Web 控制台。
  * 输入 `admin` 作为用户名和安装期间定义的密码。

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

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

ℹ️ 要保护 Web 控制台，请参阅🛠️ [11\。用户指南中的保护 SafeKit Web 服务](https://safekit.eviden.com/resources/safekit-user-guide-82/#https)。

![启动 SafeKit Web 控制台来配置 PostgreSQL 集群](https://safekit.eviden.com/wp-content/uploads/2024/03/01-login-large.png)

### 2.配置节点地址

  * 输入节点IP地址，按`Tab key`检查连通性并填写节点名称。如果 node1 或 node2 为红色，请检查浏览器与两个节点的连接，并检查两个节点上的防火墙是否有 🛠️ [troubleshooting](https://safekit.eviden.com/resources/safekit-user-guide-82/#Troubleshooting)。
  * 然后，单击“`Save and apply`”保存配置。
  * 检查两个节点上的 `Success` ✅ 消息。
  * 如果配置 `Failure` ❌ 发生在一个节点上，请打开该节点的 ▼ 折叠面板并查看消息。请注意，您可以使用 SafeKit AI 🤖 寻求帮助。

ℹ️ 如果需要，您可以添加一个新的 `LAN and nodes`（第一个 ➕）来创建第二个心跳和专用复制网络。

ℹ️如果点击`Advanced configuration`，则会显示`cluster.xml`文件。该文件由控制台自动填充并部署在节点上。

![输入PostgreSQL集群的节点](https://safekit.eviden.com/wp-content/uploads/2024/03/02-cluster-edit.png)

### 3. 选择模块

  * 在`New module`中，单击`postgresql.safe`模块。

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

ℹ️ 控制台寻找 `xxx.safe` 在 `Application_Modules/generic/` 连接节点上的目录（`node1`）如果您在安装过程中放置了一个模块。

![选择PostgreSQL的模块](https://safekit.eviden.com/wp-content/uploads/2024/03/04-module-new.png)

### 4. 配置模块

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

ℹ️如果点击`Advanced configuration`，则会显示`userconfig.xml`文件。该文件由控制台自动填充，并使用重新启动脚本部署在节点上。

ℹ️ 在云部署中，您不需要配置虚拟 IP 地址在 SafeKit。虚拟的 IP 由 🛠️ 管理 [云负载均衡器级别](https://safekit.eviden.com/resources/safekit-user-guide-82/#Cloud)。

ℹ️ 当您涂抹 SafeKit 配置，将 `startup type` 服务的数量自动设置为 `Manual` 在 Windows 服务。这可以确保服务不会在系统启动时自动启动，而是仅在模块本身启动时启动（这同样适用于 Linux）。

![输入PostgreSQL模块设置](https://safekit.eviden.com/wp-content/uploads/2025/05/05-module-mirror-edit-config-3.png)

### 5. 编辑脚本（可选）

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

![输入PostgreSQL模块设置](https://safekit.eviden.com/wp-content/uploads/2026/09/28-module-edit-script.png)

### 6.通讯加密（可选）

  * 保持节点之间的通信加密。

![PostgreSQL模块的通信加密](https://safekit.eviden.com/wp-content/uploads/2025/05/07-module-encryption-1.png)

### 7.保存并应用

  * `Save and apply` 两个节点上的配置和脚本。

![保存并应用 PostgreSQL 模块配置](https://safekit.eviden.com/wp-content/uploads/2025/05/08-module-save-1.png)

### 8.验证配置成功

  * 检查两个节点上的 `Success` ✅ 消息，然后单击 `Monitor modules`。
  * 如果配置 `Failure` ❌ 发生在一个节点上，请打开该节点的 ▼ 折叠面板并查看消息。请注意，您可以使用 SafeKit AI 🤖 寻求帮助。

⚠️在Linux上，如果复制的目录是挂载点，这一步可能会报错。🛠️[解决问题见SK-0030](https://github.com/FR-LES-SAFEKIT-DEV/safekit-packages/releases/download/v8.2/SafeKit_8.2_Knowledge_Base.pdf)。

![检查PostgreSQL模块配置是否成功](https://safekit.eviden.com/wp-content/uploads/2025/05/09-module-save-check-1.png)

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

  * 如果节点 1 具有最新的复制目录，请选择它并 ⋯ `Force start` ▶ `As primary`。

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

⚠️ 如果您做出错误的选择，您将面临在两个节点上同步过时数据的风险。

⚠️ 还假设 PostgreSQL 应用程序在节点 1 上停止，以便 SafeKit 安装复制机制，然后在 `start_prim` 脚本中启动该应用程序。

⚠️后续启动使用`Start`：SafeKit保留最新的服务器。首次启动或异常操作期间启动`As primary`是特殊启动。

![使用最新数据作为主节点启动 PostgreSQL](https://safekit.eviden.com/wp-content/uploads/2024/03/10-monitoring-mirror-stop-stop-prim.png)

### 10.等待过渡到ALONE（绿色）

  * 节点 1 应达到 ALONE（绿色）状态，这意味着虚拟 IP 已设置并且 `start_prim` 脚本已在节点 1 上执行。

⚠️如果未到达ALONE（绿色）或者应用未启动，请通过节点1的[模块日志🖼️](https://safekit.eviden.com/wp-content/uploads/2024/03/24-module-log-script.png)分析原因。

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

⚠️ 如果集群处于 `WAIT (red) not uptodate, STOP (red) not uptodate` 状态，则停止 WAIT 节点，[ 强制其作为主节点启动 🖼️](https://safekit.eviden.com/wp-content/uploads/2024/03/10-monitoring-mirror-stop-stop-prim.png)。

![第一个 PostgreSQL 节点作为主节点启动并成为 ALONE](https://safekit.eviden.com/wp-content/uploads/2024/03/12-monitoring-alone-stop.png)

### 11.启动节点2

  * ⋯ `Start` 节点 2 及其上下文菜单。
  * 等待 SECOND（绿色）状态。

ℹ️ 节点 2 保持 SECOND（橙色）状态，同时重新同步复制的目录（从节点 1 复制到节点 2）。

  * 这可能需要一段时间，具体取决于复制目录中要重新同步的文件大小和网络带宽。
  * 要查看复制进度，请查看节点 2 的 [ 模块日志🖼️](https://safekit.eviden.com/wp-content/uploads/2024/03/27-module-log-reintegration.png) 和 [ 复制资源🖼️](https://safekit.eviden.com/wp-content/uploads/2024/03/26-replication-resources-reintegration.png)。使用 SafeKit AI 🤖 获取日志消息方面的帮助。

![启动PostgreSQL节点2](https://safekit.eviden.com/wp-content/uploads/2024/03/13-monitoring-alone-stop-start.png)

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

  * 检查集群是否为绿色/绿色，其中 PostgreSQL 服务在 PRIM 节点上运行，而不在 SECOND 节点上运行。

在此状态下，仅实时复制文件内部的更改。

⚠️ 作为 PostgreSQL 服务客户端的组件必须配置虚拟 IP 地址。可以使用 DNS 名称完成配置（如果已创建 DNS 名称并与虚拟 IP 地址关联）。

![PostgreSQL 节点 2 是 SECOND（绿色）](https://safekit.eviden.com/wp-content/uploads/2024/03/14-monitoring-prim-second.png)

### 13. 测试

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

⚠️如果 ALONE （绿色）未达到 node2 或者如果应用程序未启动，请使用以下命令分析原因 [模块日志🖼️](https://safekit.eviden.com/wp-content/uploads/2024/03/38-module-log-script-second.png) 节点 2 的。

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

⚠️ 

  * 如果一切正常，则启动 node1，这将重新同步 node2 的复制目录。
  * 如果出现问题，请停止 node2 和 [强制启动作为主要🖼️](https://safekit.eviden.com/wp-content/uploads/2024/03/10-monitoring-mirror-stop-stop-prim.png) 的 node1，它将使用停止时的本地健康数据重新启动。

ℹ️ 在 [SafeKit 在线培训](https://safekit.eviden.com/resources/safekit-on-line-training/) 中查找更多详细信息和视频。

![停止 PostgreSQL 模块上的 PRIM 服务器](https://safekit.eviden.com/wp-content/uploads/2024/03/16-monitoring-prim-second-stop.png)

### 14. 支持

  * 要获得支持，请获取 2 个 SafeKit `Snapshots`（2 个 .zip 文件），每个节点一个。

ℹ️ [ 有关支持的更多信息请参见此处 ](https://safekit.eviden.com/resources/safekit-support/)。

![拍摄 PostgreSQL 快照以获取支持](https://safekit.eviden.com/wp-content/uploads/2024/03/30-snapshots-mirror.png)

 

## SafeKit镜像解决方案演示 {#demonstration-of-the-safekit-mirror-solution}

### SafeKit 视频：应用程序级集群 (8:47) {#demo-mirror-ha-cluster}

在本视频中，了解 SafeKit 如何在没有 SAN 复杂性的情况下实现镜像 HA 集群。虽然此演示使用 Microsoft SQL Server，但该解决方案对于其他数据库和应用程序的工作方式相同。

### 章节

  1. 🎬 [2 个带有 SQL Server 的节点](https://www.youtube.com/watch?v=mGwEguDnnH0&t=0s) (0:32)
  2. 🎬 [配置集群和mirror.safe模块](https://www.youtube.com/watch?v=mGwEguDnnH0&t=32s) (3:58)
  3. 🎬 [启动并测试 SQL 复制、迁移、崩溃时的故障转移](https://www.youtube.com/watch?v=mGwEguDnnH0&t=270s) (4:17)

### 逐步实施

  * 🛠️ [阅读有关在 Windows 上设置镜像集群的指南](https://safekit.eviden.com/quick-install/safekit-quick-installation-guide-for-a-new-windows-application-with-real-time-replication-and-failover/)
  * 🛠️ [阅读有关在 Linux 上设置镜像集群的指南](https://safekit.eviden.com/quick-install/safekit-quick-installation-guide-for-a-new-linux-application-with-real-time-replication-and-failover/)

