创建 Cloud Pak for Data 实例的脱机备份并将其复原到其他集群

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

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

您可以创建 IBM Cloud Pak for Data 实例的离线备份,然后使用 Cloud Pak for Data OADP 备份和还原实用程序在不同的群集上进行还原。

Cloud Pak for Data 实例由一个或多个 Red Hat® OpenShift® Container Platform 项目 (Kubernetes 名称空间) 组成。 例如, Cloud Pak for Data 实例可以是:
  • 安装了 控制平面 和服务的单个项目
  • 安装了 控制平面 的中心项目以及一个或多个系留项目

如果部署由同一集群上的多个 Cloud Pak for Data 实例组成,那么可以单独备份和复原每个实例。 您可以使用此过程在新集群上重新创建整个部署,在发生灾难破坏源集群时可以使用此部署。

此任务所需的许可权
您必须以具有集群管理员权限的用户身份登录。
最佳实践: 如果您设置环境变量,那么可以在此任务中以完全相同的方式运行命令。 有关指示信息,请参阅 设置安装环境变量

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

要在其他集群上备份 Cloud Pak for Data 实例并将其复原,请完成以下高级步骤:

  1. 备份源集群上的 Cloud Pak for Data 实例
  2. 备份源集群上的操作程序
  3. 如果 Cloud Pak for DataIAM Service集成,那么 备份源集群上的 IAM Service
  4. 为复原设置新集群
  5. 复原新集群上的操作程序
  6. 如果 Cloud Pak for DataIAM Service集成,那么 在新集群上复原 IAM Service
  7. 在新集群上复原 Cloud Pak for Data 的实例

在源集群上备份 Cloud Pak for Data 的实例

要备份 Cloud Pak for Data的实例,请执行以下步骤:

  1. 完成备份前提任务
  2. 通过运行以下命令来创建备份。

    如果实例由中心项目和一个或多个系留项目组成,请将 ${PROJECT_CPD_INSTANCE} 环境变量替换为以逗号分隔的项目列表。 例如:--include-namespaces=cpd-instance,cpd-instance-tether1,cpd-instance-tether2

    cpd-cli oadp backup create <instance_backup_name> \
    --include-namespaces=${PROJECT_CPD_INSTANCE} \
    --exclude-resources='Event,Event.events.k8s.io' \
    --default-volumes-to-restic \
    --cleanup-completed-resources \
    --log-level=debug \
    --verbose
  3. 可选: 如果您稍后需要复原这些操作程序,请 备份操作程序
    提示: 在同一集群中复原操作程序的步骤与 在其他集群上复原操作程序相同。

在源集群上备份操作程序和操作程序项目

您必须备份安装在源集群上的操作程序。 操作程序的位置取决于您执行的安装类型:
快速安装
快速安装中, IBM Cloud Pak foundational services 操作程序与 IBM Cloud Pak for Data platform operator 和服务操作程序安装在同一项目中,通常是 ibm-common-services
专业安装
专用安装中, IBM Cloud Pak foundational services 操作程序以及 IBM Cloud Pak for Data platform operator 和服务操作程序安装在不同的项目中。 例如:
  • IBM Cloud Pak foundational services 操作程序通常安装在 ibm-common-services中。
  • IBM Cloud Pak for Data platform operator 和服务操作程序安装在不同的项目中,例如 cpd-operators
重要: 要备份操作员,必须从 IBM® cpd-cli GitHub 资源库获取 cpd-operators.sh 脚本和 jq JSON 实用程序。 有关详细信息,请参阅安装 Cloud Pak for Data OADP 备份和还原实用程序

要备份源集群上的操作程序,请执行以下操作:

  1. 以具有足够许可权的用户身份登录到 Red Hat OpenShift Container Platform 以完成任务:
    oc login ${OCP_URL}
  2. cpd-operators.sh 脚本复制到要从中连接到集群的机器,并使该脚本可执行:
    chmod 700 cpd-operators.sh
  3. 运行 cpd-operators.sh 脚本以创建名为 cpd-operatorsconfigMapconfigMap 将捕获复原操作程序时所需的 Kubernetes 对象。

    您在运行脚本时指定的项目取决于您执行的安装类型:


    快速安装

    以下命令假定操作程序安装在 ibm-common-services 项目中:

    ./cpd-operators.sh backup --foundation-namespace ibm-common-services --operators-namespace ibm-common-services

    确认已创建 cpd-operators configMap :

    oc get configmap cpd-operators -n ibm-common-services

    专业安装

    以下命令假定 IBM Cloud Pak foundational services 操作程序安装在 ibm-common-services 项目中, Cloud Pak for Data 操作程序安装在 cpd-operators 项目中:

    ./cpd-operators.sh backup --foundation-namespace ibm-common-services --operators-namespace cpd-operators

    确认已创建 cpd-operators configMap :

    oc get configmap cpd-operators -n cpd-operators

  4. 备份相应的操作程序项目。 必须备份的项目取决于您执行的安装类型:
    重要信息: 请勿更改 --include-resources 列表中指定的资源列表。

    快速安装

    以下命令假定操作程序安装在 ibm-common-services 项目中:

    cpd-cli oadp backup create <operators_backup_name> \
    --include-namespaces ibm-common-services \
    --include-resources='namespaces,operatorgroups,configmaps,scheduling,crd' \
    --skip-hooks \
    --log-level=debug \
    --verbose

    <operators_backup_name> 替换为要用于标识备份的名称。


    专业安装

    以下命令假定 IBM Cloud Pak foundational services 操作程序安装在 ibm-common-services 项目中, Cloud Pak for Data 操作程序安装在 cpd-operators 项目中:

    cpd-cli oadp backup create <operators_backup_name> \
    --include-namespaces ibm-common-services,cpd-operators \
    --include-resources='namespaces,operatorgroups,configmaps,scheduling,crd' \
    --skip-hooks \
    --log-level=debug \
    --verbose

    operators_backup_name 替换为要用于标识备份的名称。


在源集群上备份 IAM Service

如果 Cloud Pak for Data 实例与 IAM Service集成,那么必须在源集群上备份 IAM Service

开始之前
在备份 IAM Service之前,请确保已完成:
  1. 备份源集群上的操作程序和操作程序项目
  1. 以具有足够许可权的用户身份登录到 Red Hat OpenShift Container Platform 以完成任务:
    oc login ${OCP_URL}
  2. 运行 mongodb-backup 作业。 您可以从 IBM cpd-cli GitHub 资源库复制 mongo-backup.sh 脚本,也可以从 quay.io 运行该脚本。
    方法 指示信息
    运行 mongo-backup.sh 脚本的本地副本
    重要: 要使用该脚本,必须从 IBM cpd-cli GitHub 资源库中复制以下文件:
    • mongo-backup.sh
    • mongo-job-rbac.yaml
    • mongo-backup-job.yaml

    有关详情,请参阅下载 Cloud Pak for Data 备份和还原脚本

    1. 使 mongo-backup.sh 脚本可执行:
      chmod 700 mongo-backup.sh
    2. 如果 ibm-common-services 项目中未安装 IBM Cloud Pak foundational services ,请替换 mongo-job-rbac.yaml 文件中的 ibm-common-service 项目。
      1. 要将文件置于编辑方式,请运行:
        vi mongo-job-rbac.yaml
      2. 更改 namespace 参数的值。
      3. 要保存更改,请单击 esc 并输入 :wq
      4. 运行以下命令以确保 mongo-backup.sh 脚本使用正确的项目:
        export CS_NAMESPACE=<foundational_services_project_name>
    3. 创建 cs-br 集群角色绑定:
      oc apply -f mongo-job-rbac.yaml
    4. 运行 mongo-backup.sh 脚本:
      ./mongo-backup.sh
    quay.io 运行脚本
    1. 创建 cs-br 集群角色绑定:
      cat <<EOF |oc apply -f -
      kind: ClusterRoleBinding
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
        name: cs-br
      roleRef:
        kind: ClusterRole
        name: cluster-admin
        apiGroup: rbac.authorization.k8s.io
      subjects:
      - kind: ServiceAccount
        name: default
        namespace: ${PROJECT_CPFS_OPS}
      EOF
    2. 创建 cs-backup-job 作业以从 quay.io运行 mongo-backup.sh 脚本。
      cat <<EOF |oc apply -f -
      apiVersion: batch/v1
      kind: Job
      metadata:
        name: cs-backup-job
        namespace: ${PROJECT_CPFS_OPS|
      spec:
        template:
          spec:
            containers:
              - name: cs-mongo-br
                image: quay.io/opencloudio/cs-mongodb-br:v0.2
                command: ["./mongo-backup.sh"]
                env:
                  - name: CS_NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
            restartPolicy: Never
      EOF
  3. 删除 mongdb-backup 作业。
    oc delete job mongodb-backup -n ${PROJECT_CPFS_OPS}
  4. 设置 CPDBR_ENABLE_FEATURES 环境变量:
    export CPDBR_ENABLE_FEATURES=experimental
  5. 备份基础服务项目,按 --pvc-data-include-labels过滤。
    重要信息: 请勿更改在 --include-resources 列表或 --pvc-data-include-labels 列表中指定的资源列表。
    cpd-cli oadp backup create <foundational_iam_backup_name> \
    --include-namespaces ${PROJECT_CPFS_OPS} \
    --include-resources='ns,deploy,po,pvc,pv' \
    --default-volumes-to-restic \
    --pvc-data-include-labels=app=icp-bedrock-backup \
    --skip-hooks \
    --snapshot-volumes=false \
    --log-level=debug \
    --verbose

    <foundational_iam_backup_name> 替换为要用于标识备份的名称。

设置新集群

创建新集群后,必须设置并配置集群,以便可以在集群上复原 Cloud Pak for Data 的操作程序和实例。

重要信息: 要复原在完成上述任务时备份的操作程序和 Cloud Pak for Data 实例,目标集群必须具有与源集群相同的配置。

确保符合下列条件:

  1. 目标集群具有与源集群相同的存储类。 有关设置存储的详细信息,请参阅设置持久存储
  2. 对于使用专用容器注册表的环境 (例如气郄环境) ,目标集群具有与源集群相同的映像内容源策略。 有关配置图像内容源策略的详细信息,请参阅配置图像内容源策略
  3. 目标集群必须能够拉取软件映像。 有关详情,请参阅更新全局图像提取密钥
  4. OpenShift APIs for Data Protection (OADP) 备份和复原实用程序安装在目标集群上。 有关详细信息,请参阅安装 Cloud Pak for Data OADP 备份和还原实用程序
  5. 目标集群的部署环境与源集群相同:
    • 目标集群使用与源集群相同的硬件体系结构。 例如, x86-64。
    • 目标集群与源集群处于同一 OpenShift 版本。
    • 目标集群允许与源集群相同的节点配置。 例如,如果源群集使用自定义 KubeletConfig, 目标群集必须允许相同的自定义 KubeletConfig。 有关节点设置的更多信息,请参阅更改所需的节点设置

      不支持在 IBM Cloud 和非IBM Cloud 部署环境之间移动。

在新集群上复原操作程序和操作程序项目

配置新集群后,可以在新集群上复原操作程序和操作程序项目。

重要: 要恢复操作员,必须从 IBM cpd-cli GitHub 资源库jq JSON 实用程序中获取 cpd-operators.sh 脚本。 有关详细信息,请参阅安装 Cloud Pak for Data OADP 备份和还原实用程序
  1. 以具有足够许可权的用户身份登录到 Red Hat OpenShift Container Platform 以完成任务:
    oc login ${OCP_URL}
  2. 要查看现有备份的列表,请运行以下命令:
    cpd-cli oadp backup ls
  3. 恢复任何CustomResourceDefinitions (CRD):
    cpd-cli oadp restore create <operators_restore_name1> \
    --from-backup=<operators_backup_name> \
    --include-resources='crd' \
    --include-cluster-resources=true \
    --skip-hooks \
    --log-level=debug \
    --verbose
  4. 在目标集群上复原所需资源 (例如所需项目和操作程序组):
    cpd-cli oadp restore create <operators_restore_name2> \
    --from-backup=<operators_backup_name> \
    --include-resources='namespaces,operatorgroups,scheduling,crd' \
    --include-cluster-resources=true \
    --skip-hooks \
    --log-level=debug \
    --verbose

    <operators_backup_name> 替换为创建备份时指定的名称。

  5. 恢复 cpd-operators configMap: 中包含的 Kubernetes 对象:
    cpd-cli oadp restore create <operators_restore_name3> \
    --from-backup=<operators_backup_name> \
    --include-resources='configmaps' \
    --selector 'app=cpd-operators-backup' \
    --skip-hooks \
    --log-level=debug \
    --verbose
  6. 确认 Cloud Pak for Data 操作程序项目包含必需的 OperatorGroup 和 configMap 资源:
    快速安装
    1. 确认项目包含 operatorgroup 操作程序组。

      以下命令假定 Cloud Pak for Data 操作程序安装在 ibm-common-services 项目中:

      oc get operatorgroups -n ibm-common-services
    2. 确认项目包含 cpd-operators configMap。

      以下命令假定 Cloud Pak for Data 操作程序安装在 ibm-common-services 项目中:

      oc get configmaps cpd-operators -n ibm-common-services

    专门安装
    1. 确认项目包含 operatorgroup 操作程序组。

      以下命令假定 Cloud Pak for Data 操作程序安装在 cpd-operators 项目中:

      oc get operatorgroups -n cpd-operators
    2. 确认项目包含 cpd-operators configMap。

      以下命令假定 Cloud Pak for Data 操作程序安装在 cpd-operators 项目中:

      oc get configmaps cpd-operators -n cpd-operators

  7. cpd-operators.sh 脚本复制到要从中连接到目标集群的机器,并使该脚本可执行:
    chmod 700 cpd-operators.sh
  8. 运行 cpd-operators.sh 脚本以在目标集群上复原操作程序。

    您在运行脚本时指定的项目取决于在源集群上执行的安装类型:


    快速安装

    以下命令假定所有操作程序都安装在源集群上的 ibm-common-services 项目中:

    ./cpd-operators.sh restore --foundation-namespace ibm-common-services --operators-namespace ibm-common-services

    专门安装

    以下命令假定 IBM Cloud Pak foundational services 已安装在 ibm-common-services 项目中, Cloud Pak for Data 操作程序已安装在源集群上的 cpd-operators 项目中:

    ./cpd-operators.sh restore --foundation-namespace ibm-common-services --operators-namespace cpd-operators

在新集群上复原 IAM Service

如果 Cloud Pak for Data 实例与 IAM Service集成,请在新集群上复原 IAM Service

开始之前
在新集群上复原 IAM Service 之前,请确保已完成:
  1. 设置新集群
  2. 在新集群上复原操作程序和操作程序项目
注: 当基础服务和 Cloud Pak for Data 操作程序在同一项目中共存时, cpd-cli oadp backup 命令以 在新集群上复原操作程序和操作程序项目中的相同项目为目标,但具有不同的 --include-resources 和过滤器。
  1. 以具有足够许可权的用户身份登录到 Red Hat OpenShift Container Platform 以完成任务:
    oc login ${OCP_URL}
  2. 复原持久卷以及与 IAM Service关联的卷。
    cpd-cli oadp restore create <foundational_iam_restore_name1> \
    --from-backup=<foundational_iam_backup_name> \
    --include-resources='pvc,pv' \
    --skip-hooks \
    --log-level=debug \
    --verbose
  3. 复原 IAM Service的数据。
    cpd-cli oadp restore create <foundational_iam_restore_name2> \
    --from-backup=<foundational_iam_backup_name> \
    --include-resources='pv,pvc,deploy,po' \
    --selector 'app=cpdbr-vol-mnt' \
    --skip-hooks \
    --log-level=debug \
    --verbose
  4. 运行 mongodb-restore 作业。 您可以从 IBM cpd-cli GitHub 资源库复制 mongo-restore.sh 脚本,也可以从 quay.io 运行该脚本。
    方法 指示信息
    运行 mongo-restore.sh 脚本的本地副本
    重要: 要使用该脚本,必须从 IBM cpd-cli GitHub 资源库中复制以下文件:
    • mongo-restore.sh
    • mongo-job-rbac.yaml
    • mongo-restore-job.yaml

    有关详情,请参阅下载 Cloud Pak for Data 备份和还原脚本

    1. 使 mongo-restore.sh 脚本可执行:
      chmod 700 mongo-restore.sh
    2. 如果 ibm-common-services 项目中未安装 IBM Cloud Pak foundational services ,请替换 mongo-job-rbac.yaml 文件中的 ibm-common-service 项目。
      1. 要将文件置于编辑方式,请运行:
        vi mongo-job-rbac.yaml
      2. 更改 namespace 参数的值。
      3. 要保存更改,请单击 esc 并输入 :wq
      4. 运行以下命令以确保 mongo-backup.sh 脚本使用正确的项目:
        export CS_NAMESPACE=<foundational_services_project_name>
    3. 创建 cs-br 集群角色绑定:
      oc apply -f mongo-job-rbac.yaml
    4. 运行 mongo-restore.sh 脚本:
      ./mongo-restore.sh
    quay.io 运行脚本
    1. 创建 cs-br 集群角色绑定:
      cat <<EOF |oc apply -f -
      kind: ClusterRoleBinding
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
        name: cs-br
      roleRef:
        kind: ClusterRole
        name: cluster-admin
        apiGroup: rbac.authorization.k8s.io
      subjects:
      - kind: ServiceAccount
        name: default
        namespace: ${PROJECT_CPFS_OPS|
      EOF
    2. 创建 cs-restore-job 作业以从 quay.io运行 mongo-restore.sh 脚本。
      cat <<EOF |oc apply -f -
      apiVersion: batch/v1
      kind: Job
      metadata:
        name: cs-restore-job
        namespace: ${PROJECT_CPFS_OPS|
      spec:
        template:
          spec:
            containers:
              - name: cs-mongo-br
                image: quay.io/opencloudio/cs-mongodb-br:v0.2
                command: ["./mongo-restore.sh"]
                env:
                  - name: CS_NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
            restartPolicy: Never
      EOF

在新集群上复原 Cloud Pak for Data 实例

开始之前
在新集群上复原 Cloud Pak for Data 实例之前,请确保已完成:
  1. 设置新集群
  2. 在新集群上复原操作程序和操作程序项目
  3. (如果适用) 在新集群上复原 IAM Service

要在新集群上复原 Cloud Pak for Data 实例,请执行以下步骤。

  1. 以具有足够许可权的用户身份登录到 Red Hat OpenShift Container Platform 以完成任务:
    oc login ${OCP_URL}
  2. 仅专用安装: 启用 IBM Cloud Pak for Data platform operator 以监视要在其中复原 Cloud Pak for Data实例的项目。

    更新 Cloud Pak for Data 操作程序项目中的 cpd-operators NamespaceScope 资源,以监视要复原实例的项目。

    提示: 要检索 namespaceMembers 列表中的现有项目,请运行以下命令:
    oc get namespacescope cpd-operators -n ${PROJECT_CPD_OPS} -o jsonpath={.spec.namespaceMembers}

    编辑 namespaceMembers 列表以添加要在其中复原实例的项目。 例如,如果要将实例复原到 cpd-instance 项目,请将该项目添加到列表中。 如果实例由一个中心项目和一个或多个系留项目组成,那么必须将所有这些项目添加到列表中。 例如, cpd-instance-tether1cpd-instance-tether2

    cat <<EOF |oc apply -f -
    apiVersion: operator.ibm.com/v1
    kind: NamespaceScope
    metadata:
      name: cpd-operators
      namespace: cpd-operators        # (Default) Replace with the Cloud Pak for Data platform operator project name 
    spec:
      csvInjector:                    # This setting is required for some services. Do not delete this line if you specified it when you created operator subscriptions. 
        enable: true                  # This setting is required for some services. Do not delete this line if you specified it when you created operator subscriptions. 
      namespaceMembers:
      - cpd-operators                 # (Default) Replace with the Cloud Pak for Data platform operator project name
      - cpd-instance                  # Replace with the project where you are restoring Cloud Pak for Data
    EOF
  3. 复原 Cloud Pak for Data 实例。
    1. 复原 ZenService 资源:
      cpd-cli oadp restore create <instance_backup_name>-zenservice-restore \
      --from-backup=<instance_backup_name> \
      --include-resources='namespaces,zenservices,secrets,certificates.cert-manager.io,certificates.certmanager.k8s.io,issuers.cert-manager.io,issuers.certmanager.k8s.io' \
      --skip-hooks \
      --log-level=debug \
      --verbose
    2. 复原所有其他备份资源:
      cpd-cli oadp restore create <instance_backup_name>-restore \
      --from-backup=<instance_backup_name> \
      --exclude-resources='clients,ImageTag' \
      --include-cluster-resources=true \
      --log-level=debug \
      --verbose
      注: 如果要复原 Db2®Watson Knowledge Catalog,请添加 --scale-wait-timeout 15m 以确保复原命令成功完成。