특정 시점 복원 수행
PITR(지정 시간 복원)을 사용하여 데이터베이스를 보존 기간 내에 있는 과거 특정 시점의 다른 데이터베이스 복사본으로 만듭니다. 이 문서에서는 Azure Arc 지원 SQL Managed Instance에서 데이터베이스의 특정 시점 복원을 수행하는 방법을 설명합니다.
특정 시점 복원은 다음과 같이 데이터베이스를 복원할 수 있습니다.
- 기존 데이터베이스에서
- 동일한 Azure Arc 지원 SQL Managed Instance의 새 데이터베이스로
데이터베이스를 미리 구성된 보존 설정 내의 특정 시점으로 복원할 수 있습니다. 다음과 같이 Azure Arc 지원 SQL Managed Instance에 대한 보존 설정을 확인할 수 있습니다.
직접 연결 모드의 경우:
az sql mi-arc show --name <SQL instance name> --resource-group <resource-group>
#Example
az sql mi-arc show --name sqlmi --resource-group myresourcegroup
간접 연결 모드의 경우:
az sql mi-arc show --name <SQL instance name> --k8s-namespace <SQL MI namespace> --use-k8s
#Example
az sql mi-arc show --name sqlmi --k8s-namespace arc --use-k8s
현재 특정 시점 복원은 다음과 같이 데이터베이스를 복원할 수 있습니다.
- 인스턴스의 기존 데이터베이스에서
- 동일한 인스턴스의 새 데이터베이스로
자동 백업
Azure Arc 지원 SQL Managed Instance에는 기본 제공 자동 백업 기능이 사용하도록 설정되어 있습니다. 새 데이터베이스를 만들거나 복원할 때마다 Azure Arc 지원 SQL Managed Instance에서 전체 백업을 즉시 시작하고 차등 및 트랜잭션 로그 백업을 자동으로 예약합니다. SQL 관리되는 인스턴스는 배포 중에 이러한 백업을 지정된 스토리지 클래스에 저장합니다.
특정 시점 복원을 사용하면 데이터베이스를 보존 기간 내의 특정 시점으로 복원할 수 있습니다. 데이터베이스를 특정 시점으로 복원하기 위해 Azure Arc 사용 데이터 서비스는 백업 파일을 특정 순서로 적용합니다. 예시:
- 전체 백업
- 차등 백업
- 하나 이상의 트랜잭션 로그 백업
현재 전체 백업은 일주일에 한 번, 차등 백업은 12시간마다, 트랜잭션 로그 백업은 5분마다 수행됩니다.
보존 기간
새 Azure Arc 지원 SQL Managed Instance에 대한 기본 보존 기간은 7일이며, 0 또는 1~35일 값으로 조정할 수 있습니다. 보관 기간은 SQL 관리되는 인스턴스 배포 중에 --retention-days
속성을 지정하여 설정할 수 있습니다. 구성된 보존 기간보다 오래된 백업 파일은 자동으로 삭제됩니다.
az CLI를 사용하여 특정 시점의 데이터베이스 만들기
az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s
또한 --dry-run
옵션을 사용하여 실제로 데이터베이스를 복원하지 않고도 복원 작업의 유효성을 검사할 수도 있습니다.
az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s --dry-run
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s --dry-run
kubectl을 사용하여 특정 시점의 데이터베이스 만들기
Kubernetes 네이티브 도구를 사용하여 특정 시점 복원을 수행하려면
kubectl
을 사용할 수 있습니다. 작업 사양 yaml 파일을 만듭니다. 예시:apiVersion: tasks.sql.arcdata.microsoft.com/v1 kind: SqlManagedInstanceRestoreTask metadata: name: myrestoretask20220304 namespace: test spec: source: name: miarc1 database: testdb restorePoint: "2021-10-12T18:35:33Z" destination: name: miarc1 database: testdb-pitr dryRun: false
속성을 다음과 같이 편집합니다.
name:
각 CR(사용자 지정 리소스)에 대한 고유 문자열입니다. Kubernetes에 필요합니다.- 인스턴스가 있는
namespace:
Kubernetes 네임스페이스 source: ... name:
원본 인스턴스의 이름입니다.source: ... database:
복원이 적용될 원본 데이터베이스의 이름입니다.restorePoint:
복원 작업에 대한 특정 시점(UTC 날짜/시간)입니다.destination: ... name:
대상 Arc 사용 SQL 관리되는 인스턴스의 이름입니다. 현재 특정 시점 복원은 Arc SQL 관리되는 인스턴스 내에서만 지원됩니다. 이 속성은 원본 SQL 관리되는 인스턴스와 동일해야 합니다.destination: ... database:
복원이 적용될 새 데이터베이스의 이름입니다.
특정 시점 복원을 시작하는 작업을 만듭니다. 다음 예제에서는
myrestoretask20220304.yaml
에 정의된 작업을 시작합니다.kubectl apply -f myrestoretask20220304.yaml
복원 작업 상태를 다음과 같이 확인합니다.
kubectl get sqlmirestoretask -n <namespace>
복원 작업 상태가 PITR 진행률에 따라 약 10초마다 업데이트됩니다. 상태는 Waiting
에서 Restoring
, Completed
또는 Failed
로 진행됩니다.
Azure Data Studio를 사용하여 특정 시점의 데이터베이스 만들기
다음과 같이 Azure Data Studio에서 데이터베이스를 특정 시점으로 복원할 수도 있습니다.
- Azure Data Studio 시작
- 도구에서 설명한 대로 필요한 Arc 확장이 있는지 확인합니다.
- Azure Arc 데이터 컨트롤러에 연결
- 데이터 컨트롤러 노드를 펼치고 마우스 오른쪽 단추로 인스턴스를 클릭하고 관리를 선택합니다. Azure Data Studio에서 SQL 관리되는 인스턴스 대시보드를 시작합니다.
- 대시보드에서 백업 탭을 클릭합니다.
- SQL 관리되는 인스턴스의 데이터베이스 목록, 가장 빠른 복원 시간 및 최신 복원 시간 범위, 복원을 시작하는 아이콘이 표시됩니다.
- 복원하려는 데이터베이스의 아이콘을 클릭합니다. Azure Data Studio에서 오른쪽을 향해 블레이드를 시작합니다.
- 블레이드에서 필요한 입력을 제공하고, 복원을 클릭합니다.
진행 상황 모니터링
복원이 시작되면 전체, 차등 및 로그 백업의 실제 복원 작업을 실행하는 작업이 Kubernetes 클러스터에 만들어집니다. 이 작업의 진행률은 다음과 같이 Kubernetes 클러스터에서 모니터링할 수 있습니다.
kubectl get sqlmirestoretask -n <namespace>
#Example
kubectl get sqlmirestoretask -n arc
작업에서 kubectl describe
를 실행하여 작업에 대한 자세한 정보를 확인할 수 있습니다. 예시:
kubectl describe sqlmirestoretask <nameoftask> -n <namespace>
보존 기간 구성
Azure Arc 지원 SQL Managed Instance에 대한 보존 기간은 다음과 같이 원래 설정에서 다시 구성할 수 있습니다.
Warning
현재 보존 기간을 줄이면 새 보존 기간보다 오래된 시점으로 복원할 수 없게 됩니다. 새 보존 기간 내에 PITR을 제공하는 데 더 이상 필요 없는 백업은 삭제됩니다. 현재 보존 기간을 늘려도 새 보존 기간의 더 오래된 시점으로 복원하는 기능이 즉시 제공되지는 않습니다. 시간이 지나 시스템이 백업을 장기간 보존하기 시작하면 이 기능을 사용할 수 있습니다.
다음과 같이 SQL Managed Instance-Azure Arc에 대해 --retention-period
를 변경할 수 있습니다. 아래 명령은 direct
및 indirect
연결 모드 모두에 적용됩니다.
az sql mi-arc update --name <SQLMI name> --k8s-namespace <namespace> --use-k8s --retention-days <retentiondays>
예시:
az sql mi-arc update --name sqlmi --k8s-namespace arc --use-k8s --retention-days 10
자동 백업 사용 안 함
다음과 같이 --retention-days
속성을 0으로 설정하여 기본 제공 자동화된 백업을 Azure Arc 지원 SQL Managed Instance의 특정 인스턴스에 사용하지 않도록 설정할 수 있습니다. 아래 명령은 direct
및 indirect
모드 모두에 적용됩니다.
Warning
자동 백업을 Azure Arc 지원 SQL Managed Instance에 사용하지 않도록 설정하면 구성된 자동 백업이 모두 삭제되고 특정 시점 복원을 수행할 수 있는 기능이 손실됩니다. 필요한 경우 자동 백업을 다시 시작하도록 retention-days
속성을 변경할 수 있습니다.
az sql mi-arc update --name <SQLMI name> --k8s-namespace <namespace> --use-k8s --retention-days 0
예시:
az sql mi-arc update --name sqlmi --k8s-namespace arc --use-k8s --retention-days 0
백업 모니터링
백업은 /var/opt/mssql/backups/archived/<dbname>/<datetime>
폴더에 저장됩니다. 여기서 <dbname>
은 데이터베이스 이름이고 <datetime>
은 각 전체 백업 시작에 대한 UTC 형식의 타임스탬프입니다. 전체 백업이 시작될 때마다 해당 폴더 내에 전체 백업과 모든 후속 차등 및 트랜잭션 로그 백업이 포함된 새 폴더가 생성됩니다. 최신 전체 백업과 후속 차등 및 트랜잭션 로그 백업은 /var/opt/mssql/backups/current/<dbname><datetime>
폴더에 저장됩니다.
제한 사항
Azure Arc 지원 SQL Managed Instance에 대한 특정 시점 복원에는 다음과 같은 제한 사항이 있습니다.
- 특정 시점 복원은 인스턴스 수준 기능이 아닌 데이터베이스 수준 기능입니다. 특정 시점 복원으로 전체 인스턴스를 복원할 수 없습니다.
- 백업이 수행된 동일한 Azure Arc 지원 SQL Managed Instance로만 복원할 수 있습니다.