Migrazione - da SQL Server a Istanza gestita di SQL abilitata da Azure Arc
Questo scenario illustra i passaggi per eseguire la migrazione di un database da un'Istanza di SQL Server a un'istanza gestita di SQL di Azure in Azure Arc tramite due diversi metodi di backup e ripristino.
Usare l'archiviazione BLOB di Azure
Usare l'archiviazione BLOB di Azure per la migrazione a Istanza gestita di SQL abilitata da Azure Arc.
Questo metodo usa l'archiviazione BLOB di Azure come percorso di archiviazione temporanea di cui è possibile eseguire il backup, quindi eseguire il ripristino.
Prerequisiti
-
A questo punto, usare la build Insider di Azure Data Studio.
Installare Azure Storage Explorer
Sottoscrizione di Azure
Passaggio 1: Eseguire il provisioning dell'archiviazione BLOB di Azure
- Seguire i passaggi descritti in Creare un account di archiviazione BLOB di Azure
- Avviare Azure Storage Explorer
- Accedere ad Azure per accedere all'archiviazione BLOB creata nel passaggio precedente
- Fare clic con il pulsante destro del mouse sull'account di archiviazione BLOB e selezionare Crea contenitore BLOB per creare un nuovo contenitore in cui verrà archiviato il file di backup
Passaggio 2: Ottenere le credenziali dell'archiviazione BLOB
In Azure Storage Explorer, fare clic con il pulsante destro del mouse sul contenitore BLOB appena creato e selezionare Ottieni firma di accesso condiviso
Selezionare Lettura, Scrittura ed Elenco
Selezionare Crea.
Prendere nota dell'URI e della stringa di query da questa schermata. Saranno necessari nei passaggi successivi. Fare clic sul pulsante Copia per salvare le informazioni su Blocco note/OneNote ecc.
Chiudere la finestra Firma di accesso condiviso.
Passaggio 3: Eseguire il backup del file di database nell'archiviazione BLOB di Azure
In questo passaggio, ci si connetterà all'Istanza di SQL Server di origine e si creerà il file di backup di database di cui si vuole eseguire la migrazione a Istanza gestita di SQL - Azure Arc.
Avviare Azure Data Studio
Connettersi all'Istanza di SQL Server con il database di cui si vuole eseguire la migrazione a Istanza gestita di SQL - Azure Arc
Fare clic con il pulsante destro del mouse sul database e selezionare Nuova query
Preparare la query nel formato seguente sostituendo i segnaposto indicati da
<...>
con le informazioni della firma di accesso condiviso ottenute nei passaggi precedenti. Dopo aver sostituito i valori, eseguire la query.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>';
Analogamente, preparare il comando BACKUP DATABASE come indicato di seguito per creare un file di backup nel contenitore BLOB. Dopo aver sostituito i valori, eseguire la query.
BACKUP DATABASE <database name> TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
Aprire Azure Storage Explorer e verificare che il file di backup creato nel passaggio precedente sia visibile nel contenitore BLOB
Altre informazioni sul backup nell'URL sono disponibili qui:
Backup e ripristino di SQL Server con Archiviazione BLOB di Azure
Eseguire il backup nell'URL usando SQL Server Management Studio (SSMS)
Passaggio 4: Eseguire il ripristino del database dall'archiviazione BLOB di Azure a Istanza gestita di SQL - Azure Arc
Da Azure Data Studio, accedere e connettersi a Istanza gestita di SQL - Azure Arc.
EspandereDatabase di sistema, fare clic con il pulsante destro del mouse sul database master e selezionare Nuova query.
Nella finestra dell'editor di query preparare ed eseguire la stessa query del passaggio precedente per creare le credenziali.
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>';
Preparare ed eseguire il comando seguente per verificare che il file di backup sia leggibile e intatto.
RESTORE FILELISTONLY FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
Preparare ed eseguire il comando RESTORE DATABASE come indicato di seguito per ripristinare il file di backup in un database in Istanza gestita di SQL - 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
Metodo 2: Copiare il file di backup in un pod di Istanza gestita di SQL di Azure - Azure Arc usando kubectl
Questo metodo illustra come eseguire un file di backup creato tramite qualsiasi metodo, per poi copiarlo nell'archiviazione locale nel pod dell'istanza gestita di SQL di Azure in modo da poter eseguire il ripristino da tale file system in un file system tipico in Windows o Linux. In questo scenario, viene utilizzato il comando kubectl cp
per copiare il file da un'unica posizione nel file system del pod.
Prerequisiti
- Installare e configurare kubectl in modo che punti al cluster Kubernetes in cui vengono distribuiti i servizi dati di Azure Arc
- Assicurarsi di disporre uno strumento come Azure Data Studio o SQL Server Management Server installato e connesso a SQL Server in cui si vuole creare il file di backup OPPURE di un file .bak esistente già creato nel file system locale.
Passaggio 1: Eseguire il backup del database se non è già stato fatto
Eseguire il backup del database di SQL Server nel percorso del file locale come qualsiasi backup tipico di SQL Server su disco:
BACKUP DATABASE Test
TO DISK = 'C:\Backupfiles\test.bak'
WITH FORMAT, MEDIANAME = 'Test' ;
GO
Passaggio 2: Copiare il file di backup nel file system del pod
Trovare il nome del pod in cui viene distribuita l'istanza di SQL. In genere, dovrebbe essere simile a pod/<sqlinstancename>-0
Ottenere l'elenco di tutti i pod eseguendo:
kubectl get pods -n <namespace of data controller>
Esempio:
Copiare il file di backup dalla risorsa di archiviazione locale al pod SQL nel cluster.
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
Passaggio 3: Ripristinare il database
Preparare ed eseguire il comando RESTORE per ripristinare il file di backup nell'Istanza gestita di SQL di Azure - 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
Esempio:
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