Neste tutorial, você vai migrar dados do SQL Server 2017 Enterprise em execução no Compute Engine para o Cloud SQL para SQL Server 2017 Enterprise. No tutorial, mostramos como exportar os dados do SQL Server 2017, importá-los para o Cloud SQL para SQL Server 2017 e validar se eles foram importados com êxito.
Se você quiser migrar dados do SQL Server 2008, consulte Como migrar dados entre o SQL Server 2008 e o Cloud SQL para SQL Server usando arquivos de backup.
Este tutorial é útil se você é administrador de sistema, desenvolvedor, engenheiro, administrador de banco de dados ou engenheiro de DevOps que quer migrar dados do SQL Server 2017 para o Cloud SQL para SQL Server.
O tutorial presume que você esteja familiarizado com o seguinte:
- Microsoft SQL Server
- Microsoft PowerShell
- Compute Engine
- Cloud Storage
- Cloud SQL
Objetivos
- Crie uma instância de máquina virtual (VM, na sigla em inglês) do SQL Server no Compute Engine para hospedar o banco de dados de amostra.
- Criar uma instância do Cloud SQL for SQL Server.
- Criar um bucket do Cloud Storage
- Faça backup do banco de dados de amostra.
- Importar o banco de dados para o Cloud SQL for SQL Server.
- Validar os dados importados.
Custos
Neste documento, você usará 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 custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
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.
-
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.
Como criar um script para um banco de dados de amostra
Nesta seção, você criará um script para preencher um banco de dados de amostra pré-carregado. Em seguida, você cria uma instância do SQL Server 2017 no Compute Engine que usa esse banco de dados.
No Cloud Shell, crie um script do PowerShell para implantar 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
Esse script de inicialização cria um banco de dados local chamado
testdb
com uma tabela chamadaMarylandZipCodes
. Em seguida, o script baixa o registro público de CEP de Maryland e importa o registro 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, crie a instância na zona
us-central1-f
com um tamanho de disco de inicialização de 50 GB. Para mais informações sobre zonas, consulte Locais na nuvem. A sinalização--metadata-from-file
define o script do PowerShell como o script de inicialização da instância.
Como criar a instância do Cloud SQL e o bucket do Cloud Storage
No Cloud Shell, crie a instância do Cloud SQL para SQL Server 2017 Enterprise para a qual o banco de dados será migrado posteriormente:
gcloud beta sql instances create target \ --database-version=SQLSERVER_2017_ENTERPRISE \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --zone=us-central1-f
Pode levar alguns minutos para criar a instância. O nome de usuário raiz padrão é
sqlserver
com uma senha padrão desqlserver12@
. Para este tutorial, você cria a instância na zonaus-central1-f
. Para mais informações sobre zonas, consulte Locais na nuvem.Crie um bucket do Cloud Storage para armazenar o arquivo de backup antes que os dados sejam importados para o Cloud SQL:
gcloud storage buckets create "gs://${DEVSHELL_PROJECT_ID}-sql-backups" --location=US
Como fazer backup do banco de dados de amostra
Nesta seção, você se conecta à máquina virtual (VM) do SQL Server, cria um backup do banco de dados e faz o upload dele para o Cloud Storage.
No Cloud Shell, redefina a senha para a instância de VM do SQL Server:
gcloud compute reset-windows-password sql-server --zone=us-central1-f
Anote a nova senha do usuário.
Instalar um cliente do Protocolo de Área de trabalho remota (RDP). Para mais informações, consulte Clientes de Área de Trabalho Remota da Microsoft.
No console do Google Cloud, acesse a página Instâncias de VMs.
Na seção "Compute Engine" do console do Google Cloud, clique no menu suspenso RDP e selecione a opção Fazer o download do arquivo RDP para fazer o download do arquivo RDP da instância de VM do SQL Server.
Use esse arquivo para se conectar à instância usando um cliente RDP. Para mais informações, consulte Clientes de Área de Trabalho Remota da Microsoft.
No navegador, minimize todas as janelas e inicie a ferramenta de linha de comando do PowerShell.
Crie uma pasta de backup:
mkdir c:\backup
No navegador, crie um backup do banco de dados na pasta de backup:
osql -E -Q "BACKUP DATABASE testdb TO DISK='c:\backup\testdb.bak'"
No shell da instância, copie o arquivo de backup para o bucket 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
Como importar o arquivo de backup para o Cloud SQL
No Cloud Shell, recupere a conta de serviço associada à instância do Cloud SQL e salve-a em uma variável:
SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \ --format='value(serviceAccountEmailAddress)') echo $SVC_EMAIL_ADDRESS
O Google Cloud cria uma conta de serviço quando você cria a instância do Cloud SQL. Use a conta de serviço para conceder à instância do Cloud SQL permissão para acessar os recursos necessários.
Conceda permissão à conta de serviço para gravar no bucket 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 permissão à conta de serviço para ler arquivos no bucket 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 arquivo de backup para o banco de dados do Cloud SQL:
gcloud beta sql import bak target \ gs://${DEVSHELL_PROJECT_ID}-sql-backups/testdb.bak --database testdb
Como validar a importação de dados
Nesta seção, você verifica se os dados foram importados com êxito.
No Cloud Shell, instale o kit de ferramentas do SQL Server:
sudo apt-get install -y mssql-tools
Se você aceitar os termos da licença, insira
yes
quando for solicitado.Para acessar a instância do Cloud SQL com segurança, faça o download do 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 for necessário, digite a senha
sqlserver12@
. Na saída, verifique se o resultado é619
.
Limpar
A maneira mais fácil de eliminar o faturamento é excluir o projeto do Google Cloud criado para o tutorial.Excluir 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.
A seguir
- Leia sobre chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para o Cloud SQL para SQL Server.
- Leia sobre como configurar a conectividade IP particular para o Cloud SQL para SQL Server.
- Confira arquiteturas de referência, diagramas e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.