Realizar copias de seguridad y restaurar Db2 Warehouse por separado de IBM Software Hub con la OADP utilidad

Puede crear una copia de seguridad sin conexión de una Db2 Warehouse instancia por separado de IBM Software Hub y restaurarla en el mismo clúster con la utilidad de copia de seguridad IBM Software HubOpenShift® API for Data Protection y restauración (OADP).

Realice copias de seguridad y restaure una Db2 Warehouse instancia por separado de IBM Software Hub cuando Db2 Warehouse las copias de seguridad sean muy grandes o desee realizar copias de seguridad Db2 Warehouse con más frecuencia que IBM Software Hub.

La copia de seguridad y la restauración Db2 Warehouse por IBM Software Hub separado implican las siguientes tareas:

  1. Prepárese para realizar una copia de seguridad IBM Software Hub y Db2 Warehouse.
  2. Copia de seguridad IBM Software Hub, excluyendo Db2 Warehouse.
  3. Hacer una copia de seguridad Db2 Warehouse.
  4. Restaurar IBM Software Hub y Db2 Warehouse.
Práctica recomendada: puede ejecutar los comandos de esta tarea tal y como están escritos si configura las variables de entorno. Para obtener instrucciones, consulte Configuración de las variables de entorno de instalación.

Asegúrese de obtener las variables de entorno antes de ejecutar los comandos de esta tarea.

Preparación para la copia de seguridad

Para preparar la copia de seguridad, compruebe el estado de los nodos, los pods y los recursos personalizados. A continuación, prepárese para excluir Db2 Warehouse de una IBM Software Hub copia de seguridad etiquetando PVC, PV, instantáneas y plantillas de pod en StatefulSets.

  1. Inicie sesión en Red Hat® OpenShift Container Platform como administrador del clúster.
    ${OC_LOGIN}
    Recuerda: OC_LOGIN es un alias del oc login comando.
  2. Comprueba que todos los nodos estén en estado Ready :
    oc get nodes
  3. Comprueba que todos Db2 Warehouse los pods se están ejecutando en 1/1:
    oc get pod | grep c-db2wh
  4. Comprueba el estado del Db2 Warehouse servicio.
    1. Identifique la db2ucluster instancia:
      oc get db2ucluster | grep db2wh

      Anote el db2ucluster ID, ya que se utiliza en algunos de los siguientes pasos.

    2. Abre un shell remoto al contenedor.
      oc rsh c-db2wh-<xxxxxxxxxxxxx>-db2u-0
    3. Cambiar al propietario de la instancia de db2inst1 la base de datos:
      su - db2inst1
    4. Comprueba que todas las particiones estén funcionando:
      rah 'ps -fea' 2>&1 | grep db2sysc | grep -v grep
    5. Conectarse a la base de datos:
      db2 connect to mydb
    6. Comprueba si puedes seleccionar desde una tabla ejecutando una consulta sencilla:
      db2 select name from sysibm.systables
  5. Comprueba que el estado de los recursos personalizados sea Completed o Ready.
    1. Comprueba que el estado del recurso IBM Software Hubcontrol plane personalizado sea Completed estado:
      oc describe ZenService lite-cr | grep "Zen Status"
    2. Comprueba que los STATE de los recursos db2ucluster personalizados se encuentren en estado Ready :
      oc get db2ucluster
      Nota: Si alguno de los recursos personalizados se encuentra en InMaintenance estado y el db2ucluster funciona (por ejemplo, puede conectarse a las bases de datos y estas no están en modo de suspensión de escritura), elimine la siguiente línea del archivo yaml:
      db2u.databases.ibm.com/maintenance-pause-reconcile: 'true'
    3. Comprueba que el estado de los recursos personalizados en el IBM Software Hub proyecto sea Completed:
      cpd-cli manage get-cr-status \
      --cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS}
  6. Etiqueta Db2 Warehouse los PVC, PV y instantáneas para excluirlos de la IBM Software Hub copia de seguridad.
    1. Etiquetas de PVC:
      oc label pvc `oc get pvc --show-labels | grep db2wh | awk '{print $1}'` velero.io/exclude-from-backup=true
    2. Etiquetas PV:
      oc label pv `oc get pv --show-labels | grep db2wh | awk '{print $1}'` velero.io/exclude-from-backup=true
    3. Instantáneas de etiquetas:
      oc label volumesnapshots `oc get volumesnapshots  --show-labels | grep db2wh | awk '{print $1}'` velero.io/exclude-from-backup=true
  7. Etiqueta las plantillas de pod en StatefulSets.
    1. Identificar StatefulSets:
      oc get sts -l app=${DB2UCLUSTER}
    2. Tome nota de las réplicas originales y reduzca la escala db2ucluster:
      oc scale sts c-${DB2UCLUSTER}-db2u --replicas=0
    3. Revisar el estado del pod:
      watch "oc get pod |grep  c-db2wh-<xxxxxxxxxxx>"
    4. Tome nota de las réplicas originales y reduzca la escala etcd:
      oc scale sts c-${DB2UCLUSTER}-etcd --replicas=0
    5. Revisar el estado del pod:
      watch "oc get pod |grep  c-db2wh-<xxxxxxxxxxx>"
    6. Tome nota de las réplicas originales y reduzca la escala tools:
      oc scale deploy c-${DB2UCLUSTER}-tools --replicas=0
    7. Revisar el estado del pod:
      watch "oc get pod |grep  c-db2wh-<xxxxxxxxxxx>"
    8. Cuando Db2 Warehouse se reduzca, etiquete las plantillas de pod en StatefulSets y Deployments:
      oc patch StatefulSet c-db2wh-xxxxxxxxxxxxx-db2u --patch '{"spec": {"template": {"metadata": {"labels": {"velero.io/exclude-from-backup": "true"}}}}}'
      oc patch StatefulSet c-db2wh-xxxxxxxxxxxxx-etcd --patch '{"spec": {"template": {"metadata": {"labels": {"velero.io/exclude-from-backup": "true"}}}}}'
      oc patch deploy c-db2wh-xxxxxxxxxxx-tools --patch '{"spec": {"template": {"metadata": {"labels": {"velero.io/exclude-from-backup": "true"}}}}}'
      
      oc patch StatefulSet c-db2wh-xxxxxxxxxxxxx-etcd --patch '{"spec": {"template": {"metadata": {"labels": {"velero.io/exclude-from-backup": "true"}}}}}'
      oc patch deploy c-db2wh-xxxxxxxxxxx-tools --patch '{"spec": {"template": {"metadata": {"labels": {"velero.io/exclude-from-backup": "true"}}}}}'
    9. Amplíe hasta obtener réplicas originales:
      oc scale deploy c-${DB2UCLUSTER}-tools --replicas=1
      oc scale sts c-${DB2UCLUSTER}-etcd --replicas=<original-number-of-replicas>
      oc scale sts c-${DB2UCLUSTER}-db2u --replicas=<original-number-of-replicas>
    10. Revisar el estado del pod:
      watch "oc get pod |grep  c-db2wh-<xxxxxxxxxxx>"
    11. Repita el paso 3 para comprobar el estado del Db2 Warehouse servicio.

Haciendo copia de seguridad IBM Software Hub

Realice una copia de seguridad IBM Software Hub con Db2 Warehouse excluido siguiendo estos pasos.

  1. Inicie sesión en Red Hat OpenShift Container Platform como administrador del clúster.
    ${OC_LOGIN}
    Recuerda: OC_LOGIN es un alias del oc login comando.
  2. Calma el IBM Software Hub control plane.
    cpd-cli oadp backup prehooks \
    --include-namespaces=${PROJECT_CPD_INST_OPERANDS}
  3. Cree la copia de seguridad.
  4. Para revisar el estado de la copia de seguridad, ejecute el siguiente comando.
    cpd-cli oadp backup status <cpd_backup-name> \
    --details
  5. Para revisar el registro de copia de seguridad, ejecute el siguiente comando.
    cpd-cli oadp backup logs <cpd_backup-name>
  6. Si la copia de seguridad ha fallado, elimínela y vuelva a iniciarla.
    cpd-cli oadp backup delete <cpd_backup-name>
  7. Desactivar el IBM Software Hub control plane.
    cpd-cli oadp backup posthooks \
    --include-namespaces=${PROJECT_CPD_INST_OPERANDS}
    Nota: Si el wkc-job-unquiesce trabajo tarda mucho tiempo en completarse, revise los registros del pod. Si el pod wkf-workflow de servicio está en 0/1, reinícielo. Entonces el wkc-job-unquiesce trabajo continúa.

Haciendo copia de seguridad Db2 Warehouse

Realice una copia de seguridad Db2 Warehouse creando una instantánea Container Storage Interface de volumen (CSI).

  1. Inicie sesión en Red Hat OpenShift Container Platform como administrador del clúster.
    ${OC_LOGIN}
    Recuerda: OC_LOGIN es un alias del oc login comando.
  2. Ejecuta el gancho previo Db2 Warehouse a la copia de seguridad que invoca Db2 write-suspend.
    1. Identificar el db2ucluster:
      oc get db2ucluster | grep db2wh

      El comando devuelve DB2UCLUSTER=db2wh-<xxxxxxxxxxxxxxxx>

    2. Identifique el nodo del catálogo:
      CATALOG_POD=$(oc get po -l name=dashmpp-head-0,app=${DB2UCLUSTER} --no-headers | awk '{print $1}')
    3. Suspenda la Db2 Warehouse base de datos en el pod que se identificó en el paso anterior:
      oc rsh ${CATALOG_POD} bash
      su - db2inst1
      cd /db2u/scripts
      ./manage_snapshots.sh --action suspend
  3. Aplicar etiquetas de recursos Db2 Warehouse específicas de la instancia Db2 a PVC de instancia y recursos (las PVC meta y de respaldo no están etiquetadas actualmente).
    INSTANCE_ID=$(echo ${DB2UCLUSTER} | cut -d "-" -f2)
    oc label pvc c-${DB2UCLUSTER}-meta app=${DB2UCLUSTER} component=db2wh db2u/cpdbr=db2u formation_id=${DB2UCLUSTER} cpdsupport/addOnId=db2wh icpdsupport/app=${DB2UCLUSTER} icpdsupport/createdBy=1000330999 icpdsupport/podSelector=db2u-log icpdsupport/serviceInstanceId=${INSTANCE_ID} role=db type=engine
    oc label pvc c-${DB2UCLUSTER}-backup app=${DB2UCLUSTER} component=db2wh db2u/cpdbr=db2u formation_id=${DB2UCLUSTER} icpdsupport/addOnId=db2wh icpdsupport/app=${DB2UCLUSTER} icpdsupport/createdBy=1000330999 icpdsupport/podSelector=db2u-log icpdsupport/serviceInstanceId=${INSTANCE_ID} role=db type=engine
  4. Cree la copia de seguridad ejecutando uno de los siguientes comandos.
    El clúster extrae imágenes del Registro de Títulos de Propiedad ( IBM Entitled Registry)
    Restricción: esta opción solo está disponible si el clúster puede conectarse a Internet.
    cpd-cli oadp backup create <db2wh_backup-name> \
    --include-namespaces=${PROJECT_CPD_INST_OPERANDS} \
    --skip-hooks \
    --snapshot-volumes \
    --include-resources='ns,pvc,pv,volumesnapshot,volumesnapshotcontent' \
    --selector="app=${DB2UCLUSTER}"
    --image-prefix=registry.redhat.io/ubi9 \
    --log-level=debug \
    --verbose

    El clúster extrae imágenes de un registro de contenedores privado
    Restricción: esta opción solo está disponible si un administrador ha trasladado las imágenes de copia de seguridad y restauración al registro de contenedores privado. Para más detalles, véase el punto 2. Imágenes móviles para realizar copias de seguridad y restaurarlas en un registro de contenedores privado.
    cpd-cli oadp backup create <db2wh_backup-name> \
    --include-namespaces=${PROJECT_CPD_INST_OPERANDS} \
    --skip-hooks \
    --snapshot-volumes \
    --include-resources='ns,pvc,pv,volumesnapshot,volumesnapshotcontent' \
    --selector="app=${DB2UCLUSTER}" \
    --image-prefix=${PRIVATE_REGISTRY_LOCATION}/ubi9 \
    --log-level=debug \
    --verbose

  5. Reanude la Db2 Warehouse base de datos en el pod (el mismo pod que en el paso 1):
    oc rsh ${CATALOG_POD} bash
    su - db2inst1
    cd /db2u/scripts
    ./manage_snapshots.sh --action resume
  6. Comprueba el estado de Db2 Warehouse.

Restaurar IBM Software Hub y Db2 Warehouse

Restaure IBM Software Hub y Db2 Warehouse siguiendo los siguientes pasos.

  1. Anote los siguientes valores en el proyecto IBM Software Hub original (espacio de nombres) yaml:
    • openshift.io/sa.scc.supplemental-groups: <xxxxxxxxxx/xxxxx>
    • openshift.io/sa.scc.uid-range: <xxxxxxxxxx/xxxxx>
    • openshift.io/requester: <requester_id>
    • openshift.io/sa.scc.mcs: '<xx>:<xxx>,<xxx>'
  2. Inicie sesión en Red Hat OpenShift Container Platform como administrador del clúster.
    ${OC_LOGIN}
    Recuerda: OC_LOGIN es un alias del oc login comando.
  3. Elimine la IBM Software Hub instancia.
  4. Restaurar los Db2 Warehouse volúmenes:
    cpd-cli oadp restore create <db2wh_restore-name> \
    --from-backup=<db2wh_backup-name> \
    --skip-hooks
  5. Comprueba que la restauración se ha completado:
    cpd-cli oadp restore list
  6. Cambiar el identificador único del proyecto.
    1. Editar el IBM Software Hub proyecto:
      oc edit namespace ${PROJECT_CPD_INST_OPERANDS}
    2. Cambia los siguientes valores a los valores originales del paso 1:
      • openshift.io/sa.scc.supplemental-groups: <xxxxxxxxxx/xxxxx>
      • openshift.io/sa.scc.uid-range: <xxxxxxxxxx/xxxxx>
      • openshift.io/requester: <requester_id>
      • openshift.io/sa.scc.mcs: '<xx>:<xxx>,<xxx>'
      Importante: Si no cambia estos valores, IBM Software Hub los pods no se inicializarán correctamente.
  7. Repita el paso anterior en el proyecto ${PROJECT_CPD_INST_OPERATORS}.
  8. Restaurar los control plane y servicios.
  9. Ver el estado de la restauración:
    cpd-cli oadp restore status <cpd-restore-name> \
    --details