보조 대기 데이터베이스로 장애 조치 후 주 데이터베이스 또는 주 대기 데이터베이스에서 HADR Db2 Warehouse 재시작

지정된 기본 및 프린시펄 대기 데이터베이스에서 조정자가 실행 중이면 다른 데이터베이스로의 장애 복구 후 HADR이 자동으로 다시 시작됩니다. 그러나 데이터베이스가 예기치 않게 사용 불가능 상태가 되는 시나리오(예: 사이트 가동 중단)에서는 이전 기본과 새 기본의 로그 스트림이 분기되어 HADR이 시작되지 않을 수 있습니다.

이 태스크에 대한 정보

이 메시지는 ( diaglogDb2u 의 pod 내부에 위치한 ${DIAGPATH}/NODE000) 에서 확인할 수 있습니다:

MESSAGE : ADM12500E  The HADR standby database cannot be made consistent with
          the primary database. The log stream of the standby database is
          incompatible with that of the primary database. To use this database
          as a standby, it must be recreated from a backup image or split
          mirror of the primary database.

이 시나리오가 발생하면 현재 주 데이터베이스에서 온라인 백업을 생성하고, 시작에 실패한 대기 데이터베이스로 이를 복원하십시오. 현재 기본 데이터베이스에서 수동으로 백업을 수행한 후 setup_config_hadr 스크립트를 다시 --db-role standby실행할 수 있습니다.

프로시저

  1. 재통합되지 않는 데이터베이스에서 HADR을 중지하십시오.
    oc exec -it c-db2-primary-db2u-0 -- manage_hadr -stop
  2. 현재 기본 데이터베이스를 확인하려면 도구를 manage_hadr 사용하여 옵션을 -status 지정하십시오.
    oc exec -it c-db2wh-aux-db2u-0 -- manage_hadr -status

    출력에서, db2wh-aux 는 강제 인수 후 현재의 주 데이터베이스이며, HADR_ROLE = PRIMARY

    
    #######################################################################
    ###             Db2 Warehouse high availability and                 ###
    ###             disaster recovery (HADR) management                 ###
    #######################################################################
    
    
    Running HADR action -status on the database BLUDB ...
    ################################################################################
    ###                       The HADR status summary                            ###
    ################################################################################
    Database Member 0 -- Database BLUDB -- Active -- Up 0 days 00:00:39 -- Date 2021-05-28-03.47.31.838856
    
    ####### Primary - Standby 1 ######
                                HADR_ROLE = PRIMARY
    
  3. 현재 기본 데이터베이스 Db2 Warehouse 포드에 실행하고 데이터베이스 인스턴스 소유자로 전환합니다:
    oc exec -it c-db2wh-aux-db2u-0
    su - db2inst1
  4. 데이터베이스를 백업 위치(${BACKUPDIR} (/mnt/backup)로 온라인 백업 시작:
    db2 backup db BLUDB online to ${BACKUPDIR}
  5. 키 저장소를 백업 위치에 복사하십시오.
    tar -cjvf ${BACKUPDIR}/keystore.tar -C ${KEYSTORELOC} .
  6. 백업 디렉터리의 권한을 업데이트하여 인스턴스 Db2 Warehouse 소유자/그룹이 읽기/쓰기 권한을 가질 수 있도록 하십시오:
    sudo chmod 755 -R  /mnt/backup
  7. 현재 주 데이터베이스의 백업 Db2 Warehouse 파일을 호스트의 디렉터리인 에 있는 대기 /tmp/hadr데이터베이스로 복사하십시오.
    oc rsync c-db2wh-aux-db2u-0:/mnt/backup/ /tmp/hadr
  8. 데이터베이스를 복원하려면 setup_config_hadr 스크립트를 다시 실행하십시오.
    • --db-role에 대해 standby를 사용하여 데이터베이스가 확실하게 대기로 재구성되도록 하십시오.
    • 재초기화되는 데이터베이스가 이전 기본 데이터베이스인 경우에는 지정된 프린시펄 대기를 기본으로 사용하고, 지정된 기본은 대기로 사용하고, 보조 대기 데이터베이스는 보조로 두십시오.
      oc exec -it c-db2wh-primary-db2u-0 -- setup_config_hadr --db-role standby --primary-name db2wh-standby --standby-name db2wh-primary --primary-port 31384 --standby-port 32457 --aux1-name db2wh-aux --aux1-port 32649 --etcd-host my-etcd-client.my-etcd --etcd-port 2379 –multicluster
    • 재초기화되는 데이터베이스가 이전 프린시펄 대기 데이터베이스인 경우에는 원래 설정에 사용된 것과 동일한 매개변수를 사용하십시오.
      oc exec -it c-db2wh-standby-db2u-0 -- setup_config_hadr --db-role standby --primary-name db2wh-primary --standby-name db2wh-standby --primary-port 32457 --standby-port 31384 --aux1-name db2wh-aux --aux1-port 32649 --etcd-host my-etcd-client.my-etcd --etcd-port 2379 --multicluster
  9. 다시 포드에 Db2 Warehouse 실행하세요. 인스턴스 Db2 Warehouse 소유자로서 HADR_LOCAL_SVC를 설정하여 HADR 구성을 확인하십시오.
    db2 get db cfg for bludb | grep -i hadr_local_svc
    # Output:
    HADR local service name           (HADR_LOCAL_SVC) = 60007|31384
  10. 첫 번째 포트 번호가 지정된 원래 역할에 대해 올바른지 확인하십시오.
    • 기본: 60006
    • 대기: 60007
    • Aux1: 60008
    • Aux2: 60009

    올바르지 않은 경우에는 올바른 포트를 사용하도록 HADR 구성 설정 HADR_LOCAL_SVC를 편집하십시오. 첫 번째 포트 번호만 업데이트하고 두 번째 포트 번호에는 기존 값을 사용하십시오:

    db2 “update db cfg for BLUDB using HADR_LOCAL_SVC 60006|31384”
  11. 팟(Pod)을 종료하고 데이터베이스에서 HADR을 대기로 시작하십시오.
    oc exec -it c-db2wh-primary-db2u-0 -- manage_hadr -start_as standby