마이그레이션 도구 옵션 식별

완료됨

PostgreSQL 서버에서 Azure Database for PostgreSQL 유연한 서버로 마이그레이션을 수행하는 데 사용할 수 있는 다양한 옵션이 있습니다. pg_dump, pgadmin 및 pg_restore 같은 네이티브 PostgreSQL 도구가 있습니다. Azure Database for PostgresSQL - 유연한 서버에는 데이터베이스 마이그레이션 서비스 및 마이그레이션 옵션과 같은 Microsoft Azure 클라우드 서비스가 있으며, 이는 원본에서 대상으로 전체 데이터 전송 프로세스를 크게 자동화할 수 있습니다.

Azure Database for PostgreSQL 유연한 서버 - 마이그레이션

Azure Database for PostgreSQL - 유연한 서버 서비스 내에는 다른 PostgreSQL 인스턴스에서 Azure 기반 서비스로의 데이터베이스 마이그레이션을 지원하는 네이티브 기능이 있습니다. 이 옵션은 원본에서 대상으로 데이터베이스를 오프라인으로 마이그레이션하기 위한 것입니다. 이 옵션을 사용하려면 앞에서 설명한 pg_dumpall 및 psql 도구를 사용하여 유연한 서버로 마이그레이션하는 서버 수준 개체 데이터베이스를 마이그레이션해야 합니다.

이 기능은 외부 PostgreSQL 인스턴스를 원본으로 사용하고 마이그레이션 프로젝트를 대상으로 만든 유연한 서버로 설계되었습니다. 기본적으로 유연한 서버로 데이터를 끌어와야 합니다. 이 서비스를 사용하여 수동 덤프 및 복원 프로세스를 대체할 경우의 이점은 마이그레이션이 관리된다는 점입니다. 구성되면 유연한 서버로 마이그레이션되는 모든 테이블에 대한 프로세스를 모니터링하므로 애플리케이션 수준에서 컷오버를 수행할 수 있는 시기를 쉽게 확인할 수 있습니다.

마이그레이션 프로젝트

연결이 정렬되면 새 서버로 마이그레이션할 데이터베이스를 선택하기만 하면 됩니다. 다음 스크린샷에서는 더 큰 시스템의 일부를 구성하는 여러 서비스를 백업하는 여러 데이터베이스가 있는 경우 한 번에 하나씩이 아닌 그룹으로 마이그레이션하도록 선택할 수 있습니다. 이 데이터베이스 그룹화는 마이그레이션 속도를 높일 뿐만 아니라 마이그레이션 작업 중에 논리적 일관성을 유지하는 데 도움이 될 수 있습니다.

마이그레이션 프로젝트 데이터베이스 선택을 보여 주는 Azure Portal의 스크린샷.

유효성 검사 및 마이그레이션 프로세스를 시작하면 프로젝트 대시보드를 사용하여 프로세스의 전체 진행률을 검토할 수 있습니다. 이 대시보드는 데이터베이스의 유효성이 검사된 다음 새 서버로 마이그레이션될 때 표시됩니다.

마이그레이션 프로젝트 데이터베이스 유효성 검사 및 마이그레이션 상태를 보여 주는 Azure Portal의 스크린샷

이 정보는 마이그레이션 후에 유지되므로 전체 진행 상황을 추적할 수 있습니다. 또한 이 정보는 수행되는 작업의 성공 및 기간에 대한 제어 프로세스를 변경하는 데 필요한 증거를 제공합니다.

PostgreSQL 도구

여기서는 PostgreSQL 서버에서 Azure Database for PostgreSQL 유연한 서버로 데이터를 마이그레이션하는 데 사용할 수 있는 주요 도구를 살펴봅니다.

pgcopydb

Pgcopydb 는 PostgreSQL 서버 간에 데이터베이스를 복사하는 프로세스를 자동화할 수 있는 오픈 소스 프로젝트입니다. PostgreSQL을 설치할 때 제공되는 네이티브 도구보다 pgcopydb를 사용하는 데는 몇 가지 이점이 있습니다. 이러한 이점은 다음과 같습니다.

  • pg_backup 및 pg_restore 사용하여 중간 파일의 필요성을 제거합니다.
  • PostgreSQL 내에서 synchronize__seqscans 기능을 사용하여 테이블의 인덱스 생성을 병렬화하는 인덱스 동시성을 만듭니다.
  • 다중 스레드 테이블을 분할 데이터에 복사하고 더 큰 테이블을 병렬로 전송합니다.
  • 데이터 동기화에 대한 데이터 캡처를 변경하여 장기간 가동 중지 시간 기간의 필요성을 최소화합니다.

pgcopydb 내에는 원본 서버에서 대상으로 데이터베이스 및 데이터 마이그레이션에 사용할 수 있는 두 가지 주요 옵션이 있습니다. 이러한 옵션은 복제 및 복사입니다.

pgcopydb 복제

복제는 원본 서버에서 대상으로 전체 데이터베이스를 복사하는 기본 옵션입니다. 이 명령에는 마이그레이션 가동 중지 시간을 최소화하기 위해 데이터를 동기화하도록 변경 데이터 캡처 구성을 자동화하는 것까지 기본 복제 작업을 구성할 수 있는 여러 스위치가 있습니다. 테이블별 데이터 전송을 병렬화하는 옵션과 테이블, 인덱스 및 큰 개체에 대한 병렬 전송 옵션을 지정할 수도 있습니다.

pgcopydb 복사

복사는 데이터베이스 또는 해당 부분을 마이그레이션할 때 더 세분화된 제어를 허용하는 옵션입니다. 이 명령 옵션을 사용하여 원본 서버 데이터베이스에서 대상 서버 및 데이터베이스로 전송할 스키마, 테이블, 역할 등을 선택할 수 있습니다. 이 명령은 하나의 큰 데이터베이스가 애플리케이션 현대화 마이그레이션 작업의 일부로 더 작은 데이터베이스로 분해되는 시나리오에서 유용합니다. 또는 통합 마이그레이션 작업을 통해 한 데이터베이스의 콘텐츠를 다른 데이터베이스 내의 스키마로 마이그레이션할 수 있습니다.

이러한 옵션은 pgcopydb가 데이터베이스를 Azure Database for PostgreSQL 유연한 서버로 마이그레이션하는 프로세스를 개선하는 데 도움이 되는 몇 가지 방법일 뿐입니다. 이 프로세스는 위험을 최소화하고 성공 가능성을 최대화하는 마이그레이션 방법을 제공합니다.

pgAdmin

pgAdmin 은 PostgreSQL 데이터베이스와 상호 작용하는 데 사용할 수 있는 널리 사용되는 관리 도구입니다. 이 도구를 사용하면 pgsql 스크립트를 만들고 실행할 수 있습니다. 이 도구에는 PostgreSQL 데이터베이스를 구성, 백업 및 복원하는 데 사용할 수 있는 유용한 GUI 도구 배열이 포함되어 있습니다. 일반적으로 관리 워크스테이션에 pgAdmin을 설치합니다. 이 도구를 사용하면 여러 PostgreSQL 서버를 등록하고 연결할 수 있으므로 마이그레이션 도구 집합의 핵심 부분입니다.

다양한 관리자 옵션을 보여 주는 메뉴가 있는 pgAdmin의 스크린샷

pg_dump, pg_restore 및 psql

pg_dump PostgreSQL 인스턴스와 함께 설치되고 관리 워크스테이션에 필요에 따라 설치할 수 있는 명령줄 도구입니다. 동시 워크로드가 발생하는 경우에도 PostgreSQL에서 일관된 데이터베이스 백업을 만들 수 있습니다. 개별 데이터베이스에서 작동하며 전체 데이터베이스 또는 일부 데이터베이스를 백업할 수 있습니다.

pg_dump 사용하여 스키마 개체를 내보내는 경우 psql을 사용하여 대상 데이터베이스에서 결과 .sql 파일을 실행하여 개체를 만들 수 있습니다. 이 단계가 끝나면 원본에서 대상 시스템으로 데이터를 이동하는 방법을 살펴볼 수 있습니다. 다음 예제에서는 한 데이터베이스에서 데이터베이스 스키마를 내보내고 다른 데이터베이스에서 만드는 데 사용할 명령을 확인할 수 있습니다.


pg_dump -O --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks --schema-only > adventureWorks.sql

psql --host=MyFlexibleServer --username=demo --dbname=AdventureWorks < adventureWorks.sql

원본 데이터베이스의 전체 덤프를 만드는 경우 pg_restore 사용하여 결과 파일을 읽고 데이터베이스를 대상 PostgreSQL 인스턴스로 복원합니다. 백업 및 덤프 복원을 수행할 때 이러한 활동이 걸리는 시간을 결정하는 몇 가지 요인이 있습니다. 특히 데이터베이스 크기, 스토리지 하위 시스템의 성능 및 처리 구성 요소 간의 네트워크 대역폭 및 대기 시간.

다음 예제에서는 사용자 지정에 데이터베이스 덤프를 만든 다음 다른 서버로 복원하는 방법을 보여 드립니다.


pg_dump -Fc --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks > db.dump

pg_restore -Fc --host=MyServerName --port=5432 --create --username=adminuser --dbname=AdventureWorks db.dump

pg_dumpall

pg_dump 단일 데이터베이스를 덤프하는 데 사용되는 반면, pg_dumpall psql이 PostgreSQL의 새 인스턴스로 읽는 단일 스크립트 파일로 모든 데이터베이스를 덤프하는 데 사용됩니다.

또한 pg_dumpall 사용하여 서버 간에 마이그레이션할 때 데이터베이스가 의존할 수 있는 역할과 같은 전역 서버 수준 개체에 대한 스크립트 파일을 생성할 수 있습니다.