Traslado de datos a SQL Managed Instance

Completado

Muchas migraciones conllevan un período en el que las bases de datos locales y las que están en la nube deben mantenerse sincronizadas. Por ejemplo, puede que los clientes realicen cambios en ambas bases de datos en algún momento.

Ha migrado la base de datos de productos deportivos para minoristas a una instancia administrada de Azure SQL Managed Instance. El sitio web ya está usando la base de datos en la nube. Está empezando a reconfigurar los clientes para que usen la base de datos nueva. Ha decidido realizar la transición de los usuarios al nuevo sistema en lotes. Para cada equipo, va a dedicar un tiempo a resolver los problemas antes de migrar los usuarios siguientes. Este enfoque permite la localización y resolución de problemas sin necesidad de interferir con todos los usuarios a la vez. A continuación, volverá a configurar el sistema de análisis de datos para que use la nueva base de datos en Azure. Durante este tiempo, quiere asegurarse de que las bases de datos locales y en la nube se sincronizan cada hora.

Explorará varios métodos para implementar la sincronización de datos. Estos métodos también se pueden emplear para migrar datos de forma selectiva, si solo es necesario transferir un subconjunto de las tablas. Esta flexibilidad permite un enfoque más adaptado a la migración de datos.

Opciones de conectividad con servidores locales

Suele ser frecuente que quiera mantener sincronizados los datos de las bases de datos locales con la instancia administrada de Azure SQL Managed Instance. Por ejemplo, puede que quiera hacer una copia intermedia de la migración de las aplicaciones cliente a la nueva base de datos, lo que significa que hay un período en el que los clientes se conectan a ambas bases de datos.

Antes de elegir un método de sincronización de los datos, es importante asegurarse de que dispone de una conectividad segura. Hay disponibles tres opciones de conectividad distintas para establecer la comunicación entre los equipos locales y los recursos de Azure.

  • De punto a sitio. Una conexión de puerta de enlace de VPN de punto a sitio (P2S) permite crear una conexión segura a la red virtual desde un equipo cliente individual.
  • De sitio a sitio. Una puerta de enlace de VPN de sitio a sitio se usa para conectar todo un sitio local a la red de Azure.
  • ExpressRoute. Azure ExpressRoute le permite crear conexiones privadas entre los centros de datos de Azure y una infraestructura local o una infraestructura en un entorno de coubicación. Las conexiones de ExpressRoute no se realizan a través de una conexión a Internet pública y ofrecen más confiabilidad, más velocidad, menor latencia y mayor seguridad que las conexiones a Internet normales.

Punto de conexión público

Un punto de conexión público para SQL Managed Instance le ayuda a conectarse a la base de datos desde Internet sin usar ninguna VPN y está diseñado únicamente para la comunicación de datos. El punto de conexión público para datos puede coexistir con el punto de conexión privado. Por motivos de seguridad, la implementación permite aplicar la separación de tareas (SoD) entre un administrador de base de datos y un administrador de red al habilitar el punto de conexión público.

Para habilitar un punto de conexión público para una instancia administrada, se requieren dos pasos. Para la separación de tareas (SoD), necesitará dos roles independientes con los permisos siguientes de base de datos y de red a fin de completar estos pasos:

  1. Un administrador de bases de datos que tenga permisos de control de acceso basado en rol en el ámbito Microsoft.Sql/managedInstances/* debe ejecutar un script de PowerShell para habilitar el punto de conexión público para la instancia administrada.
  2. Un administrador de red que tenga permisos de control de acceso basado en roles en el ámbito Microsoft.Network/* debe abrir el puerto 3342 que usa el punto de conexión público en el grupo de seguridad de red (NSG) y proporcionar una ruta UDR para evitar el enrutamiento asimétrico.

Elección de un método de sincronización

Puede usar varios métodos para sincronizar los datos de una instancia administrada de SQL Database con los de un servidor local y viceversa.

Copia de seguridad y restauración nativa

Puede restaurar una base de datos en Azure SQL Managed Instance desde un archivo de Azure Blob Storage mediante la firma de acceso compartido (SAS).

Esto implica crear una credencial con acceso a Azure Blob Storage y, a continuación, usar el comando BACKUP DATABASE con la opción COPY_ONLY. Si la base de datos tiene más de 200 GB, puede usar una copia de seguridad seccionada proporcionando varias ubicaciones de direcciones URL.

BACKUP DATABASE YourDatabase TO URL = 'https://youraccount.blob.core.windows.net/yourcontainer/yourdatabase.bak' WITH COPY_ONLY

Para restaurar la base de datos en SQL Managed Instance:

RESTORE DATABASE YourDatabase FROM URL = 'https://youraccount.blob.core.windows.net/yourcontainer/yourdatabase.bak'

Archivo BACPAC con SqlPackage

Un archivo BACPAC es básicamente una versión comprimida de los metadatos y los datos de la base de datos. Aunque este método de implementación es compatible con SQL Database, SQL Managed Instance no admite la migración a través de BACPAC en Azure Portal. Como alternativa, la utilidad SQLPackage debe usarse con el archivo BACPAC.

Programa de copia masiva (BCP)

La utilidad BCP es una herramienta de línea de comandos que exporta tablas a archivos para que pueda importarlas. Use este método para migrar de una base de datos SQL única a SQL Managed Instance y viceversa.

Azure Data Factory (ADF)

Azure Data Factory se ha creado para el movimiento y la orquestación de los datos y se centra en la ingesta. ADF tiene compatibilidad con el entorno de ejecución de integración para ejecutar paquetes SSIS y compatibilidad con Internet público para la instancia administrada de SQL Managed Instance.

Replicación transaccional

La replicación transaccional es una manera de mover datos entre servidores de bases de datos conectados continuamente.

El proceso comienza con una instantánea de los objetos y datos de la base de datos de publicación. Una vez realizada la instantánea inicial, los cambios posteriores en los datos o esquemas del publicador se entregan a Azure SQL Managed Instance, por lo general, casi en tiempo real a medida que se producen.

SQL Managed Instance es flexible porque puede ser un publicador, un distribuidor y un suscriptor.

La replicación es una de las pocas tecnologías que permite replicar partes de una tabla. Nos referimos a estas partes de la tabla como artículos. A continuación, estos datos se envían a un distribuidor, que provee los datos a un número cualquiera de suscriptores.

Requisitos

  • La conectividad usa la autenticación de SQL entre los participantes de la replicación.
  • Un recurso compartido de cuenta de Azure Storage para el directorio de trabajo empleado para la replicación.
  • El puerto 445 (salida TCP) está abierto en las reglas de seguridad de la subred de la instancia administrada para acceder al recurso compartido de archivos de Azure.
  • El puerto 1433 (salida TCP) está abierto si el publicador o el distribuidor están en una instancia administrada y el suscriptor está en el entorno local.

Conexión de aplicaciones a una instancia administrada de SQL

Una instancia administrada de SQL debe colocarse en una subred de red virtual de Azure dedicada a las instancias administradas. Esta implementación proporciona una dirección IP privada segura y la capacidad de conectarse a las redes locales.

Diagrama que muestra cómo tiene lugar la conectividad en Azure SQL Managed Instance.

Los usuarios y las aplicaciones cliente pueden conectarse a la base de datos de instancias administradas a través de Azure Portal, PowerShell, la CLI de Azure y la API REST.

Todas las comunicaciones se cifran y firman mediante certificados. Para comprobar la confiabilidad de las partes en comunicación, las instancias administradas comprueban constantemente estos certificados mediante listas de revocación de certificados. Si los certificados se revocan, SQL Managed Instance cierra la conexión para proteger los datos.