第 4 章 使用 IdM 备份恢复数据丢失

您可以使用 ipa-restore 工具将 IdM 服务器恢复到 IdM 备份中捕获的以前的状态。

4.1. 从 IdM 备份中恢复的时间

您可以通过从 IdM 备份中恢复来响应几个灾难情况:

  • 对 LDAP 内容进行了不必要的更改:条目被修改或删除,在整个部署中复制这些更改,并且您要恢复这些更改。只恢复数据备份会将 LDAP 条目返回到之前的状态,而不影响 IdM 配置本身。
  • 基础架构丢失或丢失所有 CA 实例: 如果灾难机构的所有证书颁发机构副本,部署无法通过部署额外的服务器来重建其自身。在这种情况下,恢复 CA 副本的备份并从中构建新副本。
  • 隔离服务器的升级失败: 操作系统仍然可以正常工作,但 IdM 数据被破坏,因此您要将 IdM 系统恢复到已知良好状态。红帽建议您使用技术支持诊断并排除这个问题。如果这些步骤失败,则从全服务器备份中恢复。

    重要

    硬件或升级失败的首选解决方案是从副本中重建丢失的服务器。如需更多信息,请参阅恢复使用复制的服务器丢失

4.2. 从 IdM 备份中恢复时的注意事项

如果您使用 ipa-backup 工具创建了备份,您可以将 IdM 服务器或 LDAP 内容恢复到执行备份时的状态。

以下是从 IdM 备份中恢复时的主要注意事项:

  • 您只能在符合最初创建备份的服务器配置的服务器中恢复备份。服务器必须具有:

    • 相同的主机名
    • 相同的 IP 地址
    • 同一版本的 IdM 软件
  • 如果很多 IdM 服务器被恢复,恢复的服务器就成为 IdM 的唯一信息来源。其它服务器必须从恢复的服务器中重新初始化。
  • 因为上一次备份后创建的数据都将丢失,所以不要使用备份和恢复解决方案进行正常的系统维护。
  • 如果服务器丢失,红帽建议重建服务器,方法是将其重新安装为副本,而不是从备份中恢复。创建一个新的副本会保留来自当前工作环境中的数据。如需更多信息,请参阅准备使用复制进行服务器丢失
  • 备份和恢复功能只能从命令行管理,且在 IdM Web UI 中不可用。
  • 您无法从位于 /tmp/var/tmp 目录中的备份文件恢复。IdM Directory 服务器使用 PrivateTmp 目录,无法访问操作系统通常可用的 /tmp/var/tmp 目录。
提示

从备份中恢复需要目标主机上的软件(RPM)版本与执行备份时安装的相同。因此,红帽建议从虚拟机快照而不是备份中恢复。如需更多信息,请参阅使用虚拟机快照恢复数据丢失

4.3. 从备份中恢复 IdM 服务器

以下流程描述了从 IdM 备份中恢复 IdM 服务器或者其 LDAP 数据。

图 4.1. 本例中使用的复制拓扑

表 4.1. 本例中使用的服务器命名惯例

服务器主机名功能

server1.example.com

需要从备份中恢复的服务器。

caReplica2.example.com

连接到 server1.example.com 主机的证书颁发机构(CA)副本。

replica3.example.com

连接到 caReplica2.example.com 主机的副本。

先决条件

  • 您可以使用 ipa-backup 程序为 IdM 服务器生成完整服务器或者只使用数据备份。请参阅 创建备份
  • 您的备份文件不在 /tmp/var/tmp 目录中。
  • 在从全服务器备份中执行全服务器恢复前,请从服务器中 卸载 IdM,并使用之前相同的服务器配置重新安装 IdM。

流程

  1. 使用 ipa-restore 程序恢复全服务器或者只使用数据备份。

    • 如果备份目录位于默认 /var/lib/ipa/backup/ 位置,则只输入目录的名称:

      [root@server1 ~]# ipa-restore ipa-full-2020-01-14-12-02-32
    • 如果备份目录不在默认位置,请输入其完整路径:

      [root@server1 ~]# ipa-restore /mybackups/ipa-data-2020-02-01-05-30-00
      注意

      ipa-restore 工具自动检测目录包含的备份类型,并默认执行同一类型的恢复。要从完全服务器备份中只执行对数据的恢复,在 ipa-restore 命令中添加 --data 选项:

      [root@server1 ~]# ipa-restore --data ipa-full-2020-01-14-12-02-32
  2. 输入 Directory Manager 密码。

    Directory Manager (existing master) password:
  3. 输入 yes 以确认备份中的当前数据已覆盖。

    Preparing restore from /var/lib/ipa/backup/ipa-full-2020-01-14-12-02-32 on server1.example.com
    Performing FULL restore from FULL backup
    Temporary setting umask to 022
    Restoring data will overwrite existing live data. Continue to restore? [no]: yes
  4. ipa-restore 实用程序禁用在所有可用的服务器中复制:

    Each master will individually need to be re-initialized or
    re-created from this one. The replication agreements on
    masters running IPA 3.1 or earlier will need to be manually
    re-enabled. See the man page for details.
    Disabling all replication.
    Disabling replication agreement on server1.example.com to caReplica2.example.com
    Disabling CA replication agreement on server1.example.com to caReplica2.example.com
    Disabling replication agreement on caReplica2.example.com to server1.example.com
    Disabling replication agreement on caReplica2.example.com to replica3.example.com
    Disabling CA replication agreement on caReplica2.example.com to server1.example.com
    Disabling replication agreement on replica3.example.com to caReplica2.example.com

    然后该工具将停止 IdM 服务,恢复备份并重启服务:

    Stopping IPA services
    Systemwide CA database updated.
    Restoring files
    Systemwide CA database updated.
    Restoring from userRoot in EXAMPLE-COM
    Restoring from ipaca in EXAMPLE-COM
    Restarting GSS-proxy
    Starting IPA services
    Restarting SSSD
    Restarting oddjobd
    Restoring umask to 18
    The ipa-restore command was successful
  5. 重新初始化连接到恢复的服务器的所有副本:

    1. 列出 domain 后缀的所有复制拓扑片段,记录涉及恢复的服务器的拓扑片段。

      [root@server1 ~]# ipa topologysegment-find domain
      ------------------
      2 segments matched
      ------------------
        Segment name: server1.example.com-to-caReplica2.example.com
        Left node: server1.example.com
        Right node: caReplica2.example.com
        Connectivity: both
      
        Segment name: caReplica2.example.com-to-replica3.example.com
        Left node: caReplica2.example.com
        Right node: replica3.example.com
        Connectivity: both
      ----------------------------
      Number of entries returned 2
      ----------------------------
    2. 使用恢复的服务器为所有拓扑片段重新初始化 domain 后缀。

      在这个示例中,使用来自 server1 的 数据重新初始化 caReplica2

      [root@caReplica2 ~]# ipa-replica-manage re-initialize --from=server1.example.com
      Update in progress, 2 seconds elapsed
      Update succeeded
    3. 移至证书颁发机构数据,列出 ca 后缀的所有复制拓扑片段。

      [root@server1 ~]# ipa topologysegment-find ca
      -----------------
      1 segment matched
      -----------------
        Segment name: server1.example.com-to-caReplica2.example.com
        Left node: server1.example.com
        Right node: caReplica2.example.com
        Connectivity: both
      ----------------------------
      Number of entries returned 1
      ----------------------------
    4. 重新初始化连接到恢复的服务器的所有 CA 副本。

      在这个示例中,使用来自 server1 的数据执行caReplica2csreplica 重新初始化 。

      [root@caReplica2 ~]# ipa-csreplica-manage re-initialize --from=server1.example.com
      Directory Manager password:
      
      Update in progress, 3 seconds elapsed
      Update succeeded
  6. 继续通过复制拓扑移至,重新初始化连续副本,直到所有服务器都使用恢复的服务器中的数据进行了更新 server1.example.com

    在这个示例中,我们只需要使用来自 caReplica2 的数据,在replica3 上重新初始化 domain 后缀:

    [root@replica3 ~]# ipa-replica-manage re-initialize --from=caReplica2.example.com
    Directory Manager password:
    
    Update in progress, 3 seconds elapsed
    Update succeeded
  7. 清除 SSSD 在每台服务器上的缓存,以避免因为数据无效而导致身份验证问题:

    1. 停止 SSSD 服务:

      [root@server ~]# systemctl stop sssd
    2. 从 SSSD 中删除所有缓存的内容:

      [root@server ~]# sss_cache -E
    3. 启动 SSSD 服务:

      [root@server ~]# systemctl start sssd
    4. 重启服务器。

其它资源

  • ipa-restore (1) man page 还详细论述了如何在恢复过程中处理复杂复制场景。

4.4. 从加密备份中恢复

这个过程从加密的 IdM 备份恢复 IdM 服务器。ipa-restore 工具会自动检测 IdM 备份是否加密,并使用 GPG2 根密钥环恢复它。

先决条件

  • GPG 加密的 IdM 备份。请参阅 创建加密的 IdM 备份
  • LDAP Directory Manager 密码
  • 创建 GPG 密钥时使用的口令

流程

  1. 如果您在创建 GPG2 密钥时使用自定义密钥环位置,请确定将 $GNUPGHOME 环境变量设置为那个目录。请参阅创建 GPG2 密钥

    [root@server ~]# echo $GNUPGHOME
    /root/backup
  2. 提供 ipa-restore 工具以及备份目录的位置。

    [root@server ~]# ipa-restore ipa-full-2020-01-13-18-30-54
    1. 输入 Directory Manager 密码。

      Directory Manager (existing master) password:
    2. 输入您创建 GPG 密钥时使用的密码短语。

      ┌────────────────────────────────────────────────────────────────┐
      │ Please enter the passphrase to unlock the OpenPGP secret key:  │
      │ "GPG User (first key) <root@example.com>"                      │
      │ 2048-bit RSA key, ID BF28FFA302EF4557,                         │
      │ created 2020-01-13.                                            │
      │                                                                │
      │                                                                │
      │ Passphrase: <passphrase>                                       │
      │                                                                │
      │         <OK>                                    <Cancel>       │
      └────────────────────────────────────────────────────────────────┘
  3. 重新初始化连接到恢复的服务器的所有副本。请参阅 从备份中恢复 IdM 服务器

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。