디버깅 및 기타 도구

이 페이지에는 PostgreSQL 디버깅 및 사용에 도움이 되는 스크립트가 포함되어 있습니다.

기본 키가 아닌 테이블에 대한 업데이트 및 삭제 작업 마이그레이션

기본 키가 없는 테이블의 경우 표준 마이그레이션에서 Database Migration Service가 변경 데이터 캡처 (CDC) 단계 중에 초기 스냅샷과 INSERT 문의 마이그레이션을 지원합니다. 하지만 표준 마이그레이션에서는 기본 키가 아닌 테이블에 대해 UPDATE 및 DELETE 문이 자동으로 복제되지 않습니다 (빠른 시작 마이그레이션에서는 REPLICA IDENTITY를 구성할 때 UPDATE 및 DELETE 작업 복제를 지원함).

표준 마이그레이션에서 누락된 UPDATE 및 DELETE 작업을 감지하고 수동으로 동기화하려면 다음 섹션의 절차를 완료하세요.

소스와 PostgreSQL용 AlloyDB 대상 클러스터 간의 누락된 데이터 감지

  1. 소스 데이터베이스에서 기본 키가 없는 테이블을 식별합니다.
    SELECT tab.table_schema,
           tab.table_name
    FROM information_schema.tables tab
    LEFT JOIN information_schema.table_constraints tco 
              ON tab.table_schema = tco.table_schema
              AND tab.table_name = tco.table_name 
              AND tco.constraint_type = 'PRIMARY KEY'
    WHERE tab.table_type = 'BASE TABLE'
          AND tab.table_schema NOT IN ('pg_catalog', 'information_schema', 'pglogical')
          AND tco.constraint_name IS NULL
    ORDER BY table_schema,
             table_name;
  2. 마이그레이션 작업을 시작하기 전에 기본 키가 없는 모든 테이블의 수정 통계를 기록합니다.
    SELECT schemaname,
           relname,
           n_tup_ins,
           n_tup_upd,
           n_tup_del
    FROM pg_stat_user_tables
    WHERE schemaname NOT IN ('pglogical', 'pg_catalog', 'information_schema');
    각 항목의 의미는 다음과 같습니다.
    • n_tup_ins: 삽입된 행 수
    • n_tup_upd: 업데이트된 행 수 (HOT 업데이트된 행 포함)
    • n_tup_del: 삭제된 행 수
  3. 이러한 기준 통계를 테이블이나 파일에 저장합니다.
  4. 마이그레이션 설정이 완료된 후 마이그레이션 작업을 승격하기 전에 쿼리를 다시 실행합니다.
  5. 초기 통계와 최신 통계를 비교합니다. 이전 중에 n_tup_upd 또는 n_tup_del가 변경된 경우 CDC에서 캡처하지 않은 업데이트 또는 삭제가 소스에서 발생했습니다.

소스에서 대상 PostgreSQL용 AlloyDB 클러스터로 데이터 수동 마이그레이션

기본 키가 없는 테이블에서 불일치가 감지되면 다음 옵션 중 하나를 사용하여 데이터를 동기화할 수 있습니다.

  • 옵션 1: 체크섬 쿼리 또는 델타 스크립트를 사용하여 소스 데이터베이스와 대상 PostgreSQL용 AlloyDB 클러스터 간의 데이터를 수동으로 비교하고, 일치하지 않는 레코드에 대해 적절한 SQL 업데이트를 실행합니다.
  • 옵션 2: 애플리케이션 유지보수 전환 중에 기본 키가 없는 테이블에 대해 pg_dump 및 pg_restore를 실행합니다.
  • 옵션 3: PostgreSQL COPY 명령어를 사용하여 테이블 데이터를 내보내고 가져옵니다. 자세한 내용은 PostgreSQL 문서를 참조하세요.