마이그레이션 도구 옵션 파악

완료됨

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