디버깅 및 기타 도구

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

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

기본 키가 없는 테이블의 경우 Database Migration Service가 변경 데이터 캡처 (CDC) 단계 중에 초기 스냅샷과 INSERT 문의 마이그레이션을 지원합니다.

누락된 UPDATE 및 DELETE 프로세스를 업데이트하려면 이 문서의 뒷부분을 참고하세요.

소스 인스턴스와 Cloud SQL 대상 인스턴스 간의 누락된 데이터 감지

  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. 결과를 3단계의 결과와 비교합니다.

이전 중에 소스의 n_tup_upd 또는 n_tup_del 값에 차이가 있는 경우 소스에 일부 업데이트 또는 삭제가 있을 수 있습니다.

소스에서 Cloud SQL 대상 인스턴스로 데이터 수동 마이그레이션

소스와 Cloud SQL 대상 인스턴스 간에 불일치가 감지되면 다음 옵션 중 하나를 사용하여 데이터를 마이그레이션할 수 있습니다.

  • 옵션 1: 소스와 Cloud SQL 대상 간의 데이터를 수동으로 비교하고 적절한 SQL 쿼리를 실행하여 소스와 복제본 간에 다른 데이터만 업데이트합니다.

  • 옵션 2: 기본 키가 없는 테이블에 대해 pg_dump 및 pg_restore를 실행합니다. 자세한 내용은 pg_dump를 사용하여 온프레미스 PostgreSQL 서버에서 데이터 내보내기를 참조하세요.

  • 옵션 3: PostgreSQL COPY 명령어를 사용하여 데이터를 마이그레이션합니다. 자세한 내용은 PostgreSQL 문서를 참조하세요. 이 단계에서는 복제본 VM이 소스 VM에 연결할 수 있어야 합니다.