使用 Cloud Pak for Data OADP 备份和复原实用程序将联机备份复原到同一集群

重要信息: IBM Cloud Pak® for Data 4.7 版本将于 2025 年 7 月 31 日结束支持 (EOS)。 欲了解更多信息,请参阅 IBM Cloud Pak for Data 版本 4.X 的停止服务公告

IBM Cloud Pak for Data 4.7 版本支持结束之前,升级到 IBM Software Hub 5.1 版本。 更多信息,请参阅 IBM Software Hub 版本 5.1 文档中的升级 IBM Software Hub。

您可以使用 OADP 备份和复原实用程序从同一集群上的联机备份复原 IBM Cloud Pak for Data 实例。

准备工作

从联机备份复原 Cloud Pak for Data 具有以下需求:

  • 所有服务都安装在同一 Cloud Pak for Data 发行版中。

    不支持从不同 Cloud Pak for Data 发行版运行服务版本的部署的联机备份和复原。

  • Cloud Pak for Data control plane 安装在单个项目 (名称空间) 中。
  • Cloud Pak for Data 实例安装在零个或多个系留项目中。
  • 已安装并配置 Cloud Pak for Data OADP 备份和复原实用程序。

关于本任务

此任务所需的许可权
以具有集群管理员权限的用户身份登录。

在复原完成后,不支持联机备份和复原的 Cloud Pak for Data 服务可能无法正常工作。 在这些情况下,必须清除或删除这些服务,然后重新安装这些服务。 更多信息,请参阅恢复 Cloud Pak for Data 在线备份后的恢复后任务

不能将备份复原到 Cloud Pak for Data 实例的其他项目中。

要复原备份,必须以 Kubernetes 方式运行 Cloud Pak for Data OADP 备份和复原实用程序。

如果运行复原命令产生 FailedPartiallyFailed 错误,那么必须清除 Cloud Pak for Data 实例并重新启动复原过程。 有关清理 Cloud Pak for Data 实例的详细信息,请参阅准备恢复 Cloud Pak for Data

最佳实践: 如果您设置环境变量,那么可以在此任务中以完全相同的方式运行命令。 有关指示信息,请参阅 设置安装环境变量

在运行此任务中的命令之前,请确保确定环境变量的来源。

过程

  1. 检查将阻止成功复原的问题:
    cpd-cli oadp restore precheck \
    --backup-names=<backup_name1,backup_name2>
    此命令检查问题,例如:
    • OADP 项目不存在。
    • Velero 实例未在运行或其 pod 运行不正常。
    • OADP 备份存储位置定制资源未处于 Available 状态。
    • 指定的备份名称不存在。
    • 备份未成功完成,或者有错误或警告。
    • 存在与备份关联的项目。

    有关命令执行的检查的完整列表,请参阅 oadp restore precheck

  2. 复原 Cloud Pak for Data 持久卷声明 (PVC) 和卷数据,提供卷备份名称并指定复原名称:
    cpd-cli oadp restore create <restore_name1> \
    --from-backup=<volume_backup_name> \
    --skip-hooks \
    --log-level=debug \
    --verbose
    提示: 如果要复原 Db2®Watson Knowledge Catalog,请添加 --scale-wait-timeout 15m 以确保复原命令成功完成。

复原操作程序的步骤

  1. 还原 Kubernetes 资源定义、项目、OperatorGroups, 和权限,提供 Kubernetes 资源备份名称并指定还原名称:
    cpd-cli oadp restore create <restore_name2> \
    --from-backup=<kub_resource_backup> \
    --include-resources='namespaces,operatorgroups,roles,rolebindings,serviceaccounts,securitycontextconstraints.security.openshift.io' \
    --include-cluster-resources=true \
    --skip-hooks \
    --log-level=debug \
    --verbose
  2. 复原 Kubernetes CommonService 定制资源,提供 Kubernetes 资源备份名称并指定复原名称:
    cpd-cli oadp restore create <restore_name3> \
    --from-backup=<kub_resource_backup> \
    --include-resources='namespacescopes,commonservices' \
    --include-cluster-resources=true \
    --skip-hooks \
    --log-level=debug \
    --verbose
    
    注: 如果此命令导致 PartiallyFailed 复原状态发生错误,如以下示例中所示,那么该错误指示您正在尝试在尚未完成 Cloud Pak for Data 运算符对 Cloud Pak for Data 操作数项目的可视性的集群上进行复原。
    Errors:
      Velero:     <none>
      Cluster:    <none>
      Namespaces:
        cpd-instance:  error restoring commonservices.operator.ibm.com/cpd-instance/common-service: admission webhook "ibm-common-service-validating-webhook.operator.ibm.com" denied the request: Services Namespace: cpd-instance is not allowed to be configured in namespace cpd-instance
    
  3. 复原 Kubernetes cpd-operators configmap 资源,提供 Kubernetes 资源备份名称并指定复原名称:
    cpd-cli oadp restore create <restore_name4> \
    --from-backup=<kub_resource_backup> \
    --include-resources='configmaps' \
    --selector 'app=cpd-operators-backup' \
    --skip-hooks \
    --log-level=debug \
    --verbose
  4. 复原 (重新创建) 操作程序:
    ./cpd-operators.sh restore \
    --foundation-namespace ${PROJECT_CPD_INST_OPERATORS} \
    --operators-namespace ${PROJECT_CPD_INST_OPERATORS}
    注意: IBM Cloud Pak foundational services 操作符与 Cloud Pak for Data 操作符安装在同一命名空间。

    此步骤将还原操作员 CatalogSource, 订阅、OperandRequest, 和 NamespaceScope 自定义资源,在继续还原过程之前,必须验证这些资源。

  5. 验证操作员预订和可视性。
    1. Cloud Pak for Data 运算符和操作数项目中查询定制资源的状态:
      oc get sub -n ${PROJECT_CPD_INST_OPERATORS} -o jsonpath="{range .items[*]}{.metadata.name}{' - currentCSV: '}{.status.currentCSV}{' - installedCSV: '}{.status.installedCSV}{'\n'}{end}"
      oc get operandrequest -A
    2. 验证 Cloud Pak for Data 操作程序可视性的复原:
      oc get nss -n ${PROJECT_CPD_INST_OPERATORS} common-service -o jsonpath='{.status.validatedMembers} {"\n"}' 

      此命令的输出必须是包含 ${PROJECT_CPD_INST_OPERATORS} 和所有操作数项目的数组。

复原操作数的步骤

  1. 复原其余 Kubernetes 定制资源,提供 Kubernetes 资源备份名称并指定复原名称:
    提示: 其中许多 Kubernetes 资源是在复原 (重新创建) 操作程序步骤中创建的。
    cpd-cli oadp restore create <restore_name5> \
    --from-backup=<kub_resource_backup> \
    --include-resources='secrets,configmaps,certificates.cert-manager.io,certificates.certmanager.k8s.io,issuers.cert-manager.io,issuers.certmanager.k8s.io,clusters.postgresql.k8s.enterprisedb.io' \
    --include-cluster-resources=true \
    --skip-hooks \
    --log-level=debug \
    --verbose

    此步骤将复原 Cloud Pak for Data 实例项目中的 clusters.postgresql.k8s.enterprisedb.io 定制资源,而 Cloud Pak for Data 操作程序对 Cloud Pak for Data 操作数项目具有可视性。 因此,将从复原的 fenced off PVC 和卷中恢复 EDB Postgres 集群。 在继续执行将操作程序与 Cloud Pak for Data 实例项目隔离的后续步骤之前, EDB Postgres 集群恢复必须达到正常状态。

  2. 将操作程序与 Cloud Pak for Data 实例项目隔离:
    ./cpd-operators.sh isolate-namespacescope \
    --foundation-namespace ${PROJECT_CPD_INST_OPERATORS} \
    --operators-namespace ${PROJECT_CPD_INST_OPERATORS} 
  3. 复原剩余 Kubernetes 定制资源 (生成 pod 的资源除外) ,提供 Kubernetes 资源备份名称并指定复原名称:
    cpd-cli oadp restore create <restore_name6> \
    --from-backup=<kub_resource_backup> \
    --exclude-resources='persistentvolumeclaims,operatorgroups,roles,rolebindings,serviceaccounts,secrets,configmaps,certificates.cert-manager.io,certificates.certmanager.k8s.io,issuers.cert-manager.io,issuers.certmanager.k8s.io,namespacescopes,commonservices,clusters.postgresql.k8s.enterprisedb.io,deploy,rs,dc,rc,sts,ds,cj,jobs,controllerrevisions,securitycontextconstraints.security.openshift.io' \
    --include-cluster-resources=true \
    --skip-hooks \
    --log-level=debug \
    --verbose
  4. 复原 Kubernetes 生成 pod 的资源,提供 Kubernetes 资源备份名称并指定复原名称:
    cpd-cli oadp restore create <restore_name7> \
    --from-backup=<kub_resource_backup>  \
    --include-resources='namespaces,deploy,rs,dc,rc,sts,ds,cj,jobs,controllerrevisions' \
    --preworkloadhooks=true \
    --posthooks=true \
    --log-level=debug \
    --verbose
    注: 此命令输出消息以检查工作负载状态。 但是,在执行下一步之前,某些工作负载将无法就绪。
  5. 复原操作程序对 Cloud Pak for Data 实例项目的可视性:
    ./cpd-operators.sh restore-namespacescope \
    --foundation-namespace ${PROJECT_CPD_INST_OPERATORS} \
    --operators-namespace ${PROJECT_CPD_INST_OPERATORS} 

管理复原的步骤

  1. 要检查复原的状态,请运行以下命令:
    cpd-cli oadp restore status <restore_name> \
    --details
  2. 要查看现有复原的列表,请运行以下命令:
    cpd-cli oadp restore list
  3. 要查看复原日志,请运行以下命令:
    cpd-cli oadp restore logs <restore_name>
  4. 要删除复原以进行清除,请运行以下命令:
    cpd-cli oadp restore delete <restore_name>

下一步操作

如果 Cloud Pak for Data 部署具有连接到外部数据库的服务,并且您遵循了 在备份 Cloud Pak for Data的同时备份数据库的建议,请复原与 Cloud Pak for Data 备份相同的数据库备份。