离线备份的先决条件任务
升级至 IBM Software Hub 版本 5.1 ,在 4.8 版本达到支持 IBM Cloud Pak for Data 终止前完成升级。 有关更多信息,请参阅从 IBM Cloud Pak for Data 版本 4.8 升级到 IBM 的说明: Software Hub 版本 5.1。
在创建. IBM Cloud Pak for Data的离线备份之前,请先完成各项必要准备工作。 某些任务是服务专属的,仅需在安装相应服务时执行。
设置客户端工作站
- Red Hat® OpenShift® 命令行界面 (
oc) - Cloud Pak for Data 命令行界面 (
cpd-cli)注意: 请安装与您当前使用的版本 Cloud Pak for Data 相对应的版本 cpd-cli 。
有关更多信息,请参阅设置客户端工作站。
在源集群上安装所需软件
安装并配置备份与还原 Cloud Pak for DataOADP 实用程序。
- 请确保您安装的操作符 OADP 版本与您使用的版本 Cloud Pak for Data 兼容。 要检查已安装的 OADP 版本,请运行以下命令:
oc get csv -A | grep "OADP Operator" - 安装备份和还原组件时,请确保在创建实例
spec.configuration.velero.defaultPluginsDataProtectionApplication (Velero) 时指定默认csi插件。
删除与 ConfigMapsMongoDB相关的
oc delete cm zen-cs-aux-br-cmoc delete cm zen-cs-aux-ckpt-cmoc delete cm zen-cs-aux-qu-cmoc delete cm zen-cs2-aux-ckpt-cm清理 MongoDB 资源
若您已将系统从 4.8.0Cloud Pak for Data - 4.8.4 升级至 4.8.5 - 4.8.7 ,则必须在创建备份前清除残留 MongoDB 资源。 请执行以下步骤:
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 编辑自定义 authentication.operator.ibm.com 资源:
oc edit authentication.operator.ibm.com -n ${PROJECT_CPD_INST_OPERANDS} - 将注释
authentication.operator.ibm.com/retain-migration-artifacts更改为false。
更新许可证 EDB Postgres 提供商映像引用
- 该集群可连接到互联网
postgresImage=$(oc get cm cloud-native-postgresql-image-list -n ${PROJECT_CPD_INST_OPERATORS} -o jsonpath='{.data.edb-postgres-license-provider-image}') newPostgresImage=$(echo $postgresImage | sed -e 's/c9660f09a003178b13830fc260519c8d2e054ee8312e3cd1273d88d8d1acb759/c1670e7dd93c1e65a6659ece644e44aa5c2150809ac1089e2fd6be37dceae4ce/') eval $(echo "oc patch cm cloud-native-postgresql-image-list -n ${PROJECT_CPD_INST_OPERATORS} --type merge -p '{\"data\": {\"edb-postgres-license-provider-image\": \"${newPostgresImage}\"}}'") oc label cm cloud-native-postgresql-image-list -n ${PROJECT_CPD_INST_OPERATORS} app=cpd-operators-backup- 该集群从私有容器注册表中拉取镜像
postgresImage=$(oc get cm cloud-native-postgresql-image-list -n ${PROJECT_CPD_INST_OPERATORS} -o jsonpath='{.data.edb-postgres-license-provider-image}') newPostgresImage=$(echo $postgresImage | sed -e "s/cp.icr.io\/cp\/cpd/${PRIVATE_REGISTRY}/") eval $(echo "oc patch cm cloud-native-postgresql-image-list -n ${PROJECT_CPD_INST_OPERATORS} --type merge -p '{\"data\": {\"edb-postgres-license-provider-image\": \"${newPostgresImage}\"}}'") oc label cm cloud-native-postgresql-image-list -n ${PROJECT_CPD_INST_OPERATORS} app=cpd-operators-backup
添加 Identity Management Service 资源
4.8.0 - 4.8.4 若您已升级至 Cloud Pak for Data 4.8.0 - 4.8.4 并随后与 集成,请 Identity Management Service在创建备份前运行 备份与还原 Identity Management Service 脚本。 有关更多信息,请参阅 《还原后 Identity Management Service 数据丢失》。
估算为备份分配多少存储空间
技术预览通过以下步骤估算您需要为备份分配的存储空间。
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 导出以下环境变量。
export CPDBR_ENABLE_FEATURES=volume-util - 运行以下命令。
cpd-cli oadp du-pv
有关此命令的更多信息,请参阅 oadp du-pv。
确保将 management-ingress-ibmcloud-cluster-infoConfigMap 包含在备份中
4.8.5 本节仅适用于 Cloud Pak for Data 4.8.5。
如果启用了身份和访问管理(IAM),则备份中需要包含 management-ingress-ibmcloud-cluster-infoConfigMap 文件才能成功恢复。 请执行以下步骤:
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 检查IAM是否已启用:
oc get zenservices lite-cr -o jsonpath='{.spec.iamIntegration}{"\n"}' -n ${PROJECT_CPD_INST_OPERANDS} - 如果启用了身份和访问管理(IAM),请应用以下补丁以确保 ConfigMapmanagement-ingress-ibmcloud-cluster-info 不被排除在备份之外:
oc apply -n ${PROJECT_CPD_INST_OPERANDS} -f - << EOF apiVersion: v1 kind: ConfigMap metadata: name: cpdbr-management-ingress-exclude-fix-br labels: cpdfwk.aux-kind: br cpdfwk.component: cpdbr-patch cpdfwk.module: cpdbr-management-ingress-exclude-fix cpdfwk.name: cpdbr-management-ingress-exclude-fix-br-cm cpdfwk.managed-by: ibm-cpd-sre cpdfwk.vendor: ibm cpdfwk.version: 1.0.0 data: aux-meta: | name: cpdbr-management-ingress-exclude-fix-br description: | This configmap defines offline backup prehooks to prevent cases where Bedrock's management-ingress-ibmcloud-cluster-info configmap gets unexpectedly excluded when ibmcloud-cluster-info is excluded during cs-postgres configmap prehooks. This is a temporary workaround until a complete fix is implemented. version: 1.0.0 component: cpdbr-patch aux-kind: br priority-order: 99999 # This should happen at the end of backup prehooks backup-meta: | pre-hooks: exec-rules: # Remove lingering velero exclude label from offline prehooks - resource-kind: configmap name: management-ingress-ibmcloud-cluster-info actions: - builtins: name: cpdbr.cpd.ibm.com/label-resources params: action: remove key: velero.io/exclude-from-backup value: "true" timeout: 360s # Remove lingering ignore-on-nd-backup exclude label from online checkpoint operation - resource-kind: configmap name: management-ingress-ibmcloud-cluster-info actions: - builtins: name: cpdbr.cpd.ibm.com/label-resources params: action: remove key: icpdsupport/ignore-on-nd-backup value: "true" timeout: 360s post-hooks: exec-rules: - resource-kind: # do nothing for posthooks --- apiVersion: v1 kind: ConfigMap metadata: name: cpdbr-management-ingress-exclude-fix-ckpt labels: cpdfwk.aux-kind: checkpoint cpdfwk.component: cpdbr-patch cpdfwk.module: cpdbr-management-ingress-exclude-fix cpdfwk.name: cpdbr-management-ingress-exclude-fix-ckpt-cm cpdfwk.managed-by: ibm-cpd-sre cpdfwk.vendor: ibm cpdfwk.version: 1.0.0 data: aux-meta: | name: cpdbr-management-ingress-exclude-fix-ckpt description: | This configmap defines online backup prehooks to prevent cases where Bedrock's management-ingress-ibmcloud-cluster-info configmap gets unexpectedly excluded when ibmcloud-cluster-info is excluded during cs-postgres configmap checkpoint operation. This is a temporary workaround until a complete fix is implemented. version: 1.0.0 component: cpdbr-patch aux-kind: ckpt priority-order: 99999 # This should happen at the end of backup prehooks backup-meta: | pre-hooks: exec-rules: # Remove lingering velero exclude label from offline prehooks - resource-kind: configmap name: management-ingress-ibmcloud-cluster-info actions: - builtins: name: cpdbr.cpd.ibm.com/label-resources params: action: remove key: velero.io/exclude-from-backup value: "true" timeout: 360s # Remove lingering ignore-on-nd-backup exclude label from online checkpoint operation - resource-kind: configmap name: management-ingress-ibmcloud-cluster-info actions: - builtins: name: cpdbr.cpd.ibm.com/label-resources params: action: remove key: icpdsupport/ignore-on-nd-backup value: "true" timeout: 360s post-hooks: exec-rules: - resource-kind: # do nothing for posthooks checkpoint-meta: | exec-hooks: exec-rules: - resource-kind: # do nothing for checkpoint EOF
检查已安装服务的状态
确保所有已安装服务的状态均为已完成。 执行以下步骤。
- 登录
cpd-cli到集群 Red Hat OpenShift Container Platform :${CPDM_OC_LOGIN}请记住:CPDM_OC_LOGIN是一个别名,代表 命令cpd-cli manage login-to-ocp。 - 运行以下命令以获取所有服务的状态。
cpd-cli manage get-cr-status \ --cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS}
单独备份不支持离线备份的服务
对于不支持离线备份的服务,请在备份 Cloud Pak for Data 实例之前,使用其专属的备份流程分别备份这些服务。 有关不支持在线备份的服务的更多信息,请参阅支持备份和还原的服务。
准备 Analytics Engine powered by Apache Spark
oc get deploy -n ${PROJECT_CPD_INST_OPERANDS} | grep 'spark-master\|spark-worker' | awk '{print $1}' | xargs oc delete deploy -n ${PROJECT_CPD_INST_OPERANDS}准备 Data Refinery
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 要停止所有正在运行的 Data Refinery 运行时和作业,请执行以下命令:
oc delete $(oc get deployment -l type=shaper -o name) oc delete $(oc get svc -l type=shaper -o name) oc delete $(oc get job -l type=shaper -o name) oc delete $(oc get secrets -l type=shaper -o name) oc delete $(oc get cronjobs -l type=shaper -o name) oc scale -\-replicas=0 deploy wdp-shaper wdp-dataprep
准备 Db2®
为 Db2U 集群添加标签,并启用后停止Q复制,以确保备份能够成功完成。 请执行以下步骤:
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 检索部署中 Db2UCloud Pak for Data 集群的名称:
oc get db2ucluster -A -ojsonpath='{.items[?(@.spec.environment.dbType=="db2oltp")].metadata.name}' - 对于每个 Db2U 簇,执行以下子步骤:
- 导出 Db2U 集群名称:
export DB2UCLUSTER=<db2ucluster_name> - 标记簇:
oc label db2ucluster ${DB2UCLUSTER} db2u/cpdbr=db2u --overwrite - 验证 Db2U 集群是否已包含新标签:
oc get db2ucluster ${DB2UCLUSTER} --show-labels
- 导出 Db2U 集群名称:
- 对于每个 Db2U 集群,要停止 Q 复制,请执行以下步骤。
- 获取Q复制集的Pod名称:
oc get po -n ${PROJECT_CPD_INST_OPERANDS} | grep ${DB2UCLUSTER} | grep qrep - 执行进入Q复制集群的Pod:
oc exec -it <qrep-pod-name> bash -n ${PROJECT_CPD_INST_OPERANDS} - 以用户
dsadmin身份登录:su - dsadm - 停止Q复制监控进程:
>nohup $BLUDR_HOME/scripts/bin/bludr-monitor-qrep-components-wrapper-utils.sh stop > /dev/null & - 停止Q复制:
$BLUDR_HOME/scripts/bin/bludr-stop.sh当脚本运行完毕后,将显示以下消息:Stopping bludr replication instance ... Stopping replication ... REPLICATION ENDED SAFELY Stopping BLUDR WLP server... Stopping replication REST server instance ... SERVER STATUS: INACTIVE
- 获取Q复制集的Pod名称:
准备 Db2 Warehouse
为 Db2U 集群添加标签,并启用后停止Q复制,以确保备份能够成功完成。 请执行以下步骤:
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 检索部署中 Db2UCloud Pak for Data 集群的名称:
oc get db2ucluster -A -ojsonpath='{.items[?(@.spec.environment.dbType=="db2oltp")].metadata.name}' - 对于每个 Db2U 簇,执行以下子步骤:
- 导出 Db2U 集群名称:
export DB2UCLUSTER=<db2ucluster_name> - 标记簇:
oc label db2ucluster ${DB2UCLUSTER} db2u/cpdbr=db2u --overwrite - 验证 Db2U 集群是否已包含新标签:
oc get db2ucluster ${DB2UCLUSTER} --show-labels
- 导出 Db2U 集群名称:
- 对于每个 Db2U 集群,要停止 Q 复制,请执行以下步骤。
- 获取Q复制集的Pod名称:
oc get po -n ${PROJECT_CPD_INST_OPERANDS} | grep ${DB2UCLUSTER} | grep qrep - 执行进入Q复制集群的Pod:
oc exec -it <qrep-pod-name> bash -n ${PROJECT_CPD_INST_OPERANDS} - 以用户
dsadmin身份登录:su - dsadm - 停止Q复制监控进程:
>nohup $BLUDR_HOME/scripts/bin/bludr-monitor-qrep-components-wrapper-utils.sh stop > /dev/null & - 停止Q复制:
$BLUDR_HOME/scripts/bin/bludr-stop.sh当脚本运行完毕后,将显示以下消息:Stopping bludr replication instance ... Stopping replication ... REPLICATION ENDED SAFELY Stopping BLUDR WLP server... Stopping replication REST server instance ... SERVER STATUS: INACTIVE
- 获取Q复制集的Pod名称:
准备 SPSS Modeler
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 要停止所有正在运行的 SPSS Modeler 运行时和作业,请执行以下命令:
oc delete rta -l type=service,job -l component=spss-modeler - 要检查是否还有任何 SPSS Modeler 运行时会话仍在运行,请执行以下命令:
oc get pod -l type=spss-modeler当没有运行中的Pod时,此命令不会产生任何输出。
准备 Watson Discovery
在备份安装了该 Watson Discovery 服务的集群之前,请通过运行备份 Watson Discovery 脚本单独备份 Watson Discovery 数据。 有关更多信息,请参阅 《数据备份与恢复 》。
准备 Watson Machine Learning
在备份服务 Watson Machine Learning 之前,请禁用计划任务,并取消或等待现有启动/运行中的任务完成。
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 运行以下命令。
将
<timeout_in_seconds>替换为任务终止前允许其完成的超时时间。oc -n ${PROJECT_CPD_INST_OPERANDS} get pods -l app=wml-deployment-manager -o name | xargs -I{} oc -n <service_namespace> exec {} -- bash -c "/opt/ibm/wml-online-scoring/runtime-manager/bin/startQuiesce.sh <timeout_in_seconds>"
准备 Watson Machine Learning Accelerator
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 停止所有正在运行的作业:
oc delete $(oc get pj -l release=wmla -o name) - 停止所有已部署的模型。
有关详细信息,请参阅停止推理服务。
- 若您是从 4.6IBM Cloud Pak for Data 版本升级而来,且正在使用 IBM® Storage FusionPortworx 或 Red Hat OpenShift 数据基础存储,请从持久卷(PV)中删除conda内容。
- 获取 conda pod 名称:
oc get po |grep wmla-conda - 从 wmla-conda pod 中删除 conda PV 数据:
oc exec -it wmla-conda-pod-name bash bash-4.4$ rm -rfv /opt/conda/* - 从 wmla-conda pod 中删除 conda_synced 文件:
oc exec -it wmla-conda-pod-name bash bash-4.4$ rm -rf /var/shareDir/dli/work/conda_synced
- 获取 conda pod 名称:
准备 watsonx.ai
如果 watsonx.ai 已安装,请手动缩减以下部署,并在配置 cpd-watsonxai-maint-aux-br-cm 映射中增加超时值。
- 以 Red Hat OpenShift Container Platform 集群管理员身份登录。
${OC_LOGIN}请记住:OC_LOGIN是一个别名,代表 命令oc login。 - 运行以下命令:
oc scale deploy caikit-runtime-stack-operator -n ${PROJECT_CPD_INST_OPERATORS} --replicas=0 - 4.8.24.8.1 若您使用的是 Cloud Pak for Data4.8.1 或 4.8.2 ,请执行以下命令:
oc scale deploy fmaas-caikit-inf-prompt-tunes -n ${PROJECT_CPD_INST_OPERANDS} --replicas=0oc scale deploy bamdev-cais -n ${PROJECT_CPD_INST_OPERANDS} --replicas=0 - 在配置 cpd-watsonxai-maint-aux-br-cm 映射中增加超时值:
- 编辑该 ConfigMap:
oc edit cm cpd-watsonxai-maint-aux-br-cm -n ${PROJECT_CPD_INST_OPERANDS} - 将
backup-meta-pre-hooks-builtins-timeout的值从1800更改为3600。 - 将
backup-meta-post-hooks-builtins-timeout的值从1800更改为3600。 - 将
restore-meta-pre-hooks-builtins-timeout的值从1800更改为3600。
- 编辑该 ConfigMap: