Managed Instance 링크 모범 사례 - Azure SQL Managed Instance
적용 대상: Azure SQL Managed Instance
이 문서에서는 Managed Instance 링크를 사용하여 Azure SQL Managed Instance와 어디서나 호스트되는 SQL Server 인스턴스 간에 데이터를 복제할 때의 모범 사례를 간략하게 설명하며 연결된 복제본 간에 거의 실시간으로 데이터 복제를 제공합니다.
정기적으로 로그 백업 수행
SQL Server가 초기 기본 데이터베이스인 경우, 초기 시드가 완료된 후 SQL Server에서 첫 번째 트랜잭션 로그 백업을 수행하는 것이 중요합니다. 단, Azure SQL Managed Instance에서 데이터베이스 상태가 더 이상 복원 중...이 아니어야 합니다. 그런 다음 SQL Server가 기본 역할에 있는 동안 정상 트랜잭션 로그 파일 크기를 유지하기 위해 SQL Server 트랜잭션 로그 백업을 정기적으로 수행합니다.
링크 기능은 Always On 가용성 그룹을 기반으로 하는 분산 가용성 그룹 기술을 사용하여 데이터를 복제합니다. 분산 가용성 그룹을 사용한 데이터 복제는 트랜잭션 로그 레코드 복제를 기반으로 합니다. 트랜잭션 로그 레코드는 보조 복제본의 데이터베이스에 복제될 때까지 주 SQL Server 인스턴스의 데이터베이스에서 자를 수 없습니다. 네트워크 연결 문제로 인해 트랜잭션 로그 레코드 복제가 느리거나 차단된 경우 기본 인스턴스에서 로그 파일이 계속 증가합니다. 증가 속도는 워크로드의 강도와 네트워크 속도에 따라 달라집니다. 주 인스턴스에서 네트워크 연결 중단이 장기화되고 워크로드가 많은 경우 로그 파일에서 사용 가능한 모든 저장소 공간을 사용할 수 있습니다.
일반 트랜잭션 로그 백업을 수행하면 트랜잭션 로그가 잘립니다. 또한 로그 파일 증가로 인해 기본 SQL Server 인스턴스의 공간이 부족해지는 위험이 최소화됩니다. 로그 백업이 이미 자동으로 수행되므로 SQL Managed Instance가 주 인스턴스인 경우에는 추가 작업이 필요하지 않습니다. SQL Server 주 인스턴스에서 로그 백업을 정기적으로 수행하면 계획되지 않은 로그 증가 이벤트에 대한 데이터베이스 복원력이 향상됩니다. SQL Server 에이전트 작업을 사용하여 일일 로그 백업 작업을 예약하는 것이 좋습니다.
T-SQL(Transact-SQL) 스크립트를 사용하여 이 섹션에 제공된 샘플과 같은 로그 파일을 백업할 수 있습니다. 샘플 스크립트의 자리 표시자를 데이터베이스 이름, 백업 파일의 이름과 경로 및 설명으로 바꿉니다.
트랜잭션 로그를 백업하려면 SQL Server에서 다음 샘플 T-SQL(Transact-SQL) 스크립트를 사용합니다.
-- Execute on SQL Server
-- Take log backup
BACKUP LOG [<DatabaseName>]
TO DISK = N'<DiskPathandFileName>'
WITH NOFORMAT, NOINIT,
NAME = N'<Description>', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 1
다음 T-SQL(Transact-SQL) 명령을 사용하여 SQL Server의 데이터베이스에서 사용하는 로그 공간을 확인합니다.
-- Execute on SQL Server
DBCC SQLPERF(LOGSPACE);
쿼리 출력은 샘플 데이터베이스 tpcc
에 대한 다음 예제와 같습니다.
이 예제에서 데이터베이스는 사용 가능한 로그의 76%를 사용했으며 절대 로그 파일 크기는 약 27GB(27,971MB)입니다. 작업 임계값은 워크로드에 따라 달라집니다. 앞선 예제에서 트랜잭션 로그 크기와 로그 사용 비율은 일반적으로 트랜잭션 로그 백업을 수행하여 로그 파일을 잘라내어 공간 일부를 확보하거나 더 자주 로그 백업을 수행해야 함을 나타냅니다. 또한 트랜잭션 로그 자르기가 열려 있는 트랜잭션에 의해 차단되고 있음을 나타낼 수도 있습니다. SQL Server의 트랜잭션 로그 문제 해결에 대한 자세한 내용은 꽉 찬 트랜잭션 로그 문제 해결(SQL Server 오류 9002)을 참조하세요. Azure SQL Managed Instance에서 트랜잭션 로그 문제를 해결하는 방법에 대한 자세한 내용은 Azure SQL Managed Instance를 사용하여 트랜잭션 로그 오류 문제 해결을 참조하세요.
참고 항목
링크에 참여할 때 자동화된 전체 백업 및 트랜잭션 로그 백업은 주 복제본인지 여부에 관계없이 SQL Managed Instance에서 가져오기됩니다. 차등 백업은 복원 시간이 더 길어질 수 있으므로 수행되지 않습니다.
복제본 간의 성능 용량 일치
링크 기능을 사용하는 경우 보조 복제본이 주 복제본에서 복제를 유지할 수 없거나 장애 조치(failover) 후 성능 문제를 방지하려면 SQL Server와 SQL Managed Instance 간의 성능 용량을 일치시켜야 합니다. 성능 용량에는 CPU 코어(또는 Azure의 vCore), 메모리 및 I/O 처리량이 포함됩니다.
보조 복제본에서 다시 실행 큐 크기를 사용하여 복제 성능을 확인할 수 있습니다. 다시 실행 큐 크기는 보조 복제본에서 다시 실행되기를 기다리는 로그 레코드 수를 나타냅니다. 다시 실행 큐 크기가 지속적으로 높으면 보조 복제본이 주 복제본을 따라잡을 수 없다는 것을 나타냅니다. 다음 방법으로 다시 실행 큐 크기를 확인할 수 있습니다.
- 주 복제본의 sys.dm_hadr_database_replica_states 동적 관리 뷰의
redo_queue_size
값입니다. - 주 복제본의 Get-AzSqlInstanceLink의
InstanceRedoLagReplicationSeconds
값입니다.
다시 실행 큐 크기가 지속적으로 높은 경우 보조 복제본에서 리소스를 늘리는 것이 좋습니다.
인증서 회전
데이터베이스 미러링 엔드포인트 보안 확보를 위해 사용한 인증서가 만료될 수 있으며, 그러면 링크 성능이 저하될 수 있습니다. 이 문제를 방지하려면, 인증서가 만료되기 전에 회전해야 합니다.
다음 T-SQL(Transact-SQL) 명령을 사용해 현재 인증서의 만료일을 확인합니다.
-- Run on SQL Server
USE MASTER
GO
SELECT * FROM sys.certificates WHERE pvt_key_encryption_type = 'MK'
인증서 만료가 임박했거나 이미 만료된 경우, 새 인증서를 만든 다음 기존 엔드포인트를 변경해 현재 인증서를 대체하도록 하면 됩니다.
엔드포인트가 새 인증서를 사용하도록 구성되면, 만료된 인증서를 삭제하면 됩니다.
시작 추적 플래그 추가
SQL Server에서 시작 매개 변수로 추가될 때 링크를 통해 데이터 복제 성능을 최적화할 수 있는 두 가지 추적 플래그(-T1800
및 -T9567
)가 있습니다. 자세한 내용은 시작 추적 플래그 사용을 참조하세요.
관련 콘텐츠
링크를 사용하려면 다음을 수행합니다.
- Managed Instance 링크에 대한 환경 준비
- SSMS를 사용하여 SQL Server와 SQL Managed Instance 간의 링크 구성
- 스크립트를 사용하여 SQL Server 및 SQL Managed Instance 간 링크 구성
- 링크 장애 조치(failover)
- 링크를 사용하여 마이그레이션
링크에 대해 자세히 알아보려면 다음을 수행합니다.
다른 복제 및 마이그레이션 시나리오의 경우 다음을 고려합니다.