SQL Managed Instance로 데이터 이동

완료됨

온-프레미스 및 클라우드 데이터베이스가 동기화된 상태로 유지되어야 하는 기간이 있는 마이그레이션이 많습니다. 예를 들어 클라이언트가 두 데이터베이스를 모두 변경하는 시간이 있을 수 있습니다.

스포츠 소매 제품 데이터베이스를 Azure SQL Managed Instance로 마이그레이션했습니다. 웹 사이트는 이미 클라우드 데이터베이스를 사용하고 있습니다. 새 데이터베이스를 사용하도록 클라이언트를 다시 구성하기 시작합니다. 사용자를 새 시스템으로 일괄 처리로 전환하기로 결정했습니다. 각 팀에서 다음 사용자를 마이그레이션하기 전에 문제를 해결할 시간을 갖습니다. 이 방법을 사용하면 모든 사용자를 한 번에 방해하지 않고 문제 해결 및 문제를 해결할 수 있습니다. 다음으로, Azure의 새 데이터베이스를 사용하도록 데이터 분석 시스템을 다시 구성합니다. 이 시간 동안 클라우드 및 온-프레미스 데이터베이스가 매시간 동기화되도록 하려고 합니다.

데이터 동기화를 구현하기 위한 다양한 방법을 살펴보겠습니다. 이러한 메서드는 테이블의 하위 집합만 전송해야 하는 경우 데이터를 선택적으로 마이그레이션하는 데 사용할 수도 있습니다. 이러한 유연성을 통해 데이터 마이그레이션에 보다 맞춤화된 접근 방식을 사용할 수 있습니다.

온-프레미스 서버와 연결 옵션

Azure SQL Managed Instance와 동기화된 온-프레미스 데이터베이스의 데이터를 유지하려는 경우가 많습니다. 예를 들어 클라이언트 애플리케이션을 새 데이터베이스로 마이그레이션하도록 스테이징하려는 경우가 있습니다. 이 경우 클라이언트가 두 데이터베이스에 모두 연결하는 기간이 있습니다.

데이터 동기화 방법을 선택하기 전에 안전한 연결이 있는지 확인하는 것이 중요합니다. 온-프레미스 컴퓨터와 Azure 리소스 간 통신을 설정하는 데 사용할 수 있는 세 가지 연결 옵션이 있습니다.

  • 지점 및 사이트 간. P2S(지점 및 사이트 간) VPN 게이트웨이 연결을 사용하면 개별 클라이언트 컴퓨터에서 가상 네트워크에 대한 안전한 연결을 만들 수 있습니다.
  • 사이트 간. 사이트 간 VPN 게이트웨이는 전체 온-프레미스 사이트를 Azure 네트워크에 연결하는 데 사용됩니다.
  • ExpressRoute. Azure ExpressRoute를 사용하면 Azure 데이터 센터와 온-프레미스 인프라 또는 공동 배치 환경의 인프라 간에 프라이빗 연결을 만들 수 있습니다. ExpressRoute 연결은 퍼블릭 인터넷을 사용하지 않으며 일반적인 인터넷 연결보다 안정적이고 속도가 빠르며 대기 시간이 짧고 보안성이 높습니다.

공용 엔드포인트

SQL Managed Instance에 대한 공용 엔드포인트는 VPN을 사용하지 않고 인터넷에서 데이터베이스에 연결하는 데 도움이 되며 데이터 통신용으로만 설계되었습니다. 데이터 퍼블릭 엔드포인트는 프라이빗 엔드포인트와 동시에 공존할 수 있습니다. 보안상의 이유로, 구현에서 퍼블릭 엔드포인트를 사용하도록 설정하는 경우 데이터베이스 관리자와 네트워크 관리자 간 SoD(의무 분리)가 허용됩니다.

관리형 인스턴스에 대해 퍼블릭 엔드포인트를 사용하도록 설정하려면 두 단계가 필요합니다. SoD의 경우 아래 단계를 완료하려면 다음 데이터베이스 및 네트워크 권한이 있는 두 개의 개별 역할이 필요합니다.

  1. Microsoft.Sql/managedInstances/* 범위에서 역할 기반 액세스 제어 권한이 있는 데이터베이스 관리자는 PowerShell 스크립트를 실행하여 관리되는 인스턴스에 대한 퍼블릭 엔드포인트를 사용하도록 설정해야 합니다.
  2. Microsoft.Network/* 범위에서 역할 기반 액세스 제어 권한이 있는 네트워크 관리자는 NSG(네트워크 보안 그룹)의 공용 엔드포인트에서 사용하는 포트 3342를 열고 비대칭 라우팅을 방지하기 위해 UDR 경로를 제공해야 합니다.

Diagram showing how public endpoint works for Azure SQL Managed Instance.

동기화 방법 선택

여러 가지 방법을 사용하여 SQL Database 관리형 인스턴스에서 온-프레미스 서버로 데이터를 다시 동기화할 수 있습니다.

네이티브 백업 및 복원

SAS(공유 액세스 서명)를 사용하여 Azure Blob Storage 파일에서 Azure SQL Managed Instance의 데이터베이스를 복원할 수 있습니다.

여기에는 Azure Blob Storage에 대한 액세스 권한이 있는 자격 증명을 만든 다음 옵션과 함께 COPY_ONLY 명령을 사용하는 BACKUP DATABASE 작업이 포함됩니다. 데이터베이스가 200GB보다 큰 경우 여러 URL 위치를 제공하여 스트라이프 백업을 사용할 수 있습니다.

BACKUP DATABASE YourDatabase TO URL = 'https://youraccount.blob.core.windows.net/yourcontainer/yourdatabase.bak' WITH COPY_ONLY

SQL Managed Instance에서 데이터베이스를 복원하려면 다음을 수행합니다.

RESTORE DATABASE YourDatabase FROM URL = 'https://youraccount.blob.core.windows.net/yourcontainer/yourdatabase.bak'

SqlPackage를 사용하는 BACPAC 파일

BACPAC 파일은 기본적으로 데이터베이스의 메타데이터와 데이터 둘 다의 압축된 버전입니다. 이 배포 방법은 SQL Database와 호환되지만 SQL Managed Instance는 Azure Portal 내에서 BACPAC를 통한 마이그레이션을 지원하지 않습니다. 또는 SQLPackage 유틸리티BACPAC 파일과 함께 사용해야 합니다.

BCP(대량 복사 프로그램)

BCP 유틸리티는 테이블을 파일로 내보내서 가져올 수 있도록 하는 명령줄 도구입니다. 단일 SQL Database에서 SQL Managed Instance로 마이그레이션하고 다시 마이그레이션하려면 이 방법을 사용합니다.

ADF(Azure Data Factory)

Azure Data Factory 는 수집에 중점을 두고 데이터 이동 및 오케스트레이션을 위해 빌드되었습니다. ADF에는 SSIS 패키지를 실행하는 통합 런타임 지원과 SQL Managed Instance에 대한 공용 인터넷 지원이 있습니다.

트랜잭션 복제

트랜잭션 복제는 지속적으로 연결된 데이터베이스 서버 간에 데이터를 이동하는 방법입니다.

이 프로세스는 게시 데이터베이스 개체 및 데이터의 스냅샷부터 시작합니다. 초기 스냅샷 수행되면 게시자의 데이터 또는 스키마에 대한 후속 변경 내용은 일반적으로 거의 실시간으로 Azure SQL Managed Instance에 전달됩니다.

SQL Managed Instance는 게시자, 배포자 및 구독자일 수 있으므로 유연합니다.

복제는 테이블의 일부를 복제할 수 있는 몇 가지 기술 중 하나입니다. 이러한 테이블 파트를 문서라고 합니다. 그런 다음 데이터가 배포자에게 전송되며, 배포자는 구독자 수에 관계없이 구독자에게 데이터를 제공하는 공급자입니다.

요구 사항

  • 연결은 복제 참가자 간에 SQL 인증을 사용합니다.
  • 복제에 사용되는 작업 디렉터리의 Azure Storage 계정 공유
  • 관리되는 인스턴스 서브넷의 보안 규칙에서 포트 445(TCP 아웃바운드)를 열어 Azure 파일 공유에 액세스합니다.
  • 게시자 또는 배포자가 관리되는 인스턴스에 있고 구독자가 온-프레미스인 경우 포트 1433(TCP 아웃바운드)을 엽니다.

SQL 관리형 인스턴스에 애플리케이션 커넥트

SQL 관리형 인스턴스는 관리되는 인스턴스 전용 Azure 가상 네트워크 서브넷 내에 있어야 합니다. 이 배포는 안전한 개인 IP 주소와 온-프레미스 네트워크에 연결하는 기능을 제공합니다.

Diagram showing how connectivity takes place in Azure SQL Managed Instance.

사용자 및 클라이언트 애플리케이션은 Azure Portal, PowerShell, Azure CLI, REST API를 통해 관리형 인스턴스 데이터베이스에 연결할 수 있습니다.

모든 통신은 인증서를 사용하여 암호화되고 서명됩니다. 통신 당사자를 신뢰성을 검사하기 위해, 관리되는 인스턴스는 인증서 해지 목록을 통해 이러한 인증서를 지속적으로 확인합니다. 인증서가 해지되면 SQL 관리형 인스턴스는 연결을 닫아 데이터를 보호합니다.