使用 OADP 实用程序将 Cloud Pak for Data 的离线备份还原到另一个群集
您可以使用 OADP 备份和复原实用程序将 IBM Cloud Pak for Data 实例从脱机备份复原到其他集群。
关于本任务
- 此任务所需的许可权
- 以具有集群管理员权限的用户身份登录。
如果先前已将 Cloud Pak for Data 备份复原到其他集群以进行测试,那么如果源集群丢失,那么此被动集群可能成为新的主动集群。 在这种情况下,建议您从被动集群中删除 Cloud Pak for Data 部署,并通过执行以下步骤来复原所需的 Cloud Pak for Data 备份。 例如,如果在很久以前复原了被动集群上的部署,那么您可能想要替换该部署。
无法将备份复原到 Cloud Pak for Data 实例的其他项目。
要复原备份,必须以 Kubernetes 方式运行 Cloud Pak for Data OADP 备份和复原实用程序。
如果运行复原命令产生 Failed 或 PartiallyFailed 错误,那么必须清除 Cloud Pak for Data 实例并重新启动复原过程。 有关清理 Cloud Pak for Data 实例的详细信息,请参阅 准备使用 OADP 实用程序恢复 Cloud Pak for Data。
过程
- 以集群管理员身份登录到 Red Hat®
OpenShift® Container Platform 。
${OC_LOGIN}请记住:OC_LOGIN是oc login命令的别名。 - 检查将阻止成功复原的问题:
cpd-cli oadp restore precheck \ --backup-names=<volume-backup-name>,<kub-resource-backup> \ --verbose此命令检查问题,例如:- OADP 项目不存在。
- Velero 实例未在运行或其 pod 运行不正常。
- OADP 备份存储位置定制资源未处于
Available状态。 - 指定的备份名称不存在。
- 备份未成功完成,或者有错误或警告。
- 存在与备份关联的项目。
有关命令执行的检查的完整列表,请参阅 oadp restore precheck。
- 还原 Kubernetes 资源定义、项目、OperatorGroups, 和权限,提供 Kubernetes 资源备份名称并指定还原名称:
集群从 IBM 授权注册表中提取映像
限制: 仅当集群可以连接到因特网时,此选项才可用。cpd-cli oadp restore create <tenant-offline-r1> \ --from-backup=<tenant-offline-b2> \ --include-resources='namespaces,operatorgroups,roles,rolebindings,serviceaccounts,customresourcedefinitions.apiextensions.k8s.io,securitycontextconstraints.security.openshift.io' \ --include-cluster-resources=true \ --image-prefix=registry.redhat.io/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
集群从专用容器注册表中拉取映像
限制: 仅当管理员将备份和复原映像移动到专用容器注册表时,此选项才可用。 有关详情,请参阅将 cpd-cli 的映像移动到私有容器注册表。cpd-cli oadp restore create <tenant-offline-r1> \ --from-backup=<tenant-offline-b2> \ --include-resources='namespaces,operatorgroups,roles,rolebindings,serviceaccounts,customresourcedefinitions.apiextensions.k8s.io,securitycontextconstraints.security.openshift.io' \ --include-cluster-resources=true \ --image-prefix=${PRIVATE_REGISTRY_LOCATION}/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
- 还原 Kubernetes CommonService 自定义资源和 cpd-operators ConfigMap, 提供 Kubernetes 资源备份名称并指定还原名称:
集群从 IBM 授权注册表中提取映像
限制: 仅当集群可以连接到因特网时,此选项才可用。cpd-cli oadp restore create <tenant-offline-r2> \ --from-backup=<tenant-offline-b2> \ --include-resources='namespacescopes,commonservices,configmaps,secrets' \ --include-cluster-resources=true \ --image-prefix=registry.redhat.io/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
集群从专用容器注册表中拉取映像
限制: 仅当管理员将备份和复原映像移动到专用容器注册表时,此选项才可用。 有关详情,请参阅将 cpd-cli 的映像移动到私有容器注册表。cpd-cli oadp restore create <tenant-offline-r2> \ --from-backup=<tenant-offline-b2> \ --include-resources='namespacescopes,commonservices,configmaps,secrets' \ --include-cluster-resources=true \ --image-prefix=${PRIVATE_REGISTRY_LOCATION}/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
提示: 如果要复原 Db2 或 IBM Knowledge Catalog,请添加--scale-wait-timeout 15m以确保复原命令成功完成。 - 复原其余 ConfigMaps 和私钥,提供 Kubernetes 资源备份名称并指定复原名称:
集群从 IBM 授权注册表中提取映像
限制: 仅当集群可以连接到因特网时,此选项才可用。cpd-cli oadp restore create <tenant-offline-r3> \ --from-backup=<tenant-offline-b1> \ --include-resources='configmaps,secrets' \ --image-prefix=registry.redhat.io/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
集群从专用容器注册表中拉取映像
限制: 仅当管理员将备份和复原映像移动到专用容器注册表时,此选项才可用。 有关详情,请参阅将 cpd-cli 的映像移动到私有容器注册表。cpd-cli oadp restore create <tenant-offline-r3> \ --from-backup=<tenant-offline-b1> \ --include-resources='configmaps,secrets' \ --image-prefix=${PRIVATE_REGISTRY_LOCATION}/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
- 复原 (重新创建) 操作程序和 EDB Postgres 集群:
./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 自定义资源,在继续还原过程之前,必须验证这些资源。
- 验证操作员预订和可视性。
- 在 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 - 如果任何操作指令请求处于
Failed状态,请按照故障排除文档中的步骤进行操作, cloud-native-postgresql 操作员已安装认证操作员目录源 ,可恢复操作指令请求。 - 验证 Cloud Pak for Data 操作程序可视性的复原:
oc get nss -n ${PROJECT_CPD_INST_OPERATORS} common-service -o jsonpath='{.status.validatedMembers} {"\n"}'此命令的输出必须是包含 ${PROJECT_CPD_INST_OPERATORS} 和所有操作数项目的数组。
- 在 Cloud Pak for Data 运算符和操作数项目中查询定制资源的状态:
- 复原 Kubernetes ZenService 资源,提供 Kubernetes 资源备份名称并指定复原名称:
集群从 IBM 授权注册表中提取映像
限制: 仅当集群可以连接到因特网时,此选项才可用。cpd-cli oadp restore create <tenant-offline-r4> \ --from-backup=<tenant-offline-b1> \ --include-resources='namespaces,secrets,configmaps,certificates.cert-manager.io,certificates.certmanager.k8s.io,issuers.cert-manager.io,issuers.certmanager.k8s.io,zenservices' \ --image-prefix=registry.redhat.io/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
集群从专用容器注册表中拉取映像
限制: 仅当管理员将备份和复原映像移动到专用容器注册表时,此选项才可用。 有关详情,请参阅将 cpd-cli 的映像移动到私有容器注册表。cpd-cli oadp restore create <tenant-offline-r4> \ --from-backup=<tenant-offline-b1> \ --include-resources='namespaces,secrets,configmaps,certificates.cert-manager.io,certificates.certmanager.k8s.io,issuers.cert-manager.io,issuers.certmanager.k8s.io,zenservices' \ --image-prefix=${PRIVATE_REGISTRY_LOCATION}/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
- 复原其余 Kubernetes 资源 (不包括 EDB Postgres 集群资源) ,提供 Kubernetes 资源备份名称并指定复原名称:
集群从 IBM 授权注册表中提取映像
限制: 仅当集群可以连接到因特网时,此选项才可用。cpd-cli oadp restore create <tenant-offline-r5> \ --from-backup=<tenant-offline-b1> \ --exclude-resources='secrets,configmaps,certificates.cert-manager.io,certificates.certmanager.k8s.io,issuers.cert-manager.io,issuers.certmanager.k8s.io,zenservices,certificaterequests.cert-manager.io,orders.acme.cert-manager.io,challenges.acme.cert-manager.io' \ --include-cluster-resources=true \ --image-prefix=registry.redhat.io/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
集群从专用容器注册表中拉取映像
限制: 仅当管理员将备份和复原映像移动到专用容器注册表时,此选项才可用。 有关详情,请参阅将 cpd-cli 的映像移动到私有容器注册表。cpd-cli oadp restore create <tenant-offline-r5> \ --from-backup=<tenant-offline-b1> \ --exclude-resources='secrets,configmaps,certificates.cert-manager.io,certificates.certmanager.k8s.io,issuers.cert-manager.io,issuers.certmanager.k8s.io,zenservices,certificaterequests.cert-manager.io,orders.acme.cert-manager.io,challenges.acme.cert-manager.io' \ --include-cluster-resources=true \ --image-prefix=${PRIVATE_REGISTRY_LOCATION}/ubi9 \ --skip-hooks \ --log-level=debug \ --verbose
- 删除 受防护的 EDB Postgres pod:
oc delete po -l k8s.enterprisedb.io/cluster -n ${PROJECT_CPD_INST_OPERANDS} - 显示从备份复原的 pod 的列表:
oc get pods -n ${PROJECT_CPD_INST_OPERANDS} -o=json | jq -r '.items[] | select(.metadata.annotations | has("cpdbr.cpd.ibm.com/backup-server-version"))|.metadata.name' - 从 pod 列表中,识别存在问题的 pod (例如,处于
Failed状态的 pod) ,然后将其删除。oc delete pods -n ${PROJECT_CPD_INST_OPERANDS} <pod-name> - 复原 EDB Postgres 集群资源并执行挂钩,提供 Kubernetes 资源备份名称并指定复原名称:
集群从 IBM 授权注册表中提取映像
限制: 仅当集群可以连接到因特网时,此选项才可用。cpd-cli oadp restore create <tenant-offline-r6> \ --from-backup=<tenant-offline-b2> \ --include-resources='namespaces,clusters.postgresql.k8s.enterprisedb.io' \ --include-cluster-resources=true \ --posthooks=true \ --image-prefix=registry.redhat.io/ubi9 \ --log-level=debug \ --verbose
集群从专用容器注册表中拉取映像
限制: 仅当管理员将备份和复原映像移动到专用容器注册表时,此选项才可用。 有关详情,请参阅将 cpd-cli 的映像移动到私有容器注册表。cpd-cli oadp restore create <tenant-offline-r6> \ --from-backup=<tenant-offline-b2> \ --include-resources='namespaces,clusters.postgresql.k8s.enterprisedb.io' \ --include-cluster-resources=true \ --posthooks=true \ --image-prefix=${PRIVATE_REGISTRY_LOCATION}/ubi9 \ --log-level=debug \ --verbose
- 要检查复原的状态,请运行以下命令:
cpd-cli oadp restore status <restore-name> \ --details - 要查看现有复原的列表,请运行以下命令:
cpd-cli oadp restore list - 要查看复原日志,请运行以下命令:
cpd-cli oadp restore logs <restore-name> - 要删除复原以进行清除,请运行以下命令:
cpd-cli oadp restore delete <restore-name>
下一步操作
如果 Cloud Pak for Data 部署具有连接到外部数据库的服务,并且您遵循了 在备份 Cloud Pak for Data的同时备份数据库的建议,请复原与 Cloud Pak for Data 备份相同的数据库备份。