Bienvenidos a una nueva demostración, el día de hoy aprenderemos a como migrar una base de datos SQL Server a Azure, donde utilizaremos el servicio de Azure SQL Database (PaaS). Para ello, primero debemos conocer ¿Qué es Azure SQL Database?
Este es un servicio de motor de base de datos bajo el modelo de plataforma como servicio, el cual te asegura siempre de contar con un motor totalmente actualizado, sin necesidad que te preocupes por el licenciamiento, con copias de seguridad para salvaguardar tus datos y sobre todo con un 99,99% de disponibilidad. En pocas palabras, Azure SQL Database está basada en la versión más estable del motor de base de datos de Microsoft SQL Server.
Ahora, si bien muchas empresas aún siguen utilizando su servidor on-premise para almacenar sus datos, no quita que puedan evaluar la migración de sus datos a una nube. Y si es Microsoft, definitivamente debemos de probar una migración de esas bases de datos hacia Azure. La verdad es muy sencilla de realizar, así que vamos a empezar con nuestra primera migración.
Primero debemos contar con algunos requisitos.
Sin más que añadir, ¡Iniciemos! Luego de instalar nuestro SQL Server, descargaremos nuestra base de datos de ejemplo, pero luego de descargarla tenemos que restaurarla para poderla usar, para ello la almacenaremos en la ruta donde se encuentran los Backups de SQL Server:
Para restaurar la base de datos, nos conectamos al motor de base de datos y clic derecho en la carpeta de “Databases” y seleccionaremos “Restore Database”.
Se abrirá la ventana de restauración, y en la opción de fuente seleccionaremos “Device” y daremos clic al botón de “…”, en la ventana de seleccionar backups, daremos clic en “Add” y buscaremos el archivo .bak. En mi caso descargué una base de datos de ejemplo llamada “AdventureWorksDW2019.bak” la cual usaré en esta demostración. Finalmente seleccionara daremos clic a OK..
Microsoft SQL Server Management Studio se tomará unos segundos para validar el archivo y en la parte superior izquierda nos notificará que está listo para continuar con la restauración, para iniciar con ello daremos clic en OK..
Una vez culminada, nos notificará que la restauración se realizó con éxito y podremos apreciar la base de datos restaurada en la parte izquierda de nuestra pantalla, exactamente dentro del explorador de objetos.
Ahora, creemos una nueva consulta (New Query) y hagamos un SELECT a cualquier tabla. En mi caso seleccioné la tabla empleados, la cual cuenta con información que pareciera que es real jajaja, pero al ser una base de datos de ejemplo, nos trae información lista como para poder practicar. Entonces, llegado a este punto ¡Ya tenemos una base de datos la cual migrar!
Ahora nos toca descargar el Data Migration Assistant, el cual nos permitirá evaluar y migrar nuestras bases de datos.
Una vez descargado, ejecutamos el archivo .exe y daremos clic en “Siguiente”.
A continuación, aceptaremos los términos y condiciones y daremos clic en “Siguiente”.
Finalmente, daremos clic en “Instalar”.
Una vez que culmine la instalación, daremos clic en “Finalizar”.
Ahora, en nuestro escritorio tendremos el programa “Microsoft Data Migration Assistant” el cual debemos de aperturar para crear nuestro primer proyecto de migración.
En la parte izquierda de la pantalla, daremos clic en el ícono de “+” para crear un nuevo proyecto.
A continuación, seleccionamos “Migración” y le brindaremos un nombre al proyecto. En mi caso el proyecto se llamará “SQLAzureMigrateDemo”. Luego, tendremos que seleccionar el servidor fuente donde estará nuestra base de datos que será “SQL Server”, así mismo le indicamos que queremos migrar a “Azure SQL Database” como servidor destino y finalmente, indicaremos que deseamos migrar, que en mi caso es el Esquema y los datos. Una vez completada esa información daremos clic en “Crear”.
Ahora tendremos en la parte superior los 6 pasos que debemos de seguir. El primer paso es seleccionar la fuente, para ello nos conectaremos a nuestro servidor de base de datos y daremos clic en “Conectar”.
Estoy seguro de que tendrás un error similar al siguiente...
Para solucionar este primer error de novato solo debes de marcar la casilla de “Trust server certificate”. La razón principal por la que se debe cifrar una conexión entre una instancia de SQL Server y cualquier aplicación cliente es la comunicación autorizada entre ellas. Esta capa de seguridad puede evitar la filtración de datos confidenciales no deseados o excluir la posibilidad de por ejemplo cualquier ataque de inyección SQL.
Ahora sí, una vez conectados, procedemos a seleccionar la base de datos que deseamos migrar. En mi caso será la base de datos llamada “AdventureWorksDW2019” y daremos clic en “Siguiente”.
Ya nos encontramos en el segundo paso de la migración, donde la herramienta nos pide el destino de migración. En nuestro caso nuestra fuente de destino es el servicio de Azure SQL Database, para ello daremos clic el enlace que nos aparece al inicio, el cual nos llevará al portal de Azure.
Ya en Azure, crearemos una base de datos SQL, en mi caso estoy creando un nuevo grupo de recursos llamado “MigrateAzureSQL”, el nombre la base de datos en Azure será “AdventureWorksDW2019Azure” y estoy creando un nuevo servidor, el cual se llamará “awdw2019”. Recuerda, los datos que coloques como el usuario y la contraseña del servidor guárdalos porque los necesitaremos mas adelante.
Ahora configuraremos el tamaño de la base de datos, para ello en la sección de Proceso y almacenamiento daremos clic en la opción de “Configurar base de datos”.
Configurarlo es muy sencillo, para nuestro caso usaremos un esquema basado en unidades de transacción de datos (DTU). Para configurar ello, seleccionaremos el nivel Estándar y para esta demo brindaremos unos 20 DTU con un tamaño de 250 GB. Finalmente damos clic en “Aplicar”.
A continuación, con toda la confianza del mundo, daremos clic en “Revisar y crear.
Bueno, Microsoft nos muestra un resumen de lo que vamos a crear, así que solo daremos clic a “Crear” y a esperar…
Una vez finalizada la implementación, Azure nos notificará que la creación de primera máquina virtual se realizó exitosamente. Solo queda dar clic a “Ir al recurso”.
Dentro del recurso, en la sección de “Información general” tendremos que copiar el nombre del servidor, porque este es el nombre que colocaremos en el Data Migration Assistant.
Pegamos el nombre del servidor copiado desde el portal de Azure en el Data Migration Assistant, indicamos el usuario que indicamos al momento de crear la base de datos en Azure y daremos clic en “Conectar”.
Estoy seguro de que tendrás otro error similar al siguiente...
A ver a ver ¿Qué pasó? La respuesta es sencilla, los servicios de Azure son seguros y es muy probable que la IP de tu máquina o servidor no esté reconocida para conectarse como fuente segura al servidor de base de datos en Azure. Para solucionar esto debemos agregar la dirección IP cliente (Nuestra IP) a través de una regla de Firewall que nos permita acceder al servidor de base de datos en Azure. .
Volvemos a Azure, y en la sección de “Información general” de la base de datos que hemos creado, daremos clic en la opción “Agregar la IP a la lista de elementos permitidos del servidor.
Ahora daremos clic en “Agregar IP de cliente”.
Podrás apreciar que en la pare inferior, en la sección de “Dirección IP de cliente” se agregará una nueva regla automáticamente, una vez lista y sin modificar nada, solo debemos dar clic en “Guardar”.
Empezará la implementación de la regla de firewall agregando nuestra IP al servidor, con la finalidad de poder conectarnos a este. Una vez finalizado, podrás dar clic en “Aceptar”.
Volvemos al Data Migration Assistant e intentamos dar clic nuevamente en “Conectar” y ahora sí, dentro del servidor en Azure podremos apreciar la base de datos que hemos creado, en mi caso se llama “AdventureWorksDW2019Azure”. Solo la seleccionamos y daremos clic en “Siguiente”.
Teniendo la fuente de ingreso y de destino, ahora nos toca seleccionar los objetos que deseamos migrar. En mi caso seleccioné todos, pero ustedes son libres de seleccionar solo las tablas o solo las vistas o lo que necesiten. Finalmente daremos clic en “Generar Script SQL”.
Una vez generado el script, es recomendable guardarlo, en caso de que nos pueda ocurrir algún error. Una vez validado todo, solo daremos clic en “Deploy schema”.
Acto seguido, se empezará con el despliegue del esquema. Mientras esto sucede solo nos queda esperar con la esperanza que todo saldrá bien jajaja...
Una vez finalizado, les recomiendo guardar los logs de resultados del despliegue del esquema, solo deben darle clic a “Exportar” y almacenar los logs donde gusten. Finalmente, para terminar tenemos que migrar la información, para ello daremos clic en “Migrate data”.
El quinto paso es seleccionar las tablas de las que queremos migrar la información a nuestra base de datos en Azure. En mi caso seleccionaré todas (Que son en total 30 tablas) y daremos clic en “Empezar con la migración de datos”.
¡Es tiempo de irnos por un café! Desde esta pantalla podremos visualizar el estado de la migración de la información que vamos teniendo. Este proceso demorará en base a la cantidad de datos que tengamos en nuestra base de datos y de la calidad de conexión a internet que tengamos contratada.
Una vez finalizado el proceso de migración de datos, en la parte inferior podremos corroborar el tiempo de duración de la migración. Ahora sí, ¡Estamos listos para validar la migración!
Regresamos a nuestro portal de Azure y en la sección de “Editor de consultas” iniciaremos sección con el usuario y la contraseña del servidor.
¿Qué es esto? Si, es el editor de consultas de Azure SQL Database. En pocas palabras tu SSMS en la nube. Y como se puede apreciar, desplegando la carpeta de “Tablas” se encuentran todas nuestras tablas tal cual como las teníamos en SQL Server. Y la pregunta del millón ¿Y también se migró la data? Pues para corroborarlo ejecutemos una consulta, en mi caso haré el mismo SELECT a la tabla Empleados.
Y se puede apreciar que están los mismos datos, en el mismo orden y respetando si son campos nulos o no. Esto es emocionante, y ahora toca que puedan animarse ustedes mismos a llevar su base de datos a la nube. Como comentario final, si estás pensando llevar una base de datos de producción a la nube, te recomiendo realizar antes una evaluación de migración de SQL Server. Si quieres conocer mas acerca de cómo realizar esa evaluación antes de la migración, puedes entrar aquí.
No te olvides de compartir esta entrada para ayudar a más personas, hasta la próxima.