다음을 통해 공유


PostgreSQL에서 Azure Database for PostgreSQL로의 온라인 마이그레이션과 관련된 알려진 문제 및 제한 사항

Important

보다 간편하고 효율적인 마이그레이션 환경을 위해서는 Azure Database for PostgreSQL의 새로운 마이그레이션 서비스를 사용하는 것이 좋습니다. 이 서비스는 다양한 원본 환경을 지원하여 프로세스를 간소화하고 Azure Database for PostgreSQL로의 번거로움 없는 전환을 보장합니다.

이 문서에서는 Azure Database Migration Service(DMS)를 사용하여 PostgreSQL에서 Azure Database for PostgreSQL로의 온라인 마이그레이션과 관련된 알려진 문제 및 제한 사항에 대해 설명합니다.

온라인 마이그레이션 구성

  • 지원되는 가장 낮은 PostgreSQL 원본 버전은 9.4이고 지원되는 가장 높은 대상 버전은 14.9입니다.

  • 동일하거나 더 높은 버전으로의 마이그레이션만 지원됩니다. 예를 들어, PostgreSQL 9.5를 Azure Database for PostgreSQL 9.6 또는 10으로 마이그레이션하는 것은 지원됩니다. PostgreSQL 11에서 PostgreSQL 9.6으로 마이그레이션하는 것은 지원되지 않습니다.

  • 원본 PostgreSQL postgresql.conf 파일에서 논리 복제를 사용하도록 설정하려면 다음 매개 변수를 설정합니다.

    매개 변수 설명
    wal_level 논리적으로 설정합니다.
    max_replication_slots 마이그레이션할 데이터베이스의 최대 수 이상을 설정합니다. 데이터베이스 네 개를 마이그레이션하려면 값을 4 이상으로 설정합니다.
    max_wal_senders 동시에 실행되는 데이터베이스의 수를 설정합니다. 권장 값은 10입니다.
  • 원본 PostgresSQL pg_hba.conf에 DMS 에이전트 IP를 추가합니다.

    1. Azure Database Migration Service 인스턴스 프로비전을 완료한 후 DMS IP 주소를 기록해 둡니다.

    2. pg_hba.conf 파일에 IP 주소를 추가합니다.

      host    all    172.16.136.18/10    md5
      host    replication postgres    172.16.136.18/10     md5
      
  • 사용자에게 원본 데이터베이스를 호스팅하는 서버에 대한 복제 역할이 있어야 합니다.

  • 원본 및 대상 데이터베이스 스키마가 일치해야 합니다.

크기 제한

  • 단일 DMS 서비스를 사용하여 PostgreSQL에서 Azure Database for PostgreSQL로 최대 1TB의 데이터를 마이그레이션할 수 있습니다.
  • DMS를 사용하면 사용자가 마이그레이션하려는 데이터베이스 내의 테이블을 선택할 수 있습니다.

테이블 선택 옵션을 보여 주는 DMS 화면의 스크린샷.

백그라운드에서 pg_dump 명령은 다음 옵션 중 하나를 사용하여 선택한 테이블을 덤프합니다.

  • -T - UI에서 선택한 테이블 이름 포함
  • -t - 사용자가 선택하지 않은 테이블 이름 제외

pg_dump 또는 -t 옵션 뒤에 오는 -T 명령의 일부로 포함할 수 있는 최대 문자 수는 최대 7,500자로 제한되어 있습니다. pg_dump 명령은 선택한 테이블 또는 선택하지 않은 테이블 중 더 적은 쪽의 문자 수를 사용합니다. 선택한 테이블과 선택하지 않은 테이블의 문자 수가 7500자를 초과하면 오류가 발생하여 pg_dump 명령이 실패합니다.

이전 예제에서 pg_dump 명령은 다음과 같습니다.

pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""

이전 명령의 문자 수는 55자입니다(큰따옴표, 공백, -T, 슬래시 포함).

데이터 형식 제한 사항

제한: 테이블에 기본 키가 없으면 변경 내용이 대상 데이터베이스에 동기화되지 않을 수 있습니다.

해결 방법: 마이그레이션을 계속할 수 있도록 일시적으로 테이블에 대한 기본 키를 설정합니다. 데이터 마이그레이션이 완료되면 기본 키를 제거합니다.

AWS RDS PostgreSQL에서의 온라인 마이그레이션 제한 사항

AWS(Amazon Web Service) RDS(관계형 데이터베이스) PostgreSQL에서 Azure Database for PostgreSQL으로 온라인 마이그레이션을 수행하려고 하면 다음과 같은 오류가 발생할 수 있습니다.

  • 오류: '{database}' 데이터베이스의 '{table}' 테이블에 있는 '{column}' 열의 기본값이 원본 서버와 대상 서버에서 서로 다릅니다. 원본은 '{value on source}'이고 대상은 '{value on target}'입니다.

    제한: 이 오류는 원본 데이터베이스와 대상 데이터베이스 간에 열 스키마의 기본값이 다를 때 발생합니다.

    해결 방법: 대상의 스키마를 원본의 스키마와 일치하는지 확인합니다. 스키마 마이그레이션에 대한 자세한 내용은 Azure Database for PostgreSQL 온라인 마이그레이션 설명서를 참조하세요.

  • 오류: '{database}' 대상 데이터베이스에는 테이블이 '{number of tables}'개 있고, '{database}' 원본 데이터베이스에는 테이블이 '{number of tables}'개 있습니다. 원본과 대상 데이터베이스의 테이블 수가 같아야 합니다.

    제한: 이 오류는 원본 데이터베이스와 대상 데이터베이스 간에 테이블 수가 다를 때 발생합니다.

    해결 방법: 대상의 스키마를 원본의 스키마와 일치하는지 확인합니다. 스키마 마이그레이션에 대한 자세한 내용은 Azure Database for PostgreSQL 온라인 마이그레이션 설명서를 참조하세요.

  • 오류: {database} 원본 데이터베이스가 비어 있습니다.

    제한:이 오류는 원본 데이터베이스가 비어 있을 때 발생합니다. 잘못된 데이터베이스를 원본으로 선택했을 수 있습니다.

    해결 방법: 마이그레이션을 위해 선택한 원본 데이터베이스를 다시 확인한 다음 다시 시도하세요.

  • 오류: {database} 대상 데이터베이스가 비어 있습니다. 스키마 마이그레이션

    제한:이 오류는 대상 데이터베이스에 스키마가 없을 때 발생합니다. 대상의 스키마가 원본의 스키마와 일치하는지 확인합니다.

    해결 방법: 대상의 스키마를 원본의 스키마와 일치하는지 확인합니다. 스키마 마이그레이션에 대한 자세한 내용은 Azure Database for PostgreSQL 온라인 마이그레이션 설명서를 참조하세요.

기타 제한 사항

  • 데이터베이스 이름에는 세미콜론(;)을 포함할 수 없습니다.

  • 캡처된 테이블에는 기본 키가 있어야 합니다. 테이블에 기본 키가 없는 경우 DELETE 및 UPDATE 레코드 작업의 결과를 예측할 수 없습니다.

  • 기본 키 세그먼트 업데이트는 무시됩니다. 해당 업데이트를 적용하면 대상에서 모든 행을 업데이트하지 않은 업데이트로 식별합니다. 그 결과 예외 테이블에 레코드가 기록됩니다.

  • 테이블에 JSON 열이 있는 경우, 이 테이블의 DELETE 또는 UPDATE 작업으로 인해 마이그레이션이 실패할 수 있습니다.

  • 이름은 같지만 대/소문자가 다른 여러 테이블을 마이그레이션하는 것은 예측할 수 없는 동작이 발생할 수 있으므로 지원되지 않습니다. 예로 table1, TABLE1, Table1을 사용하는 경우를 들 수 있습니다.

  • [ CREATE | ALTER | DROP | TRUNCATE ] 테이블 DDL은 지원되지 않습니다.

  • Database Migration Service의 단일 마이그레이션 작업에서는 최대 4개의 데이터베이스만 수용할 수 있습니다.

  • pg_largeobject 테이블의 마이그레이션은 지원되지 않습니다.