Migrar una base de datos SQL de Windows a Linux

En este tutorial se explican dos enfoques distintos para migrar una base de datos de SQL Server de un servidor Windows a un servidor Linux.

En esta página se describen los siguientes métodos:

El método de migración ideal depende del tiempo de inactividad aceptable de una base de datos específica y de su tamaño. La técnica más utilizada es el método de copia de seguridad y restauración.

En las siguientes secciones se explica cómo migrar una base de datos de SQL Server de un servidor basado en Windows a uno basado en Linux.

Importar una base de datos SQL en Linux

En esta sección se explica cómo exportar una base de datos SQL de un servidor SQL basado en Windows e importarla a un servidor SQL basado en Linux mediante SQL Server Management Studio (SSMS).

Requisitos previos

Para importar una base de datos SQL a Linux, necesitas lo siguiente:

  • Un equipo Windows con lo siguiente:

    • SQL Server instalado.
    • SSMS instalado.
    • La base de datos SQL que quieres migrar está en este equipo. En este tutorial se usa una base de datos de ejemplo AdventureWorks2022.
  • Máquina Linux con SQL Server instalado.

Exportar una base de datos SQL desde un servidor SQL basado en Windows

Para exportar una base de datos SQL desde un servidor SQL basado en Windows, siga estos pasos:

  1. En el ordenador Windows, crea una carpeta en la unidad C: y llámala export (c:\export).
  2. Abre SSMS.
  3. En la ventana Conexión, introduce localhost y haz clic en Conectar.
  4. En el Explorador de objetos, expanda Bases de datos.
  5. Haz clic con el botón derecho en la base de datos de destino, selecciona Tareas y, a continuación, haz clic en Exportar aplicación de nivel de datos.... Se abrirá el asistente Exportar datos.

    Exportar datos.

  6. En el asistente Exportar datos, selecciona Siguiente.

  7. En la pestaña Configuración, configure el asistente Exportar datos para guardar el archivo del paquete de copia de seguridad (BACPAC) (.bacpac) en el disco local.

  8. Especifica la carpeta y el nombre del archivo de la siguiente manera:

    c:\export\MigrationFile.bacpac
    
  9. Haz clic en Siguiente.

  10. Revisa los ajustes especificados y haz clic en Finalizar para iniciar el proceso de exportación. El archivo .bacpac se crea correctamente en la ubicación que has elegido. Ahora puede importarlo a un servidor SQL de destino.

Importar una base de datos a Linux

Para importar una base de datos SQL a un servidor SQL basado en Linux, sigue estos pasos:

  1. Abre SSMS.
  2. En la ventana Conexión, introduce la dirección IP del servidor de destino y haz clic en Conectar.
  3. Haz clic con el botón derecho en la carpeta Bases de datos del Explorador de objetos y selecciona Importar aplicación de nivel de datos....
  4. Especifica el archivo .bacpac creado en el procedimiento de exportación.

    c:\export\MigrationFile.bacpac
    
  5. Haz clic en Siguiente.

  6. Especifica AdventureWorks2022.

    AdventureWorks2022
    
  7. Comprueba que la ruta de datos y de registro muestre los ajustes predeterminados de la instancia de Linux.

  8. Haz clic en Siguiente.

  9. Revisa la configuración de la importación y haz clic en Finalizar para iniciar la importación.

    Importa la configuración del archivo .bacpac.

  10. Haga clic en Cerrar para cerrar el asistente de importación. La base de datos está lista para las conexiones.

Migrar mediante copias de seguridad y restauración de SQL

Puedes migrar una base de datos de SQL Server en Windows a SQL Server en Linux mediante la función de copia de seguridad y restauración. En esta sección se ofrece una guía detallada para ayudarte a transferir tu base de datos al entorno Linux con este método.

Requisitos previos

Para migrar una base de datos mediante el método de copia de seguridad y restauración, necesitas lo siguiente:

  • Un equipo Windows con lo siguiente:

  • Una máquina Linux con SQL Server instalado.

Crear una copia de seguridad de la base de datos en un equipo Windows

Puedes crear una copia de seguridad de una base de datos en un archivo con Windows mediante SSMS de la siguiente forma:

  1. Abre SSMS en el equipo Windows.
  2. En la ventana Conexión, introduce localhost.
  3. En el Explorador de objetos, expanda Bases de datos.
  4. Haz clic con el botón derecho en la base de datos de destino, selecciona Tareas y, a continuación, haz clic en Crear copia de seguridad....

    Crear copia de seguridad.

  5. En la ventana Copia de seguridad de la base de datos, compruebe que Tipo de copia de seguridad esté configurado como Completa y que Crear copia de seguridad en esté configurado como Disco. Anota el nombre y la ubicación del archivo de copia de seguridad. Por ejemplo, una copia de seguridad de una base de datos en SQL Server 2022 tiene la ubicación predeterminada C:\Archivos de programa\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup.

    Opciones de copia de seguridad de bases de datos SQL.

  6. Haz clic en Aceptar para iniciar la copia de seguridad.

Copia el archivo de copia de seguridad en tu máquina Linux

Puedes usar un cliente del protocolo de copia segura (SCP) para subir el archivo de copia de seguridad a tu máquina Linux. En el siguiente procedimiento se usa un cliente de línea de comandos SCP. Sin embargo, también puedes usar WinSCP o Git Bash Shell para subir el archivo.

  1. Abre una nueva ventana de comandos en tu máquina Windows y ve al directorio que contiene el archivo de copia de seguridad creado en la sección Crea una copia de seguridad de tu base de datos en tu máquina Windows. Por ejemplo:

    cd 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\'
    
  2. Usa el comando scp para copiar el archivo en el equipo Linux de destino. En el siguiente ejemplo se usa el archivo MigrationBackup.bak creado anteriormente.

    scp MigrationBackup.bak sysadmin@LINUX_INTERNAL_IP:./
    

    Sustituye LINUX_INTERNAL_IP por la IP de tu máquina Linux.

    Copia el archivo de copia de seguridad en el equipo de destino.

Mover archivo de copia de seguridad

Para restaurar la base de datos en SQL Server en una máquina Linux, debes asegurarte de que el archivo de copia de seguridad se encuentre en la ubicación predeterminada propiedad del usuario mssql, es decir, /var/opt/mssql.

Para mover el archivo de copia de seguridad al directorio mssql, sigue estos pasos:

  1. Desde el equipo Windows, conéctate al equipo Linux de destino mediante SSH.

    ssh sysadmin@LINUX_INTERNAL_IP
    

    Sustituye LINUX_INTERNAL_IP por la IP de tu máquina Linux.

  2. Crea un directorio de copia de seguridad.

    sudo mkdir -p /var/opt/mssql/backup
    
  3. Mueve el archivo de copia de seguridad al directorio que acabas de crear.

    sudo mv ~/MigrationBackup.bak /var/opt/mssql/backup
    

Restaurar la base de datos

Puedes restaurar la base de datos en un equipo Linux con SSMS siguiendo estos pasos:

  1. Abre SSMS en tu equipo Windows.
  2. En la ventana de conexión, introduce la dirección IP o el nombre de host del equipo Linux.
  3. Especifica la información de Inicio de sesión y la Contraseña.
  4. Haz clic en Conectar.

    Selecciona el archivo de copia de seguridad que quieras restaurar.

  5. En el Explorador de objetos, haga clic con el botón derecho en la carpeta Bases de datos y seleccione Restaurar base de datos...

  6. En la ventana Restaurar base de datos, defina Origen como Dispositivo y haga clic en ... para abrir el cuadro de diálogo de selección de copia de seguridad.

  7. En el cuadro de diálogo Seleccionar dispositivo de copia de seguridad, haz clic en Añadir.

  8. En el explorador de archivos, haga clic en el directorio \var\opt\mssql\backup y seleccione el archivo de copia de seguridad que haya subido.

  9. Haz clic en Aceptar para aceptar la selección y cerrar el cuadro de diálogo.

  10. Revisa el medio de copia de seguridad rellenado y haz clic en Aceptar.

    Selecciona el archivo de copia de seguridad que quieras restaurar.

Antes de empezar a restaurar tu base de datos en un ordenador Linux, debes actualizar la ubicación de los archivos de la base de datos restaurada en tu ordenador Linux, ya que la ruta del servidor Windows no existe en el servidor Linux.

  1. En el menú de la izquierda, haz clic en Archivos.
  2. Selecciona Reubicar todos los archivos en la carpeta para mover los archivos restaurados al directorio de datos predeterminado de SQL Server.
  3. Haz clic en Aceptar para iniciar el proceso de restauración.
  4. Para verificar la restauración, enumera todas las bases de datos del servidor. La base de datos restaurada debería aparecer en la lista.

    SELECT Name FROM sys.Databases
    GO
    
  5. Ejecuta otras consultas en la base de datos migrada.

    USE AdventureWorks2022
    SELECT top 100 * FROM [Person].[Person]
    GO