Dans ce tutoriel, vous allez migrer des données de SQL Server 2017 Enterprise exécutées sur Compute Engine vers Cloud SQL pour SQL Server 2017 Enterprise. Ce tutoriel explique comment exporter les données à partir de SQL Server 2017, les importer dans Cloud SQL pour SQL Server 2017 et vérifier qu'elles ont bien été importées.
Si vous souhaitez transférer des données depuis SQL Server 2008, consultez la section Migrer des données entre SQL Server 2008 et Cloud SQL pour SQL Server à l'aide de fichiers de sauvegarde.
Ce tutoriel s'adresse aux administrateurs système, développeurs, ingénieurs, administrateurs de bases de données ou ingénieurs DevOps souhaitant migrer des données de SQL Server 2017 vers Cloud SQL pour SQL Server.
Pour ce tutoriel, nous partons du principe que vous connaissez bien les éléments suivants :
- Microsoft SQL Server
- Microsoft PowerShell
- Compute Engine
- Cloud Storage
- Cloud SQL
Objectifs
- Créer une instance de machine virtuelle (VM) SQL Server sur Compute Engine pour héberger l'exemple de base de données
- Créer une instance Cloud SQL pour SQL Server
- Créer un bucket Cloud Storage
- Sauvegarder l'exemple de base de données
- Importer la base de données dans Cloud SQL pour SQL Server
- Valider les données importées
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- Compute Engine
- Cloud SQL
- Cloud Storage
- SQL Server (premium with Compute Engine)
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage, Cloud SQL Admin, and Compute Engine APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage, Cloud SQL Admin, and Compute Engine APIs.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Créer un script pour un exemple de base de données
Dans cette section, vous allez créer un script pour remplir un exemple de base de données préchargée. Vous allez ensuite créer une instance SQL Server 2017 sur Compute Engine qui utilise cette base de données.
Dans Cloud Shell, créez un script PowerShell à déployer en tant que script de démarrage :
cat << 'EOF' > startup.ps1 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $dataseturl = "https://opendata.maryland.gov/api/views/ryxx-aeaf/rows.csv?accessType=DOWNLOAD" Invoke-WebRequest -Uri $dataseturl -OutFile c:\dataset.csv Invoke-Sqlcmd -Query "CREATE DATABASE testdb;" Invoke-Sqlcmd -Query "CREATE TABLE testdb.dbo.MarylandZipCodes ( zipcode int NOT NULL PRIMARY KEY, city varchar(255), county varchar(255))" Invoke-Sqlcmd -Query "BULK INSERT testdb.dbo.MarylandZipCodes FROM 'c:\dataset.csv' WITH (DATAFILETYPE='char',FIELDTERMINATOR=',' ,ROWTERMINATOR = '0x0a', FIRSTROW=2);" EOF
Ce script de démarrage crée une base de données locale nommée
testdb
avec une table appeléeMarylandZipCodes
. Il télécharge ensuite le registre public des codes postaux du Maryland et l'importe dans la table.Créez une instance SQL Server 2017 Enterprise pour Windows Server 2016 :
gcloud compute instances create sql-server --machine-type n1-highmem-4 \ --boot-disk-size 50GB \ --image-project windows-sql-cloud --image-family sql-ent-2017-win-2016 \ --zone us-central1-f \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --metadata-from-file windows-startup-script-ps1=startup.ps1
Pour ce tutoriel, vous allez créer l'instance dans la zone
us-central1-f
avec une taille de disque de démarrage de 50 Go. Pour en savoir plus sur les zones, consultez la section Emplacements Cloud. L'option--metadata-from-file
définit le script PowerShell en tant que script de démarrage de l'instance.
Créer l'instance Cloud SQL et le bucket Cloud Storage
Dans Cloud Shell, créez l'instance Cloud SQL pour SQL Server 2017 Enterprise vers laquelle vous migrerez ultérieurement la base de données :
gcloud beta sql instances create target \ --database-version=SQLSERVER_2017_ENTERPRISE \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --zone=us-central1-f
La création de l'instance peut prendre quelques minutes. Le nom d'utilisateur racine par défaut est
sqlserver
et le mot de passe par défaut estsqlserver12@
. Pour ce tutoriel, vous créez l'instance dans la zoneus-central1-f
. Pour en savoir plus sur les zones, consultez la page Emplacements Cloud.Créez un bucket Cloud Storage pour stocker le fichier de sauvegarde avant l'importation des données dans Cloud SQL :
gcloud storage buckets create "gs://${DEVSHELL_PROJECT_ID}-sql-backups" --location=US
Sauvegarder l'exemple de base de données
Dans cette section, vous allez vous connecter à la machine virtuelle (VM) SQL Server, créer une sauvegarde de la base de données, puis importer cette sauvegarde dans Cloud Storage.
Dans Cloud Shell, réinitialisez le mot de passe de l'instance de VM SQL Server :
gcloud compute reset-windows-password sql-server --zone=us-central1-f
Notez le nouveau mot de passe de l'utilisateur.
Installez un client RDP (Remote Desktop Protocol). Pour plus d'informations, voir les clients Bureau à distance de Microsoft.
Dans la console Google Cloud, accédez à la page Instances de VM.
Dans la section Compute Engine de la console Google Cloud, cliquez sur le menu déroulant RDP et sélectionnez l'option Télécharger le fichier RDP. pour télécharger le fichier RDP correspondant à votre instance de VM SQL Server.
Utilisez ce fichier pour vous connecter à l'instance à l'aide d'un client RDP. Pour plus d'informations, voir les clients Bureau à distance de Microsoft.
Dans le navigateur, réduisez toutes les fenêtres, puis lancez l'outil de ligne de commande PowerShell.
Créez un dossier de sauvegarde :
mkdir c:\backup
Dans le navigateur, créez une sauvegarde de la base de données dans le dossier de sauvegarde :
osql -E -Q "BACKUP DATABASE testdb TO DISK='c:\backup\testdb.bak'"
Depuis l'interface système de l'instance, copiez le fichier de sauvegarde dans le bucket Cloud Storage :
$PROJECT_ID=(gcloud config get-value core/project) gcloud storage cp c:\backup\testdb.bak gs://$PROJECT_ID-sql-backups --no-clobber
Importer le fichier de sauvegarde dans Cloud SQL
Dans Cloud Shell, récupérez les informations du compte de service associé à l'instance Cloud SQL et enregistrez-les dans une variable :
SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \ --format='value(serviceAccountEmailAddress)') echo $SVC_EMAIL_ADDRESS
Google Cloud crée un compte de service lorsque vous créez l'instance Cloud SQL. Vous utilisez le compte de service pour autoriser l'instance Cloud SQL à accéder aux ressources dont elle a besoin.
Autorisez le compte de service à écrire dans le bucket Cloud Storage :
gcloud storage buckets add-iam-policy-binding gs://${DEVSHELL_PROJECT_ID}-sql-backups \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyBucketWriter
Autorisez le compte de service à lire les fichiers dans le bucket Cloud Storage :
gcloud storage buckets add-iam-policy-binding gs://${DEVSHELL_PROJECT_ID}-sql-backups/testdb.bak \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyObjectReader
Importez le fichier de sauvegarde dans la base de données Cloud SQL :
gcloud beta sql import bak target \ gs://${DEVSHELL_PROJECT_ID}-sql-backups/testdb.bak --database testdb
Valider l'importation des données
Dans cette section, vous allez vérifier que les données ont bien été importées.
Dans Cloud Shell, installez la boîte à outils SQL Server :
sudo apt-get install -y mssql-tools
Si vous acceptez les conditions de la licence, saisissez
yes
lorsque vous y êtes invité.Pour accéder de manière sécurisée à votre instance Cloud SQL, téléchargez le proxy Cloud SQL :
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
Démarrez le proxy Cloud SQL :
CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)') ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Lisez le nombre de lignes dans la table Cloud SQL :
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "select count(*) from testdb.dbo.MarylandZipCodes"
Lorsque vous y êtes invité, saisissez le mot de passe
sqlserver12@
. Dans la sortie, assurez-vous que le résultat correspond à619
.
Effectuer un nettoyage
Le moyen le plus simple d'éviter la facturation consiste à supprimer le projet Google Cloud que vous avez créé pour le tutoriel.Supprimer le projet
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Étape suivante
- Apprenez-en davantage sur les clés de chiffrement gérées par le client (CMEK) dans Cloud SQL pour SQL Server.
- Découvrez comment configurer la connectivité IP privée avec Cloud SQL pour SQL Server.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.