다음을 통해 공유


링크에 대한 환경 준비 - Azure SQL Managed Instance

적용 대상:: Azure SQL Managed Instance

이 문서에서는 Windows 또는 Linux에 설치된 SQL 서버 및 Azure SQL Managed Instance 간에 복제할 수 있도록 Managed Instance 링크 환경을 준비하는 방법을 설명합니다.

참고 항목

다운로드 가능한 스크립트를 사용하여 Managed Instance 링크환경 준비를 자동화할 수 있습니다. 자세한 내용은 링크 설정 자동화 블로그를 참조하세요.

필수 조건

SQL Server와 Azure SQL Managed Instance 간에 링크를 만들려면 다음 필수 조건이 필요합니다.

주의

링크 기능과 함께 사용할 SQL Managed Instance를 만들 때 SQL Server에서 사용하는 메모리 내 OLTP 기능에 대한 메모리 요구 사항을 고려합니다. 자세한 내용은 Azure SQL Managed Instance 리소스 한도 개요를 참조하세요.

사용 권한

SQL Server의 경우 sysadmin 권한이 있어야 합니다.

Azure SQL Managed Instance의 경우 SQL Managed Instance 기여자 구성원이거나 사용자 지정 역할에 대해 다음 권한이 있어야 합니다.

Microsoft.Sql/ 리소스 필요한 권한
Microsoft.Sql/managedInstances /read, /write
Microsoft.Sql/managedInstances/hybridCertificate /작업
Microsoft.Sql/managedInstances/databases /read, /delete, /write, /completeRestore/action, /readBackups/action, /restoreDetails/read
Microsoft.Sql/managedInstances/distributedAvailabilityGroups /read, /write, /delete, /setRole/action
Microsoft.Sql/managedInstances/endpointCertificates /read
Microsoft.Sql/managedInstances/hybridLink /read, /write, /delete
Microsoft.Sql/managedInstances/serverTrustCertificates /write, /delete, /read

SQL Server 인스턴스 준비

SQL Server 인스턴스를 준비하려면 다음의 유효성을 검사해야 합니다.

  • 지원되는 최소 버전을 사용 중입니다.
  • 가용성 그룹 기능을 사용하도록 설정했습니다.
  • 시작 시 적절한 추적 플래그를 추가했습니다.
  • 데이터베이스가 전체 복구 모델에 있고 백업되었습니다.

이러한 변경 내용을 적용하려면 SQL Server를 다시 시작해야 합니다.

서비스 업데이트 설치

버전 지원 표에 나열된 대로 SQL Server 버전에 적절한 서비스 업데이트가 설치되어 있는지 확인합니다. 업데이트를 설치해야 하는 경우 업데이트 중에 SQL Server 인스턴스를 다시 시작해야 합니다.

SQL Server 버전을 확인하려면 SQL Server에서 다음 T-SQL(Transact-SQL) 스크립트를 실행합니다.

-- Run on SQL Server
-- Shows the version and CU of the SQL Server
USE master;
GO
SELECT @@VERSION as 'SQL Server version';

master 데이터베이스에 데이터베이스 마스터 키 만들기

마스터 키가 아직 없으면 master 데이터베이스에 데이터베이스 마스터 키를 만듭니다. 다음 스크립트의 <strong_password> 자리에 비밀번호를 삽입하고 안전한 장소에 기밀로 보관합니다. SQL Server에서 다음 T-SQL 스크립트를 실행합니다.

-- Run on SQL Server
-- Create a master key
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_password>';

데이터베이스 마스터 키가 있는지 확인하려면 SQL Server에서 다음 T-SQL 스크립트를 사용합니다.

-- Run on SQL Server
USE master;
GO
SELECT * FROM sys.symmetric_keys WHERE name LIKE '%DatabaseMasterKey%';

가용성 그룹 사용

링크 기능은 Always On 가용성 그룹 기능을 사용하며 이 기능은 기본적으로 사용되도록 설정되어 있지 않습니다. 자세한 내용은 Always On 가용성 그룹 기능을 참조하세요.

참고 항목

SQL Server on Linux의 경우 Always On 가용성 그룹을 참조하세요.

가용성 그룹 기능이 사용되도록 설정되어 있는지 확인하려면 SQL Server에서 다음 T-SQL 스크립트를 실행합니다.

-- Run on SQL Server
-- Is the availability groups feature enabled on this SQL Server
DECLARE @IsHadrEnabled sql_variant = (select SERVERPROPERTY('IsHadrEnabled'))
SELECT
    @IsHadrEnabled as 'Is HADR enabled',
    CASE @IsHadrEnabled
        WHEN 0 THEN 'Availability groups DISABLED.'
        WHEN 1 THEN 'Availability groups ENABLED.'
        ELSE 'Unknown status.'
    END
    as 'HADR status'

Important

SQL Server 2016(13.x)의 경우 가용성 그룹 기능을 사용하도록 설정해야 하는 경우 SQL Server 2016 필수 조건 준비 - Azure SQL Managed Instance 링크에 설명된 추가 단계를 완료해야 합니다. 링크에서 지원하는 상위 SQL Server 2019(15.x) 이상 버전에는 이러한 추가 단계가 필요하지 않습니다.

가용성 그룹 기능이 사용하도록 설정되지 않은 경우 다음 단계에 따라 사용하도록 설정합니다.

  1. SQL Server 구성 관리자를 엽니다.

  2. 왼쪽 창에서 SQL Server Services를 선택합니다.

  3. SQL Server 서비스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    서비스에 대한 속성을 열기 위한 선택 항목이 포함된 SQL Server 구성 관리자를 보여 주는 스크린샷

  4. Always On 가용성 그룹 탭으로 이동합니다.

  5. Always On 가용성 그룹 확인란을 선택한 다음 확인을 선택합니다.

    AlwaysOn 가용성 그룹에 대한 속성을 보여 주는 스크린샷

    • SQL Server 2016(13.x)을 사용하는 경우와 Always On 가용성 그룹 사용 옵션이 사용되도록 설정되지 않고 This computer is not a node in a failover cluster. 메시지가 표시되는 경우 SQL Server 2016 필수 조건 준비 - Azure SQL Managed Instance 링크에 설명된 추가 단계를 수행합니다. 이러한 다른 단계를 이미 완료했으면 다시 돌아와서 이 단계를 다시 시도하세요.
  6. 대화 상자에서 확인을 선택합니다.

  7. SQL Server 서비스를 다시 시작합니다.

시작 추적 플래그 사용

링크 성능을 최적화하려면 시작 시 다음 추적 플래그를 사용하는 것이 좋습니다.

  • -T1800: 이 추적 플래그는 가용성 그룹의 기본 및 보조 복제본에 대한 로그 파일이 512바이트 및 4KB와 같이 섹터 크기가 다른 디스크에서 호스트되는 경우에 성능을 최적화합니다. 주 복제본과 보조 복제본 모두의 디스크 섹터 크기가 4KB이면 이 추적 플래그는 필요하지 않습니다. 자세한 내용은 KB3009974를 참조하세요.
  • -T9567: 이 추적 플래그는 자동 시드 중에 가용성 그룹에 대한 데이터 스트림 압축을 사용하도록 설정합니다. 압축은 프로세서의 부하를 증가시키지만 시드 중 전송 시간을 크게 줄일 수 있습니다.

참고 항목

SQL Server on Linux의 경우 추적 플래그 사용을 참조하세요.

시작 시 이러한 추적 플래그를 활성화하려면 다음 단계를 사용합니다.

  1. SQL Server 구성 관리자를 엽니다.

  2. 왼쪽 창에서 SQL Server Services를 선택합니다.

  3. SQL Server 서비스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    SQL Server 구성 관리자를 보여 주는 스크린샷

  4. 시작 매개 변수 탭으로 이동합니다. 시작 매개 변수 지정에서 -T1800을 입력하고 추가를 선택하여 시작 매개 변수를 추가합니다. 그런 다음, -T9567을 입력하고 추가를 선택하여 다른 추적 플래그를 추가합니다. 적용을 선택하여 변경 내용을 저장합니다.

    시작 매개 변수를 보여 주는 스크린샷

  5. 확인을 선택하여 속성 창을 닫습니다.

자세한 내용은 추적 플래그를 사용하도록 설정하는 구문을 참조하세요.

SQL Server 다시 시작 및 구성의 유효성 검사

지원되는 버전의 SQL Server가 있는지 확인하고 Always On 가용성 그룹 기능을 활성화하고 시작 추적 플래그를 추가한 후 SQL Server 인스턴스를 다시 시작하여 이러한 변경 내용을 모두 적용합니다.

  1. SQL Server 구성 관리자를 엽니다.

  2. 왼쪽 창에서 SQL Server Services를 선택합니다.

  3. SQL Server 서비스를 마우스 오른쪽 단추로 클릭한 다음, 다시 시작을 선택합니다.

    SQL Server 다시 시작 명령 호출을 보여 주는 스크린샷

다시 시작한 후 SQL Server에서 다음 T-SQL 스크립트를 실행하여 SQL Server 인스턴스 구성의 유효성을 검사합니다.

-- Run on SQL Server
-- Shows the version and CU of SQL Server
USE master;
GO
SELECT @@VERSION as 'SQL Server version';
GO
-- Shows if the Always On availability groups feature is enabled
SELECT SERVERPROPERTY ('IsHadrEnabled') as 'Is Always On enabled? (1 true, 0 false)';
GO
-- Lists all trace flags enabled on SQL Server
DBCC TRACESTATUS;

SQL Server 버전은 서비스 업데이트가 적용된 지원 버전 중 하나여야 하며 Always On 가용성 그룹 기능을 사용하도록 설정하고 추적 플래그 -T1800-T9567을 사용하도록 설정해야 합니다. 다음 스크린샷은 올바르게 구성된 SQL Server 인스턴스 예상 결과에 대한 예제입니다.

S S M S의 예상 결과를 보여 주는 스크린샷

네트워크 연결 구성

링크가 작동하려면 SQL Server와 SQL Managed Instance 간에 네트워크 연결이 있어야 합니다. 선택하는 네트워크 옵션은 SQL Server 인스턴스가 Azure 네트워크에 있는지 여부에 따라 달라집니다.

Azure Virtual Machines의 SQL Server

SQL Managed Instance를 호스트하는 동일한 Azure 가상 네트워크의 Azure Virtual Machines에 SQL Server를 배포하는 것은 네트워크 연결이 두 인스턴스 간에 자동으로 존재하므로 가장 간단한 방법입니다. 자세한 내용은 빠른 시작: Azure SQL Managed Instance에 연결하도록 Azure VM 구성을 참조하세요.

Azure Virtual Machines 인스턴스의 SQL Server가 관리되는 인스턴스와 다른 가상 네트워크에 있는 경우 두 가상 네트워크 간에 연결을 설정해야 합니다. 이 시나리오가 작동하기 위해 가상 네트워크가 동일한 구독에 있을 필요는 없습니다.

가상 네트워크를 연결하는 두 가지 옵션이 있습니다.

피어링이 Microsoft 백본 네트워크를 사용하므로 적합한 기능입니다. 따라서 연결성 관점에서 피어링된 가상 네트워크와 같은 가상 네트워크에 있는 가상 머신 간의 대기 시간이 거의 같습니다. 가상 네트워크 피어링은 동일한 지역의 네트워크 간에 지원됩니다. 글로벌 가상 네트워크 피어링은 2020년 9월 22일 이후 생성된 서브넷에서 호스트되는 인스턴스에 지원됩니다. 자세한 내용은 질문과 대답(FAQ)을 참조하세요.

Azure 외부의 SQL Server

SQL Server 인스턴스가 Azure 외부에서 호스트되는 경우 다음 옵션 중 하나를 사용하여 SQL Server와 SQL Managed Instance 간에 VPN 연결을 설정합니다.

데이터를 복제할 때 최상의 네트워크 성능을 위해 ExpressRoute를 사용하는 것이 좋습니다. 사용 사례에 대한 충분한 대역폭으로 게이트웨이를 프로비전합니다.

환경 간의 네트워크 포트

연결 메커니즘에 관계없이 네트워크 트래픽이 환경 간에 흐르려면 충족해야 하는 요구 사항이 있습니다.

관리되는 인스턴스를 호스트하는 서브넷의 NSG(네트워크 보안 그룹) 규칙은 다음을 허용해야 합니다.

  • 원본 SQL Server IP에서 트래픽을 수신하는 인바운드 포트 5022 및 포트 범위 11000~11999
  • 대상 SQL Server IP로 트래픽을 보내는 아웃바운드 포트 5022

네트워크 호스팅 SQL Server의 모든 방화벽과 호스트 OS에서 다음을 허용해야 합니다.

  • MI 서브넷 /24의 원본 IP 범위(예: 10.0.0.0/24)에서 트래픽을 수신하기 위해 열린 인바운드 포트 5022
  • MI 서브넷의 대상 IP 범위(예: 10.0.0.0/24)로 트래픽을 보내기 위해 열린 아웃바운드 포트 5022 및 포트 범위 11000~11999

SQL Server와 관리되는 인스턴스 간 링크를 설정하기 위한 네트워크 요구 사항을 보여 주는 다이어그램

다음 표에서는 각 환경에 대한 포트 작업에 대해 설명합니다.

Environment 수행할 작업
SQL Server(Azure에서) 네트워크 방화벽의 포트 5022에서 SQL Managed Instance의 전체 서브넷 IP 범위에 대한 인바운드 및 아웃바운드 트래픽을 모두 엽니다. 필요한 경우 SQL Server 호스트 OS(Windows/Linux) 방화벽에서 동일한 작업을 수행합니다. 포트 5022에서 통신을 허용하도록 VM을 호스트하는 가상 네트워크에 NSG(네트워크 보안 그룹) 규칙을 만듭니다.
SQL Server(Azure 외부) 네트워크 방화벽의 포트 5022에서 SQL Managed Instance의 전체 서브넷 IP 범위에 대한 인바운드 및 아웃바운드 트래픽을 모두 엽니다. 필요한 경우 SQL Server 호스트 OS(Windows/Linux) 방화벽에서 동일한 작업을 수행합니다.
SQL Managed Instance Azure Portal에서 NSG 규칙을 만들어 포트 5022 및 포트 범위 11000~11999에서 SQL Server를 호스트하는 IP 주소 및 네트워킹에서 인바운드 및 아웃바운드 트래픽을 허용합니다.

SQL Server 인스턴스의 Windows 호스트 OS에서 다음 PowerShell 스크립트를 사용하여 Windows 방화벽에서 포트를 엽니다.

New-NetFirewallRule -DisplayName "Allow TCP port 5022 inbound" -Direction inbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP
New-NetFirewallRule -DisplayName "Allow TCP port 5022 outbound" -Direction outbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP

다음 다이어그램에서는 SQL Server를 호스트하는 OS 방화벽 및 회사 방화벽이나 게이트웨이를 포함하여 환경의 모든 방화벽에 열린 포트가 있어야 함을 나타내는 온-프레미스 네트워크 환경의 예제를 보여줍니다.

SQL Server와 관리되는 인스턴스 간 링크를 설정하기 위한 네트워크 인프라를 보여 주는 다이어그램

Important

  • 포트는 호스트 서버뿐만 아니라 네트워크의 모든 회사 방화벽이나 게이트웨이를 포함하여 네트워킹 환경의 모든 방화벽에서 열려 있어야 합니다. 회사 환경에서는 회사 네트워킹 계층에서 추가 포트를 열 수 있도록 이 섹션의 정보를 네트워크 관리자에게 표시해야 할 수 있습니다.
  • SQL Server 쪽에서 엔드포인트를 사용자 지정할 수 있지만 SQL Managed Instance의 포트 번호를 변경하거나 사용자 지정할 수 없습니다.
  • 관리되는 인스턴스를 호스트하는 서브넷의 IP 주소 범위와 SQL Server가 겹치지 않아야 합니다.

허용 목록에 URL 추가

네트워크 보안 설정에 따라 SQL Managed Instance FQDN 및 Azure에서 사용하는 일부 리소스 관리 엔드포인트의 URL을 허용 목록에 추가해야 할 수 있습니다.

다음에는 허용 목록에 추가해야 하는 리소스가 나와 있습니다.

  • SQL Managed Instance의 FQDN(정규화된 도메인 이름) 예: managedinstance1.6d710bcf372b.database.windows.net.
  • Microsoft Entra 인증 기관
  • Microsoft Entra 엔드포인트 리소스 ID
  • Resource Manager 엔드포인트
  • 서비스 엔드포인트

SSMS(SQL Server Management Studio)의 도구 인터페이스에 액세스하고 클라우드 내에 허용 목록에 추가해야 하는 리소스의 특정 URL을 식별하려면 정부 클라우드용 SSMS 구성 섹션의 단계를 수행합니다.

네트워크 연결 테스트

링크가 작동하려면 SQL Server 및 SQL Managed Instance 간의 양방향 네트워크 연결이 필요합니다. SQL Server 쪽에서 포트를 열고 SQL Managed Instance 쪽에서 NSG 규칙을 구성한 후 SSMS(SQL Server Management Studio) 또는 Transact-SQL을 사용하여 연결을 테스트합니다.

SQL Server와 SQL Managed Instance 둘 다에서 임시 SQL 에이전트 작업을 만들어 두 인스턴스 사이 연결을 확인하여 네트워크를 테스트합니다. SSMS의 Network Checker를 사용하는 경우, 작업이 자동으로 만들어지고 테스트가 완료되면 삭제됩니다. T-SQL을 사용해 네트워크를 테스트하는 경우 SQL 에이전트 작업을 수동으로 삭제해야 합니다.

참고 항목

현재 SQL Server on Linux에서 SQL Server 에이전트의 PowerShell 스크립트를 실행하는 것은 지원되지 않으므로 지금은 SQL Server on Linux의 SQL Server 에이전트 작업에서 Test-NetConnection을(를) 실행할 수 없습니다.

SQL 에이전트를 사용해 네트워크 연결을 테스트하려면 필요한 요구 사항은 다음과 같습니다.

  • 테스트를 수행하는 사용자에게 SQL Server와 SQL Managed Instance 둘 다에 대하여 작업을 만들 권한(sysadmin 자격이거나, msdb의 SQLAgentOperator 역할에 속함)이 있어야 합니다.
  • SQL Server 에이전트 서비스가 SQL Server에서 실행 중이어야 합니다. 에이전트는 기본적으로 SQL Managed Instance에 위치하므로 추가 작업은 필요하지 않습니다.

SSMS에서 SQL Server와 SQL Managed Instance 간의 네트워크 연결을 테스트하려면 다음 단계를 수행합니다.

  1. SSMS에서 주 복제본이 될 인스턴스에 연결합니다.

  2. 개체 탐색기에서 데이터베이스를 확장하고 보조 복제본과 연결하려는 데이터베이스를 마우스 오른쪽 단추로 클릭합니다. 작업>Azure SQL Managed Instance 링크>연결 테스트를 선택하여 네트워크 검사 마법사를 엽니다.

    데이터베이스 링크 오른쪽 클릭 메뉴에서 테스트 연결이 선택된 S S M S의 개체 탐색기 스크린샷

  3. 네트워크 검사 마법사의 소개 페이지에서 다음을 선택합니다.

  4. 필수 조건 페이지에서 모든 요구 사항이 충족되면 다음을 선택합니다. 그렇지 않으면 충족되지 않은 필수 조건을 해결한 다음, 유효성 검사 다시 실행을 선택합니다.

  5. 로그인 페이지에서 로그인을 선택하여 보조 복제본이 될 다른 인스턴스에 연결합니다. 다음을 선택합니다.

  6. 네트워크 옵션 지정 페이지에서 세부 정보를 확인하고 필요한 경우 IP 주소를 제공합니다. 다음을 선택합니다.

  7. 요약 페이지에서 마법사가 수행하는 작업을 검토한 다음, 마침을 선택하여 두 복제본(replica) 간의 연결을 테스트합니다.

  8. 결과 페이지를 검토하여 두 복제본(replica) 사이에 연결이 있는지 확인한 다음, 닫기를 선택하여 완료합니다.

주의

원본 환경과 대상 환경 간에 유효성이 검사된 네트워크 연결이 있는 경우에만 다음 단계를 진행합니다. 그렇지 않으면 진행하기 전에 네트워크 연결 문제를 해결합니다.

TDE 보호 데이터베이스의 인증서 마이그레이션(선택 사항)

TDE(투명한 데이터 암호화)로 보호되는 SQL Server 데이터베이스를 관리되는 인스턴스로 연결하는 경우 링크를 사용하기 전에 해당 암호화 인증서를 온-프레미스 또는 Azure VM SQL Server 인스턴스에서 관리되는 인스턴스로 마이그레이션해야 합니다. 자세한 단계는 TDE로 보호되는 데이터베이스의 인증서를 Azure SQL Managed Instance로 마이그레이션을 참조하세요.

서비스 관리 TDE 키로 암호화된 SQL Managed Instance 데이터베이스는 SQL Server로 연결될 수 없습니다. 암호화된 데이터베이스가 고객 관리형 키로 암호화되고 대상 서버가 데이터베이스를 암호화하는 데 사용되는 것과 동일한 키에 액세스할 수 있는 경우에만 암호화된 데이터베이스를 SQL Server에 연결할 수 있습니다. 자세한 내용은 Azure Key Vault를 사용하여 SQL Server TDE 설정을 참조하세요.

참고 항목

Azure Key Vault는 SQL Server 2022 CU 14부터 SQL Server on Linux에서 지원됩니다.

SSMS 설치

SSMS(SQL Server Management Studio)는 Managed Instance 링크를 사용하는 가장 쉬운 방법입니다. SSMS 버전 19.0 이상을 다운로드하고 클라이언트 머신에 설치합니다.

설치가 완료되면 SSMS를 열고 지원되는 SQL Server 인스턴스에 연결합니다. 사용자 데이터베이스를 마우스 오른쪽 단추로 클릭하고 메뉴에 Azure SQL Managed Instance 링크 옵션이 표시되는지 확인합니다.

바로 가기 메뉴의 Azure SQL Managed Instance 링크 옵션을 보여 주는 스크린샷

정부 클라우드용 SSMS 구성

SQL Managed Instance를 정부 클라우드에 배포하려면 올바른 클라우드를 사용하도록 SSMS(SQL Server Management Studio) 설정을 수정해야 합니다. SQL Managed Instance를 정부 클라우드에 배포하지 않는 경우 이 단계를 건너뜁니다.

SSMS 설정을 업데이트하려면 다음 단계를 수행합니다.

  1. SSMS를 엽니다.
  2. 메뉴에서 도구를 선택한 다음, 옵션을 선택합니다.
  3. Azure 서비스를 확장하고 Azure Cloud를 선택합니다.
  4. Azure 클라우드 선택에서 드롭다운 목록을 사용하여 AzureUSGovernment 또는 다른 정부 클라우드(예: AzureChinaCloud)를 선택합니다.

Azure 클라우드가 강조 표시된 SSMS UI, 옵션 페이지, Azure 서비스의 스크린샷

퍼블릭 클라우드로 돌아가려면 드롭다운 목록에서 AzureCloud를 선택합니다.

링크를 사용하려면 다음을 수행합니다.

링크에 대해 자세히 알아보려면 다음을 수행합니다.

다른 복제 및 마이그레이션 시나리오의 경우 다음을 고려합니다.