백업 및 복원

IBM Bob 온프레미스의 PostgreSQL 데이터베이스 백업을 구성, 관리 및 복원하여 애플리케이션 데이터를 보호하고 복구 시나리오를 지원합니다.

IBM Bob 온프레미스는 백업 작업을 Bob 커스텀 리소스(CR)와 분리하는 ConfigMap 기반 백업 구성 모델을 사용합니다. 백업 작업은 Kubernetes CronJob을 통해 자동으로 스케줄링 및 관리되며, 보존 정책과 스토리지 설정을 구성할 수 있습니다.

PostgreSQL 백업은 IBM Bob 및 Keycloak 데이터베이스의 복원 가능한 복사본을 생성합니다. 이 백업은 장애 후 데이터를 복구하거나, 클러스터 간에 데이터를 마이그레이션하거나, 이전에 알려진 정상 상태의 데이터베이스로 복원하는 데 사용할 수 있습니다.

IBM Bob은 자동 예약 백업과 수동 백업 실행을 모두 지원합니다.

주요 기능

자동 스케줄링

백업은 Kubernetes CronJob을 사용하여 자동으로 실행됩니다. 백업 스케줄은 표준 cron 표현식을 사용하여 정의되므로 운영 및 복구 요구 사항에 따라 백업 빈도를 구성할 수 있습니다.

자동 보존 관리

스토리지 사용량을 제어하기 위해 백업 보존이 자동으로 관리됩니다. 각 백업이 성공적으로 완료되면 구성된 보존 한도를 초과하는 이전 백업이 삭제됩니다. 기본적으로 시스템은 클러스터당 최근 7개의 백업을 보존합니다.

멀티 클러스터 백업 지원

단일 백업 구성으로 여러 PostgreSQL 클러스터의 백업을 관리할 수 있습니다. 오퍼레이터는 구성된 각 클러스터에 대한 전용 백업 리소스를 생성 및 유지 관리하여 배포 전반에 걸쳐 중앙 집중식 백업 관리를 가능하게 합니다.

PostgreSQL 이미지 자동 감지

백업 시스템은 실행 중인 데이터베이스 클러스터에서 PostgreSQL 컨테이너 이미지를 자동으로 감지하여 사용할 수 있습니다. 이를 통해 이미지 버전을 수동으로 지정할 필요가 없으며 백업 작업과 대상 데이터베이스 환경 간의 호환성을 보장하는 데 도움이 됩니다.

ConfigMap 기반 구성

백업 설정은 Bob 커스텀 리소스(CR)와 별도로 전용 ConfigMap에 저장됩니다. 이러한 분리를 통해 운영 관리가 간소화되고 백업 스케줄, 스토리지 설정, 보존 정책을 애플리케이션 배포 구성과 독립적으로 수정할 수 있습니다.

자동 압축

데이터베이스 덤프는 저장되기 전에 gzip을 사용하여 자동으로 압축됩니다. 압축은 스토리지 요구 사항을 줄이고 사용 가능한 스토리지 용량 내에서 백업 보존을 최적화하는 데 도움이 됩니다.

백업 메타데이터 추적

각 백업에는 백업 타임스탬프, 데이터베이스 이름, 호스트, 포트, 백업 크기와 같은 세부 정보가 포함된 메타데이터 파일이 포함됩니다. 이 정보는 백업 무결성 확인, 백업 기록 추적, 복원에 적합한 백업 식별에 도움이 됩니다.

백업에 포함되는 항목

데이터베이스 백업은 데이터베이스 환경을 재구성하는 데 필요한 모든 PostgreSQL 데이터베이스 개체와 데이터를 캡처합니다.

백업에 포함되는 항목:

  • PostgreSQL 데이터베이스 (구성된 경우):
    • Bob 데이터베이스(bob) — 사용자 계정 및 인증 정보, 프로젝트 및 대화, 코드 분석 결과, 애플리케이션 특정 구성 및 설정을 포함하는 기본 애플리케이션 데이터베이스.
    • Keycloak 데이터베이스(app) — 사용자 자격 증명 및 프로필 정보, OAuth 및 OpenID Connect(OIDC) 구성, 렐름 설정, 클라이언트 및 ID 공급자 구성을 포함하는 인증 및 ID 관리에 사용되는 Keycloak 데이터베이스.
  • 데이터베이스 스키마 — 테이블, 인덱스, 제약 조건, 저장 프로시저 및 함수, 뷰 및 트리거, 시퀀스 및 커스텀 타입을 포함하여 데이터베이스 구조를 재생성하는 데 필요한 모든 개체.
  • 데이터베이스 데이터 — 백업 프로세스는 pg_dump를 사용하여 데이터베이스 테이블에 저장된 모든 데이터, 모든 행 및 레코드, 이진 대형 개체(BLOB)(있는 경우)를 캡처하는 완전한 PostgreSQL 데이터베이스 덤프를 생성합니다.

백업에 포함되지 않는 항목

PostgreSQL 백업은 Kubernetes 리소스 또는 애플리케이션 구성을 캡처하지 않습니다.

다음 항목은 별도로 관리해야 합니다:

  • ConfigMap
  • Secret
  • Deployment 및 Service
  • Ingress 리소스
  • 애플리케이션 로그
  • 모델 데이터 및 임베딩
  • 데이터베이스 이외의 영구 볼륨

백업 아키텍처

IBM Bob은 Kubernetes 네이티브 리소스를 사용하여 데이터베이스 백업을 생성하고 관리합니다.

컴포넌트목적
Bob 커스텀 리소스백업 작업을 활성화하거나 일시 중단합니다
백업 ConfigMap스케줄, 스토리지, 보존, 대상 데이터베이스를 정의합니다
CronJob예약된 백업을 실행합니다
영구 볼륨 클레임백업 파일을 저장합니다
백업 스크립트백업을 생성하고 보존을 관리합니다

백업 프로세스는 다음 워크플로를 따릅니다:

Bob CR (enabled: true) → ConfigMap Discovery → Controller Reconciliation → CronJob Execution
  1. 컨트롤러가 bob.ibm.com/backup-config: "true" 레이블이 있는 ConfigMap을 찾습니다.
  2. 컨트롤러가 구성된 각 클러스터에 대한 CronJob 및 PVC를 생성합니다.
  3. CronJob이 스케줄에 따라 실행되어 pg_dump로 압축 SQL 덤프를 생성합니다.
  4. 백업 스크립트가 보존을 관리하여 오래된 백업을 자동으로 삭제합니다.
  5. 각 백업에는 타임스탬프, 크기, 데이터베이스 정보가 포함된 메타데이터 파일이 포함됩니다.

백업이 활성화되면 오퍼레이터가 자동으로 백업 구성을 발견하고, 필요한 리소스를 생성하며, 구성된 빈도에 따라 백업 작업을 스케줄링합니다.

백업 파일 구조

백업 파일은 전용 영구 볼륨 클레임(PVC)에 저장됩니다. 구성된 각 PostgreSQL 클러스터에는 백업 파일 및 관련 메타데이터가 포함된 자체 디렉터리가 있습니다.

/backups/
├── bob-db/
│   ├── backup_bob_20260902_020000.sql.gz
│   └── backup_bob_20260902_020000.sql.gz.meta
└── bob-keycloak-db/
    ├── backup_app_20260902_020000.sql.gz
    └── backup_app_20260902_020000.sql.gz.meta

백업 프로세스는 각 백업에 대해 다음 파일을 생성합니다:

  • .sql.gz — 압축 SQL 덤프 (일반 텍스트 형식, gzip 압축)
  • .sql.gz.meta — 타임스탬프, 데이터베이스 이름, 크기, 호스트, 포트가 포함된 메타데이터 파일

복구 기능

IBM Bob은 데이터 복원, 장애 복구, 환경 간 데이터베이스 마이그레이션을 지원하는 여러 복구 시나리오를 제공합니다:

  • 전체 데이터베이스 복원 — 백업 파일에서 전체 PostgreSQL 데이터베이스를 복원합니다.
  • 특정 시점 복구 — 타임스탬프를 기반으로 필요한 백업 파일을 선택하여 특정 백업 인스턴스로 데이터베이스를 복원합니다.
  • 클러스터 간 마이그레이션 — 백업을 다른 PostgreSQL 클러스터로 복원하여 환경 간 데이터베이스 마이그레이션을 가능하게 합니다.
이 주제는 어떤가요?