En este instructivo, migrarás los datos de SQL Server 2017 Enterprise que se ejecuta en Compute Engine a Cloud SQL para SQL Server 2017 Enterprise. Aquí se muestra cómo exportar los datos de SQL Server 2017, cómo importarlos a Cloud SQL para SQL Server 2017 y cómo validar si se importaron de forma correcta.
Si deseas migrar datos desde SQL Server 2008, consulta Migra datos entre SQL Server 2008 y Cloud SQL para SQL Server mediante archivos de copia de seguridad.
Este instructivo te resultará útil si eres un administrador de sistemas, desarrollador, ingeniero, administrador de bases de datos o ingeniero DevOps y deseas migrar datos de SQL Server 2017 a Cloud SQL para SQL Server.
En el instructivo, se da por sentado que estás familiarizado con lo siguiente:
- Microsoft SQL Server
- Microsoft PowerShell
- Compute Engine
- Cloud Storage
- Cloud SQL
Objetivos
- Crear una instancia de máquina virtual (VM) de SQL Server en Compute Engine para alojar la base de datos de muestra
- Crear una instancia de Cloud SQL para SQL Server
- Crear un bucket de Cloud Storage
- Crear una copia de seguridad de la base de datos de muestra
- Importar la base de datos a Cloud SQL para SQL Server
- Validar los datos importados
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
- Compute Engine
- Cloud SQL
- Cloud Storage
- SQL Server (premium with Compute Engine)
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
- 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.
Crea una secuencia de comandos para una base de datos de muestra
En esta sección, debes crear una secuencia de comandos para propagar una base de datos de muestra precargada. Luego, crea una instancia de SQL Server 2017 en Compute Engine que use esta base de datos.
En Cloud Shell, crea una secuencia de comandos de PowerShell para implementarla como secuencia de comandos de inicio:
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
Esta secuencia de comandos de inicio crea una base de datos local llamada
testdb
con una tabla llamadaMarylandZipCodes
. Luego, la secuencia de comandos descarga el registro público de códigos postales de Maryland y, a continuación, importa el registro a la tabla.Crea una instancia de SQL Server 2017 Enterprise para 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
En este instructivo, debes crear la instancia en la zona
us-central1-f
con un tamaño de disco de arranque de 50 GB. Para obtener más información sobre las zonas, consulta Ubicaciones de Cloud. La marca--metadata-from-file
configura la secuencia de comandos de PowerShell para que sea la secuencia de comandos de inicio de la instancia.
Crea la instancia de Cloud SQL y el bucket de Cloud Storage
En Cloud Shell, crea la instancia de Cloud SQL para SQL Server 2017 Enterprise a la que luego migrarás la base de datos:
gcloud beta sql instances create target \ --database-version=SQLSERVER_2017_ENTERPRISE \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --zone=us-central1-f
La creación de la instancia puede tomar unos minutos. El nombre de usuario raíz predeterminado es
sqlserver
y la contraseña predeterminada essqlserver12@
. Para este instructivo, debes crear la instancia en la zonaus-central1-f
. Para obtener más información sobre las zonas, consulta Ubicaciones de Cloud.Crea un bucket de Cloud Storage para almacenar el archivo de copia de seguridad antes de importar los datos a Cloud SQL:
gcloud storage buckets create "gs://${DEVSHELL_PROJECT_ID}-sql-backups" --location=US
Crea una copia de seguridad de la base de datos de muestra
En esta sección, debes conectarte a la máquina virtual (VM) de SQL Server, crear una copia de seguridad de la base de datos y subirla a Cloud Storage.
En Cloud Shell, restablece la contraseña para la instancia de VM de SQL Server:
gcloud compute reset-windows-password sql-server --zone=us-central1-f
Toma nota de la contraseña nueva para el usuario.
Instala un cliente de protocolo de escritorio remoto (RDP) Para obtener más información, consulta Clientes de escritorio remoto de Microsoft.
En la consola de Google Cloud, ve a la página Instancias de VM.
En la sección Compute Engine de la consola de Google Cloud, haz clic en el menú desplegable RDP y selecciona la opción Descargar el archivo RDP a fin de descargar el archivo de RDP para la instancia de VM de SQL Server.
Usa este archivo para conectarte a la instancia mediante un cliente de RDP. Para obtener más información, consulta Clientes de escritorio remoto de Microsoft.
En el navegador, minimiza todas las ventanas, y, luego, inicia la herramienta de línea de comandos de PowerShell.
Crea una carpeta de copia de seguridad:
mkdir c:\backup
En el navegador, crea una copia de seguridad de la base de datos en la carpeta de copia de seguridad:
osql -E -Q "BACKUP DATABASE testdb TO DISK='c:\backup\testdb.bak'"
En la shell de la instancia, copia el archivo de copia de seguridad en el bucket de Cloud Storage:
$PROJECT_ID=(gcloud config get-value core/project) gcloud storage cp c:\backup\testdb.bak gs://$PROJECT_ID-sql-backups --no-clobber
Importa el archivo de copia de seguridad a Cloud SQL
En Cloud Shell, recupera la cuenta de servicio asociada con la instancia de Cloud SQL y guárdala en una variable:
SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \ --format='value(serviceAccountEmailAddress)') echo $SVC_EMAIL_ADDRESS
Google Cloud crea una cuenta de servicio cuando creas la instancia de Cloud SQL. Debes usar la cuenta de servicio a fin de otorgar permiso a la instancia de Cloud SQL para acceder a los recursos que necesita.
Otorga permiso a la cuenta de servicio para escribir en el bucket de Cloud Storage:
gcloud storage buckets add-iam-policy-binding gs://${DEVSHELL_PROJECT_ID}-sql-backups \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyBucketWriter
Otorga permiso a la cuenta de servicio para leer archivos en el bucket de 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
Importa el archivo de copia de seguridad a la base de datos de Cloud SQL:
gcloud beta sql import bak target \ gs://${DEVSHELL_PROJECT_ID}-sql-backups/testdb.bak --database testdb
Valida la importación de datos
En esta sección, debes verificar si los datos de muestra se importaron de forma correcta.
En Cloud Shell, instala el kit de herramientas de SQL Server:
sudo apt-get install -y mssql-tools
Si aceptas los términos de la licencia, ingresa
yes
cuando se te solicite.Para acceder de forma segura a la instancia de Cloud SQL, descarga el proxy de Cloud SQL:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
Inicia el proxy de Cloud SQL:
CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)') ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Observa la cantidad de filas en la tabla de Cloud SQL:
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "select count(*) from testdb.dbo.MarylandZipCodes"
Cuando se te solicite, ingresa la contraseña
sqlserver12@
. Asegúrate de que el resultado sea619
.
Limpia
La manera más fácil de eliminar la facturación es borrar el proyecto de Google Cloud que creaste para el instructivo.Borra el proyecto
- 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.
¿Qué sigue?
- Lee sobre las claves de encriptación administradas por el cliente (CMEK) de Cloud SQL para SQL Server.
- Lee sobre cómo configurar la conectividad de IP privada en Cloud SQL para SQL Server.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.