마이그레이션: SQL Server에서 Azure Arc 지원 SQL Managed Instance로
이 시나리오에서는 두 가지 백업 및 복원 방법을 통해 SQL Server 인스턴스에서 Azure Arc의 Azure SQL 관리형 인스턴스로 데이터베이스를 마이그레이션하는 단계를 안내합니다.
Azure Blob Storage 사용
Azure Arc 지원 SQL Managed Instance로 마이그레이션하려면 Azure Blob 스토리지를 사용합니다.
이 방법은 백업한 후 복원할 수 있는 임시 스토리지 위치로 Azure Blob Storage를 사용합니다.
필수 조건
-
이때 Azure Data Studio의 내부자 빌드를 사용합니다.
Azure 구독
1단계: Azure Blob Storage 프로비저닝
- Azure Blob Storage 계정 만들기에 설명된 단계를 수행합니다.
- Azure Storage Explorer 시작
- Azure에 로그인하여 이전 단계에서 만든 Blob Storage에 액세스합니다.
- Blob Storage 계정을 마우스 오른쪽 단추로 클릭하고 Blob 컨테이너 만들기를 선택하여 백업 파일이 저장될 새 컨테이너를 만듭니다.
2단계: Blob Storage 자격 증명 가져오기
Azure Storage Explorer에서 방금 만든 Blob 컨테이너를 마우스 오른쪽 단추로 클릭하고 공유 액세스 서명 가져오기를 선택합니다.
읽기, 쓰기, 나열을 선택합니다.
만들기를 선택합니다.
이 화면의 URI 및 쿼리 문자열을 적어 둡니다. 해당 정보는 이후 단계에서 필요합니다. 복사 단추를 클릭하여 메모장/OneNote 등에 저장합니다.
공유 액세스 서명 창을 닫습니다.
3단계: Azure Blob Storage에 데이터베이스 파일 백업
이 단계에서는 원본 SQL Server에 연결하고 SQL Managed Instance - Azure Arc로 마이그레이션할 데이터베이스의 백업 파일을 만듭니다.
Azure Data Studio 시작
SQL Managed Instance - Azure Arc로 마이그레이션할 데이터베이스가 있는 SQL Server 인스턴스에 연결합니다.
데이터베이스를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
<...>
에 표시된 자리 표시자를 이전 단계의 공유 액세스 서명 정보로 바꾸어 다음 형식으로 쿼리를 준비합니다. 값을 대체한 후 쿼리를 실행합니다.IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>') CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';
마찬가지로, BACKUP DATABASE 명령을 다음과 같이 준비하여 Blob 컨테이너에 대한 백업 파일을 만듭니다. 값을 대체한 후 쿼리를 실행합니다.
BACKUP DATABASE <database name> TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
Azure Storage Explorer를 열고 이전 단계에서 만든 백업 파일이 Blob 컨테이너에 표시되는지 확인합니다.
URL에 백업에 대한 자세한 내용은 아래를 참조하세요.
4단계: Azure Blob Storage에서 SQL Managed Instance - Azure Arc로 데이터베이스 복원
Azure Data Studio에서 로그인하고 SQL Managed Instance - Azure Arc에 연결합니다.
시스템 데이터베이스를 펼치고 master 데이터베이스를 마우스 오른쪽 단추로 클릭한 다음, 새 쿼리를 선택합니다.
쿼리 편집기 창에서 이전 단계와 동일한 쿼리를 준비하고 실행하여 자격 증명을 만듭니다.
IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>') CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';
아래 명령을 준비하고 실행하여 백업 파일을 읽을 수 있고 그대로 유지되는지 확인합니다.
RESTORE FILELISTONLY FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
RESTORE DATABASE 명령을 다음과 같이 준비하고 실행하여 SQL Managed Instance - Azure Arc의 데이터베이스로 백업 파일을 복원합니다.
RESTORE DATABASE <database name> FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak' WITH MOVE 'Test' to '/var/opt/mssql/data/<file name>.mdf' ,MOVE 'Test_log' to '/var/opt/mssql/data/<file name>.ldf' ,RECOVERY; GO
방법 2: kubectl을 사용하여 Azure SQL Managed Instance - Azure Arc Pod에 백업 파일 복사
이 방법은 모든 방법으로 만든 백업 파일을 사용하고 Azure SQL 관리형 인스턴스 Pod의 로컬 스토리지에 복사하여 Windows 또는 Linux의 일반적인 파일 시스템에 있는 것처럼 복원할 수 있도록 하는 방법을 보여 줍니다. 이 시나리오에서는 kubectl cp
명령을 사용하여 한 위치의 파일을 Pod의 파일 시스템에 복사합니다.
필수 조건
- kubectl을 설치하고 Azure Arc 데이터 서비스가 배포된 Kubernetes 클러스터를 가리키도록 구성합니다.
- Azure Data Studio 또는 SQL Server Management Server와 같은 도구를 설치하고 백업 파일을 만들려고 하거나 로컬 파일 시스템에 이미 생성된 기존 .bak 파일이 있는 SQL Server에 연결합니다.
1단계: 아직 백업하지 않은 경우 데이터베이스 백업
디스크에 대한 일반적인 SQL Server 백업처럼 SQL Server 데이터베이스를 로컬 파일 경로에 백업합니다.
BACKUP DATABASE Test
TO DISK = 'C:\Backupfiles\test.bak'
WITH FORMAT, MEDIANAME = 'Test' ;
GO
2단계: Pod의 파일 시스템에 백업 파일 복사
SQL 인스턴스가 배포된 Pod의 이름을 찾습니다. 일반적으로 pod/<sqlinstancename>-0
과 비슷하게 표시됩니다.
다음을 실행하여 모든 Pod 목록을 가져옵니다.
kubectl get pods -n <namespace of data controller>
예시:
로컬 스토리지에서 클러스터의 SQL Pod로 백업 파일을 복사합니다.
kubectl cp <source file location> <pod name>:var/opt/mssql/data/<file name> -n <namespace name> -c arc-sqlmi
#Example:
kubectl cp C:\Backupfiles\test.bak sqlinstance1-0:var/opt/mssql/data/test.bak -n arc -c arc-sqlmi
3단계: 데이터베이스 복원
RESTORE 명령을 준비하고 실행하여 Azure SQL 관리형 인스턴스 - Azure Arc로 백업 파일을 복원합니다.
RESTORE DATABASE test FROM DISK = '/var/opt/mssql/data/<file name>.bak'
WITH MOVE '<database name>' to '/var/opt/mssql/data/<file name>.mdf'
,MOVE '<database name>' to '/var/opt/mssql/data/<file name>_log.ldf'
,RECOVERY;
GO
예시:
RESTORE DATABASE test FROM DISK = '/var/opt/mssql/data/test.bak'
WITH MOVE 'test' to '/var/opt/mssql/data/test.mdf'
,MOVE 'test' to '/var/opt/mssql/data/test_log.ldf'
,RECOVERY;
GO