En septiembre de 2017, Microsoft anunció la disponibilidad pública de SQL Server para Linux. Hasta ese momento, este sistema de gestión de bases de datos relacionales solamente podía utilizarse en servidores Windows. Por supuesto, esta decisión estratégica le permitió a Microsoft ganar más presencia en el ambiente corporativo donde su principal competidor es Oracle. Además, otros tipos de entidades (sin importar su tamaño) resultaron beneficiados con la iniciativa. Por esa razón, en esta guía aprenderás cómo instalar SQL Server en Ubuntu 20.04, a realizar copias de respaldo y a restaurarlas. De esta manera, estarás en condiciones de realizar la migración de tus bases de datos de un servidor Windows a un VPS Ubuntu sin complicaciones.
Requisitos previos
- Tu VPS debe contar con 2 GB de memoria RAM como mínimo.
- Tener un usuario con acceso a
sudo
. En Configuración inicial de un servidor con Ubuntu 20.04 te explicamos cómo hacerlo. - Verificar que exista una regla en el cortafuegos de Donweb que permita el tráfico entrante al puerto 1433/TCP. Si necesitas asistencia, puedes consultar el artículo Firewall en la sección de ayuda.
Paso 1: Instalación de SQL Server 2019
Para comenzar, importa las claves GPG del repositorio público de Microsoft antes de agregarlo a tu lista de fuentes. De esta manera, el gestor APT confiará en que SQL Server procede de un origen legítimo y te permitirá instalarlo.
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
Una vez que hayas ejecutado los comandos anteriores, actualiza el índice e instala el paquete:
sudo apt update
sudo apt install mssql-server -y
Luego de completar la instalación, SQL Server todavía no estará corriendo como puedes observar con systemctl status mssql-server
:
En el próximo paso configurarás el servicio y elegirás la edición del software.
Paso 2: Configuración del servicio
Para poner en funcionamiento SQL Server, ejecuta el comando que te sugirió el proceso de instalación:
sudo /opt/mssql/bin/mssql-conf setup
En primer lugar, elige la edición de SQL Server. En este caso te recomendamos la 2 (opción para desarrolladores). Si bien legalmente no puedes utilizarla en producción, te servirá para seguir los pasos restantes de esta guía y para practicar por tu cuenta. Acepta los términos escribiendo yes y a continuación deberás ingresar la contraseña para el usuario sa (administrador del sistema por sus siglas en inglés) dos veces:
Como ilustra la imagen anterior, SQL Server ahora está en ejecución.
Paso 3: Restaurar una base de datos
En este paso nos valdremos de la base de datos gratuita AdventureWorks para practicar una restauración. Para descargarla, utiliza wget
de la siguiente manera:
wget https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2019.bak
Una vez que tengas el archivo, identifica su ruta absoluta empleando pwd
. En la imagen de abajo vemos que para nuestro ejemplo se trata de /home/gabriel/AdventureWorks2019.bak.
A continuación, inicia sesión en tu instancia de SQL Server empleando la cuenta sa y la contraseña que elegiste en el paso anterior. Te recomendamos emplear DBeaver, un cliente multiplataforma y que soporta todas las bases de datos más populares. Una vez que lo hayas instalado, la conexión se configura con los datos que mencionamos, la dirección IP del servidor y el puerto 1433:
Presionando la tecla F3 puedes abrir una nueva ventana de consulta. Escribe el comando para obtener la lista de los archivos lógicos de la base de datos y toma nota de estos. Recuerda cambiar la ruta del archivo por la que corresponda en tu caso.
RESTORE FILELISTONLY FROM DISK = '/home/gabriel/AdventureWorks2019.bak'
El campo que más nos interesa en el resultado es LogicalName, donde encontramos dos datos (AdventureWorks2017 y AdventureWorks2017_log):
Ahora incluye esos nombres en el listado de archivos a restaurar con la directiva MOVE TO. El primer argumento está compuesto por el nombre lógico y el segundo es la ruta donde SQL Server almacena por defecto las bases de datos en Ubuntu 20.04 (/var/opt/mssql/data).
RESTORE DATABASE [AdventureWorks]
FROM DISK = '/home/gabriel/AdventureWorks2019.bak'
WITH FILE = 1,
MOVE 'AdventureWorks2017' TO '/var/opt/mssql/data/AdventureWorks.mdf',
MOVE 'AdventureWorks2017_log' TO '/var/opt/mssql/data/AdventureWorks_log.ldf',
NOUNLOAD,
STATS = 5;
Luego de ejecutar el código de arriba, la base de datos AdventureWorks estará disponible en el explorador. Además, ambos archivos aparecen en el diccionario de datos dentro de la vista sys.database_files:
USE AdventureWorks;
SELECT type_desc
, name
, physical_name
, state_desc
FROM sys.database_files;
Paso 4: Hacer una copia de respaldo
Para evitar problemas de pérdida de datos, todo administrador debe hacer backups – sin excusas ni excepciones. El código que aparece a continuación te permitirá realizar una copia de respaldo de AdventureWorks y guardarlo dentro del directorio /tmp. Si lo deseas, puedes cambiar la ubicación si lo deseas luego de darle los permisos correspondientes al usuario Unix mssql.
BACKUP DATABASE [AdventureWorks]
TO DISK = '/tmp/adventure-works.bak'
WITH NOFORMAT,
NOINIT,
NAME = 'AdventureWorks - Backup completo',
SKIP,
NOREWIND,
NOUNLOAD,
STATS = 5;
Al finalizar el backup, la siguiente consulta te permitirá verificar la existencia de este:
SELECT backup_set_uuid AS "UUID"
, name AS "Backup Name"
, database_name AS "Database Name"
, user_name AS "User Name"
, software_major_version AS "Major Version"
, database_creation_date AS "DB Creation Date"
, backup_start_date AS "Backup Start Date"
, backup_finish_date AS "Backup End Date"
, ROUND(backup_size / (1024 * 1024), 2) AS "Backup size (MB)"
, compatibility_level AS "Compatibility"
, CASE [type] WHEN 'D' THEN 'Database'
WHEN 'I' THEN 'Differential database'
WHEN 'L' THEN 'Log'
WHEN 'F' THEN 'File or filegroup'
WHEN 'G' THEN 'Differential file'
WHEN 'P' THEN 'Partial'
WHEN 'Q' THEN 'Differential partial'
ELSE 'Other'
END AS "Backup Type"
FROM msdb.dbo.backupset b;
El registro resaltado indica la copia de respaldo que acabamos de hacer:
¡Felicitaciones! Has completado la instalación de SQL Server, aprendido a restaurar bases de datos y hacer copias de respaldo.
Conclusión
En esta guía aprendiste a instalar SQL Server en Ubuntu 20.04 y a realizar backups y restaurarlos. Si bien estas tareas pueden hacerse a través de una interfaz gráfica (si dispones de SQL Server Management Studio), saber llevarlas a cabo utilizando T-SQL es una habilidad invalorable. De esta manera, con cualquier cliente podrás cumplir estas tareas con éxito sin depender de una herramienta en particular.