Neste tutorial, migra dados do SQL Server 2017 Enterprise em execução no Compute Engine para o Cloud SQL para SQL Server 2017 Enterprise. O tutorial mostra como exportar os dados do SQL Server 2017, importar os dados para o Cloud SQL para SQL Server 2017 e validar se os dados foram importados com êxito.
Se quiser migrar dados do SQL Server 2008, consulte o artigo Migrar dados entre o SQL Server 2008 e o Cloud SQL para SQL Server através de ficheiros de cópia de segurança.
Este tutorial é útil se for um administrador de sistemas, um programador, um engenheiro, um administrador de bases de dados ou um engenheiro de DevOps que quer migrar dados do SQL Server 2017 para o Cloud SQL para SQL Server.
O tutorial pressupõe que conhece o seguinte:
- Microsoft SQL Server
- Microsoft PowerShell
- Compute Engine
- Cloud Storage
- Cloud SQL
Objetivos
- Crie uma instância de máquina virtual (VM) do SQL Server no Compute Engine para alojar a base de dados de amostra.
- Crie uma instância do Cloud SQL para SQL Server.
- Crie um contentor do Cloud Storage.
- Faça uma cópia de segurança da base de dados de amostra.
- Importe a base de dados para o Cloud SQL para SQL Server.
- Valide os dados importados.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
- Compute Engine
- Cloud SQL
- Cloud Storage
- SQL Server (premium with Compute Engine)
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage, Cloud SQL Admin, and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage, Cloud SQL Admin, and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
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.
Criar um guião para uma base de dados de amostra
Nesta secção, cria um script para preencher uma base de dados de exemplo pré-carregada. Em seguida, cria uma instância do SQL Server 2017 no Compute Engine que usa esta base de dados.
No Cloud Shell, crie um script do PowerShell para implementar como um script de inicialização:
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
Este script de arranque cria uma base de dados local denominada
testdb
com uma tabela denominadaMarylandZipCodes
. Em seguida, o script transfere o registo público de códigos postais de Maryland e importa o registo para a tabela.Crie uma instância do SQL Server 2017 Enterprise para o 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
Para este tutorial, cria a instância na zona
us-central1-f
com um tamanho do disco de arranque de 50 GB. Para mais informações acerca das zonas, consulte o artigo Localizações na nuvem. A flag--metadata-from-file
define o script do PowerShell como o script de arranque da instância.
Criar a instância do Cloud SQL e o contentor do Cloud Storage
No Cloud Shell, crie a instância do Cloud SQL para SQL Server 2017 Enterprise para a qual vai migrar a base de dados mais tarde:
gcloud beta sql instances create target \ --database-version=SQLSERVER_2017_ENTERPRISE \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --zone=us-central1-f
A criação da instância pode demorar alguns minutos. O nome de utilizador root predefinido é
sqlserver
com uma palavra-passe predefinida desqlserver12@
. Para este tutorial, crie a instância na zonaus-central1-f
. Para mais informações sobre as zonas, consulte Localizações na nuvem.Crie um contentor do Cloud Storage para armazenar o ficheiro de cópia de segurança antes de os dados serem importados para o Cloud SQL:
gcloud storage buckets create "gs://${DEVSHELL_PROJECT_ID}-sql-backups" --location=US
Fazer uma cópia de segurança da base de dados de exemplo
Nesta secção, estabelece ligação à máquina virtual (VM) do SQL Server, cria uma cópia de segurança da base de dados e carrega a base de dados de cópia de segurança para o Cloud Storage.
No Cloud Shell, reponha a palavra-passe da instância de VM do SQL Server:
gcloud compute reset-windows-password sql-server --zone=us-central1-f
Tome nota da nova palavra-passe do utilizador.
Instale um cliente do protocolo de ambiente de trabalho remoto (RDP). Para mais informações, consulte os clientes do Microsoft Remote Desktop.
Na Google Cloud consola, aceda à página Instâncias de VM.
Na secção Compute Engine da Google Cloud consola, clique no menu pendente RDP e selecione a opção Transferir o ficheiro RDP para transferir o ficheiro RDP para a instância de VM do SQL Server.
Use este ficheiro para estabelecer ligação à instância através de um cliente RDP. Para mais informações, consulte o artigo Clientes do Ambiente de Trabalho Remoto da Microsoft.
No navegador, minimize todas as janelas e, em seguida, inicie a ferramenta de linha de comandos do PowerShell.
Crie uma pasta de cópia de segurança:
mkdir c:\backup
No navegador, crie uma cópia de segurança da base de dados na pasta de cópias de segurança:
osql -E -Q "BACKUP DATABASE testdb TO DISK='c:\backup\testdb.bak'"
Na shell na instância, copie o ficheiro de cópia de segurança para o contentor do Cloud Storage:
$PROJECT_ID=(gcloud config get-value core/project) gcloud storage cp c:\backup\testdb.bak gs://$PROJECT_ID-sql-backups --no-clobber
Importar o ficheiro de cópia de segurança para o Cloud SQL
No Cloud Shell, obtenha a conta de serviço associada à instância do Cloud SQL e guarde-a numa variável:
SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \ --format='value(serviceAccountEmailAddress)') echo $SVC_EMAIL_ADDRESS
Google Cloud Cria uma conta de serviço quando criou a instância do Cloud SQL. Usa a conta de serviço para conceder à instância do Cloud SQL autorização para aceder aos recursos de que precisa.
Conceda à conta de serviço autorização para escrever no contentor do Cloud Storage:
gcloud storage buckets add-iam-policy-binding gs://${DEVSHELL_PROJECT_ID}-sql-backups \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyBucketWriter
Conceda à conta de serviço autorização para ler ficheiros no contentor do 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
Importe o ficheiro de cópia de segurança para a base de dados do Cloud SQL:
gcloud beta sql import bak target \ gs://${DEVSHELL_PROJECT_ID}-sql-backups/testdb.bak --database testdb
Validar a importação de dados
Nesta secção, verifica se os dados de exemplo foram importados com êxito.
No Cloud Shell, instale o conjunto de ferramentas do SQL Server:
sudo apt-get install -y mssql-tools
Se aceitar os termos da licença, introduza
yes
quando lhe for pedido.Para aceder em segurança à sua instância do Cloud SQL, transfira o proxy do Cloud SQL:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
Inicie o proxy do Cloud SQL:
CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)') ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Leia o número de linhas na tabela do Cloud SQL:
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "select count(*) from testdb.dbo.MarylandZipCodes"
Quando lhe for pedido, introduza a palavra-passe
sqlserver12@
. Na saída, certifique-se de que o resultado é619
.
Limpar
A forma mais fácil de eliminar a faturação é eliminar o Google Cloud projeto que criou para o tutorial.Elimine o projeto
- 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.
O que se segue?
- Leia sobre as chaves de encriptação geridas pelo cliente (CMEK) para o Cloud SQL para SQL Server.
- Leia sobre como configurar a conetividade de IP privado para o Cloud SQL para SQL Server.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.