백업 및 복원을 Db2 Warehouse 별도로 수행하는 방법 IBM Software HubOADP 유틸리티를 사용하여

클러스터와 별도로 Db2 Warehouse 인스턴스의 IBM Software Hub 오프라인 백업을 생성할 수 있으며, (OADP) 백업 및 복원 IBM Software HubOpenShift® API for Data Protection 유틸리티를 사용하여 동일한 클러스터로 복원할 수 있습니다.

백업 크기가 매우 Db2 Warehouse 클 경우, 또는 보다 더 자주 Db2 WarehouseIBM Software Hub 백업하려는 경우 IBM Software Hub , Db2 Warehouse 인스턴스를 별도로 백업하고 복원하십시오.

백업 및 복원을 별도로 Db2 Warehouse 수행하는 IBM Software Hub 데에는 다음과 같은 작업이 포함됩니다:

  1. 백업을 준비하십시오 IBM Software Hub Db2 Warehouse.
  2. 백업 IBM Software Hub, 제외 Db2 Warehouse.
  3. 뒤로 가기 Db2 Warehouse.
  4. 복원 IBM Software HubDb2 Warehouse.
모범 사례: 환경 변수를 설정하면 이 작업의 명령어를 작성된 그대로 실행할 수 있습니다. 정 방법에 대해서는 설치 환경 변수 설정을 참조하십시오.

이 작업의 명령어를 실행하기 전에 환경 변수를 반드시 설정하십시오.

백업 준비

백업을 준비하기 위해 노드, 포드 및 사용자 정의 리소스의 상태를 확인하십시오. 그런 다음 ` StatefulSets `에서 PVC, PV, 스냅샷 및 포드 템플릿에 레이블을 지정하여 IBM Software Hub 백업에서 Db2 Warehouse 제외할 준비를 하십시오.

  1. 클러스터 관리자로 Red Hat® OpenShift Container Platform에 로그인하십시오.
    ${OC_LOGIN}
    기억하세요: OC_LOGINoc login 명령어의 별칭입니다.
  2. 모든 노드가 상태에 Ready 있는지 확인하십시오:
    oc get nodes
  3. 모든 Db2 Warehouse 포드가 다음에서 실행 중인지 1/1확인하십시오:
    oc get pod | grep c-db2wh
  4. 서비스 Db2 Warehouse 상태를 확인하십시오.
    1. 인스턴스를 db2ucluster 식별하십시오:
      oc get db2ucluster | grep db2wh

      ID를 db2ucluster 기록해 두십시오. 이후 단계 중 일부에서 사용됩니다.

    2. 컨테이너에 원격 셸을 엽니다.
      oc rsh c-db2wh-<xxxxxxxxxxxxx>-db2u-0
    3. 데이터베이스 인스턴스 소유자로 전환 db2inst1:
      su - db2inst1
    4. 모든 파티션이 실행 중인지 확인하십시오:
      rah 'ps -fea' 2>&1 | grep db2sysc | grep -v grep
    5. 데이터베이스에 연결하십시오.
      db2 connect to mydb
    6. 테이블에서 선택할 수 있는지 간단한 쿼리를 실행하여 확인하세요:
      db2 select name from sysibm.systables
  5. 사용자 지정 리소스의 상태가 또는 Completed 인지 Ready확인하십시오.
    1. 사용자 정의 IBM Software Hubcontrol plane 리소스의 상태가 state인지 Completed 확인하십시오:
      oc describe ZenService lite-cr | grep "Zen Status"
    2. 사용자 db2ucluster 지정 리소스의 STATE 상태가 상태인지 Ready 확인하십시오:
      oc get db2ucluster
      참고: 사용자 정의 리소스 중 하나라도 상태에 InMaintenance 있고 가 db2ucluster 정상 작동 중이라면(예: 데이터베이스에 연결할 수 있고 쓰기 중지 모드가 아닌 경우), yaml 파일에서 다음 줄을 삭제하십시오:
      db2u.databases.ibm.com/maintenance-pause-reconcile: 'true'
    3. 프로젝트 IBM Software Hub 내 사용자 정의 리소스의 상태가 다음과 같은지 확인하십시오 Completed:
      cpd-cli manage get-cr-status \
      --cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS}
  6. PVC, PV 및 Db2 Warehouse 스냅샷에 레이블을 지정하여 IBM Software Hub 백업에서 제외하십시오.
    1. 라벨 PVC:
      oc label pvc `oc get pvc --show-labels | grep db2wh | awk '{print $1}'` velero.io/exclude-from-backup=true
    2. 라벨 PV:
      oc label pv `oc get pv --show-labels | grep db2wh | awk '{print $1}'` velero.io/exclude-from-backup=true
    3. 라벨 스냅샷:
      oc label volumesnapshots `oc get volumesnapshots  --show-labels | grep db2wh | awk '{print $1}'` velero.io/exclude-from-backup=true
  7. StatefulSets 에서 라벨 포드 템플릿 지정
    1. StatefulSets: 식별
      oc get sts -l app=${DB2UCLUSTER}
    2. 원본 복제품을 참고하여 축소하십시오 db2ucluster:
      oc scale sts c-${DB2UCLUSTER}-db2u --replicas=0
    3. 포드 상태를 검토하십시오:
      watch "oc get pod |grep  c-db2wh-<xxxxxxxxxxx>"
    4. 원본 복제품을 참고하여 축소하십시오 etcd:
      oc scale sts c-${DB2UCLUSTER}-etcd --replicas=0
    5. 포드 상태를 검토하십시오:
      watch "oc get pod |grep  c-db2wh-<xxxxxxxxxxx>"
    6. 원본 복제품을 참고하여 축소하십시오 tools:
      oc scale deploy c-${DB2UCLUSTER}-tools --replicas=0
    7. 포드 상태를 검토하십시오:
      watch "oc get pod |grep  c-db2wh-<xxxxxxxxxxx>"
    8. StatefulSets 와 Deployments에서 Pod Templates를 축소할 Db2 Warehouse 때 라벨을 지정하십시오:
      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. 원본 복제본으로 확장:
      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. 포드 상태를 검토하십시오:
      watch "oc get pod |grep  c-db2wh-<xxxxxxxxxxx>"
    11. 서비스 Db2 Warehouse 상태를 확인하려면 3단계를 반복하십시오.

IBM Software Hub 백업

다음 단계를 수행하여 제외된 Db2 Warehouse 항목을 IBM Software Hub 백업하십시오.

  1. 클러스터 관리자로 Red Hat OpenShift Container Platform에 로그인하십시오.
    ${OC_LOGIN}
    기억하세요: OC_LOGINoc login 명령어의 별칭입니다.
  2. . control planeIBM Software Hub 를 정지시키다.
    cpd-cli oadp backup prehooks \
    --include-namespaces=${PROJECT_CPD_INST_OPERANDS}
  3. 백업을 생성하십시오.
  4. 백업 상태를 확인하려면 다음 명령을 실행하십시오.
    cpd-cli oadp backup status <cpd_backup-name> \
    --details
  5. 백업 로그를 확인하려면 다음 명령을 실행하십시오.
    cpd-cli oadp backup logs <cpd_backup-name>
  6. 백업이 실패한 경우, 백업을 삭제한 후 다시 시작하십시오.
    cpd-cli oadp backup delete <cpd_backup-name>
  7. . control planeIBM Software Hub 를 비활성화합니다.
    cpd-cli oadp backup posthooks \
    --include-namespaces=${PROJECT_CPD_INST_OPERANDS}
    참고: 작업 wkc-job-unquiesce 완료에 오랜 시간이 걸리는 경우, 포드 로그를 검토하십시오. 서비스 wkf-workflow 포드가 상태에 있으면 0/1, 재시작하십시오. 그러면 작업이 wkc-job-unquiesce 계속됩니다.

Db2 Warehouse 백업

백업을 Db2 Warehouse 위해 (CSI) Container Storage Interface 볼륨 스냅샷을 생성하십시오.

  1. 클러스터 관리자로 Red Hat OpenShift Container Platform에 로그인하십시오.
    ${OC_LOGIN}
    기억하세요: OC_LOGINoc login 명령어의 별칭입니다.
  2. Db2 의 write-suspend를 호출하는 사전 백업 Db2 Warehouse 훅을 실행합니다.
    1. db2ucluster: 식별
      oc get db2ucluster | grep db2wh

      명령은 다음을 리턴합니다. DB2UCLUSTER=db2wh-<xxxxxxxxxxxxxxxx>

    2. 카탈로그 노드를 식별하십시오:
      CATALOG_POD=$(oc get po -l name=dashmpp-head-0,app=${DB2UCLUSTER} --no-headers | awk '{print $1}')
    3. 이전 단계에서 식별된 포드에서 Db2 Warehouse 데이터베이스를 일시 중지합니다:
      oc rsh ${CATALOG_POD} bash
      su - db2inst1
      cd /db2u/scripts
      ./manage_snapshots.sh --action suspend
  3. 인스턴스별 리소스 레이블을 Db2 Warehouse 인스턴스 Db2 PVC 및 리소스에 적용합니다(메타 및 백업 PVC는 현재 레이블이 지정되지 않음).
    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. 다음 명령어 중 하나를 실행하여 백업을 생성하십시오.
    클러스터는 IBM Entitled Registry에서 이미지를 가져옵니다
    제한 사항: 이 옵션은 클러스터가 인터넷에 연결할 수 있는 경우에만 사용할 수 있습니다.
    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

    클러스터는 사설 컨테이너 레지스트리에서 이미지를 가져옵니다
    제한 사항: 이 옵션은 관리자가 백업 및 복원 이미지를 사설 컨테이너 레지스트리로 이동한 경우에만 사용할 수 있습니다. 자세한 내용은 2항을 참조하십시오. 백업 및 복원을 위한 동영상 이미지를 개인 컨테이너 레지스트리로 이동합니다.
    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. 포드(1단계와 동일한 포드)에서 Db2 Warehouse 데이터베이스를 재개합니다:
    oc rsh ${CATALOG_POD} bash
    su - db2inst1
    cd /db2u/scripts
    ./manage_snapshots.sh --action resume
  6. 상태를 확인하십시오 Db2 Warehouse.

복원 IBM Software HubDb2 Warehouse

다음 단계를 수행하여 Db2 Warehouse 복원하십시오 IBM Software Hub .

  1. 원본 IBM Software Hub 프로젝트(네임스페이스) 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. 클러스터 관리자로 Red Hat OpenShift Container Platform에 로그인하십시오.
    ${OC_LOGIN}
    기억하세요: OC_LOGINoc login 명령어의 별칭입니다.
  3. 인스턴스를 IBM Software Hub 삭제하십시오.
  4. 볼륨을 Db2 Warehouse 복원하십시오:
    cpd-cli oadp restore create <db2wh_restore-name> \
    --from-backup=<db2wh_backup-name> \
    --skip-hooks
  5. 복원이 완료되었는지 확인하십시오:
    cpd-cli oadp restore list
  6. 프로젝트 UID를 변경하십시오.
    1. 프로젝트 IBM Software Hub 편집:
      oc edit namespace ${PROJECT_CPD_INST_OPERANDS}
    2. 다음 값들을 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>'
      중요: 이 값들을 변경하지 않으면 IBM Software Hub 포드가 성공적으로 초기화되지 않습니다.
  7. ${PROJECT_CPD_INST_OPERATORS} 프로젝트에서 이전 단계를 반복하십시오.
  8. 복원하십시오 control plane .
  9. 복원 상태 확인:
    cpd-cli oadp restore status <cpd-restore-name> \
    --details