使用 OADP 实用程序将离线备份恢复到同一群集
您可以使用 Cloud Pak for Data OADP 备份和还原实用程序,从同一群集上的离线备份还原 IBM 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
- 验证 EDB Postgres 集群定制资源的恢复:
oc get clusters.postgresql.k8s.enterprisedb.io -n ${PROJECT_CPD_INST_OPERANDS}此命令返回类似于以下示例中的输出:NAME AGE INSTANCES READY STATUS PRIMARY common-service-db 30s 2 2 Cluster in healthy state common-service-db-2 zen-metastore-edb 30s 2 2 Cluster in healthy state zen-metastore-edb-1 - 要检查复原的状态,请运行以下命令:
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 备份相同的数据库备份。