고급 이전 관리

고급 마이그레이션은 다운타임을 줄여 대규모 데이터베이스의 데이터를 마이그레이션하는 솔루션입니다. 이 기능은 AlloyDB Omni 및 PostgreSQL에서만 사용할 수 있습니다.

프로젝트 DB 관리자 역할이 있는 사용자가 다음 단계를 수행해야 합니다. GDC 콘솔 또는 Distributed Cloud CLI를 사용하여 이전을 관리합니다.

콘솔

  1. 기본 메뉴에서 데이터베이스 서비스를 선택합니다.
  2. 마이그레이션 만들기를 클릭합니다.
  3. 시작하기 대화상자에서 소스 및 연결 요구사항을 검토합니다.
  4. 소스 데이터베이스 지정 대화상자에서 소스 데이터베이스 호스트 이름 또는 IP 주소, 사용자 이름, 비밀번호, 암호화 유형, 인증서를 지정합니다.
  5. 클러스터 구성 대화상자에서 대상 데이터베이스 클러스터의 클러스터 ID, 비밀번호, 데이터베이스 버전, CPU, 메모리, 스토리지 용량을 지정합니다. 가장 큰 테이블을 보관할 만큼 충분한 메모리를 선택해야 합니다.
  6. 만들기를 클릭합니다. 마이그레이션 및 대상 데이터베이스 클러스터를 만드는 데 몇 분 정도 걸릴 수 있습니다. 클러스터가 준비되면 상태가 Reconciling에서 Ready로 변경됩니다. 마이그레이션이 성공적으로 설정되면 마이그레이션 상태가 Unsynced로 변경됩니다. 다음 옵션을 사용하여 이전을 관리합니다.
    1. 시작: 마이그레이션을 시작하고 마이그레이션 상태를 Running로 변경합니다.
    2. 중지: 마이그레이션을 중지하고 마이그레이션 상태를 Stopped로 변경합니다.
    3. 승격: 대상 데이터베이스 클러스터를 독립형 데이터베이스로 승격합니다.
    4. 삭제: 이 마이그레이션에 대해 생성된 마이그레이션 및 대상 데이터베이스 클러스터를 삭제합니다.

다음 단계에 따라 소스 데이터베이스 복제 사용자 비밀번호를 주기적으로 순환합니다.

  1. 소스 데이터베이스로 이동하여 수정 수정을 클릭합니다.
  2. 복제 사용자 비밀번호를 순환하도록 변경합니다.
  3. 저장을 클릭하여 변경사항을 적용합니다.

변경사항이 적용되면 이전 백엔드에서 새 비밀번호를 사용합니다.

gdcloud

  1. Distributed Cloud CLI를 사용하기 전에 설치하고 초기화하세요. 그런 다음 조직으로 인증합니다.

  2. 마이그레이션을 만듭니다.

    gdcloud database connection-profiles create DB_ENGINE_TYPE SOURCE_CONNECTION_PROFILE \
        --username REPLICATION_USERNAME \
        --password REPLICATION_PASSWORD \
        --ca-certificate CA_CERT_FILE_PATH
    
    gdcloud database migrations create MIGRATION_NAME \
        --source SOURCE_CONNECTION_PROFILE \
        --destination DESTINATION_DBCLUSTER
    
    gdcloud database clusters create DESTINATION_DBCLUSTER \
        --database-version DB_VERSION \
        --admin-password ADMIN_PASSWORD
    

    다음 변수를 바꿉니다.

    • DB_ENGINE_TYPE: 마이그레이션의 DB 엔진 유형입니다. 지원되는 값은 postgresql 또는 alloydbomni입니다.
    • SOURCE_CONNECTION_PROFILE: 새 연결 프로필의 이름입니다.
    • REPLICATION_USERNAME: 소스 데이터베이스의 복제 사용자의 이름입니다.
    • REPLICATION_PASSWORD: 소스 데이터베이스의 복제 사용자의 비밀번호입니다.
    • CA_CERT_FILE_PATH: 소스 데이터베이스 CA 인증서의 경로입니다.
    • MIGRATION_NAME: 새 이전의 이름입니다.
    • DESTINATION_DBCLUSTER: 대상 데이터베이스 클러스터의 이름입니다.
    • DB_VERSION: 새 클러스터의 버전 문자열입니다. 예를 들면 POSTGRESQL_13입니다.
    • ADMIN_PASSWORD: 새 클러스터의 관리자 사용자 비밀번호입니다.
  3. 마이그레이션 시작:

    gdcloud database migrations start MIGRATION_NAME
    
  4. 마이그레이션을 중지하려면 다음 단계를 따르세요.

    gdcloud database migrations stop MIGRATION_NAME
    
  5. 마이그레이션을 승격합니다.

    gdcloud database migrations promote MIGRATION_NAME
    
  6. 기존 연결 프로필을 나열합니다.

    gdcloud database connection-profiles list DB_ENGINE_TYPE
    
  7. 기존 마이그레이션을 나열합니다.

    gdcloud database migrations list --destination DESTINATION_DBCLUSTER
    

API

AlloyDB 또는 PostgreSQL 소스 데이터베이스의 경우:

소스 데이터베이스 CA 인증서를 저장할 보안 비밀을 만듭니다.

apiVersion: v1
data:
  ca.crt:  SOURCE_DB_CA_CERT
kind: Secret
metadata:
  annotations:
    propagation.gdch.gke.io/target-namespace:  USER_PROJECT
  name: es-crt-EXTERNAL_SERVER_NAME
  namespace: USER_PROJECT
type: Opaque

소스 데이터베이스 마이그레이션 사용자 비밀번호를 저장할 보안 비밀을 만듭니다.

apiVersion: v1
data:
  password: SOURCE_DB_USER_PASSWORD
kind: Secret
metadata:
  annotations:
    propagation.gdch.gke.io/target-namespace: USER_PROJECT
  name: es-pw-EXTERNAL_SERVER_NAME
  namespace: USER_PROJECT
type: Opaque

externalserver를 만듭니다.

apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
metadata:
  name: EXTERNAL_SERVER_NAME
  namespace: USER_PROJECT
spec:
  host: SOURCE_DB_HOST
  port: 5432
  username: SOURCE_DB_USERNAME
  password:
    name: es-pw-EXTERNAL_SERVER_NAME
    namespace: USER_PROJECT
  certRef:
    name: es-crt-EXTERNAL_SERVER_NAME
    namespace: USER_PROJECT

마이그레이션을 만듭니다.

apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: Migration
metadata:
  name: MIGRATION_NAME
  namespace: USER_PROJECT
spec:
  source:
    reference:
      apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
      kind: ExternalServer
      name: EXTERNAL_SERVER_NAME
  target:
    reference:
      apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
      kind: DBCluster
      name: DBCLUSTER_NAME
  control: MIGRATION_CONTROL

다음 변수를 바꿉니다.

  • EXTERNAL_SERVER_NAME: 소스 데이터베이스를 나타내는 externalserver의 이름입니다.
  • USER_PROJECT: externalserver가 생성되는 사용자 프로젝트의 이름입니다.
  • DBENGINE_NAME: 데이터베이스 엔진의 이름입니다. alloydbomni 또는 postgresql 중 하나입니다.
  • SOURCE_DB_CA_CERT: 소스 데이터베이스의 CA 인증서입니다.
  • SOURCE_DB_USER_PASSWORD: 소스 데이터베이스의 이전 사용자 비밀번호입니다.
  • SOURCE_DB_USERNAME: 소스 데이터베이스의 마이그레이션 사용자 이름입니다.
  • SOURCE_DB_HOST: 소스 데이터베이스의 이전 호스트 주소입니다.
  • MIGRATION_NAME: 마이그레이션 작업의 이름입니다.
  • DBCLUSTER_NAME: 마이그레이션 대상 데이터베이스 클러스터의 이름입니다.
  • MIGRATION_CONTROL: 마이그레이션 작업의 컨트롤입니다. 마이그레이션이 생성될 때 start 또는 stop 중 하나여야 합니다. 마이그레이션 대상 데이터베이스 클러스터를 승격하려면 promote이어야 합니다.