La misión principal de un DBA es proteger la información que esta almacenada en las bases de datos que éste administra. Hay diversas formas de protegerlas, ya sea a través de permisos, encriptación, vistas, etc. Pero al final del día nada de esto sirve si es que nuestras bases de datos no están protegidas contra desastres ya sea humanos, naturales o de hardware los cuales eventualmente ocurren. Para proteger nuestras bases de datos contra los desastres también hay una serie características disponibles como clustering, availability groups y replicación, sin embargo como principal recurso para asegurar la supervivencia de nuestras bases de datos, tenemos que tener backups y los backups son el corazón de cualquier estrategia de recuperación que deseemos implementar.

Sé que hay muchas formas de sacar backups de nuestras bases de datos entre las más conocidas tenemos:

  • SSMS  (SQL Server Management Studio)
  • T-SQL
  • Plan de Mantenimiento
  • Herramientas externas

Todas esas herramientas son válidas para poder generar backups y hasta permiten automatizar de cierta manera la tarea de respaldar nuestras bases de datos. Es importante tener en cuenta que internamente todas esas herramientas utilizan T-SQL para poder generar los backups. Sin embargo configurar los backups con estas herramientas puede ser tedioso y propenso al error humano, ya que hay muchos clicks o código T-SQL involucrado para poder hacer que estos backups sean generados, y si a esto le sumamos que podemos tener instancias que tienen muchas bases de datos +50, entonces esta dificultad de la tarea sube exponencialmente.

DBATools nos da una nueva alternativa para hacer backups de nuestras bases de datos de manera fácil y rápida, lo cual nos da una ventaja comparado con hacer los backups con T-SQL o algunas de las otras maneras mencionadas anteriormente, acá vamos a revisar algunos ejemplos de cómo hacer diferentes tipos de backups con esta herramienta:

Respaldar todas las bases de datos de sistema

Normalmente en T-SQL tendríamos que hacer un script de backup por cada una de las 3 bases de datos de sistema. Con DBATools solo necesitamos una sola línea:

 

En este caso se utilizó el comando “Get-DbaDatabase” con el cual se recuperaron todas las bases de datos que no son de usuario (“-NoUserDB”) y ese resultado fue pasado al comando “Backup-DbaDatabase” el cual se encargó de respaldar las 3 bases de datos de sistema, excluyendo la Tempdb, y los archivos de backup fueron enviados a la ubicación por defecto de los backups la cual fue configurada al momento de la instalación de nuestra instancia.

Respaldar todas las bases de datos de la Instancia

En este caso sacaremos un backup de todas las bases de datos de la instancia, sin importar si son de sistema o de usuario, adicionalmente las sacaremos comprimidas y a la ubicación por defecto de los backups, y todo eso en una sola línea. Si esto se hubiera hecho con el clásico T-SQL hubiéramos tenido que elaborar un script por cada una de las bases de datos.

Respaldar una sola base de datos

Esto es lo que normalmente hacemos con las herramientas que hemos conocido hasta ahora. Esto obviamente también es posible con dbatools, aquí un ejemplo con algunos parámetros adicionales que comentaremos:

  • BackupDirectory: Sobre-escribe la localización por defecto de nuestros backups.
  • Type: Permite ejecutar todos los tipos de backup: Full, Diferencial, Log.
  • CompressBackup: Permite sacar el backup comprimido (Reduce el espacio requerido a un 10% dependiendo del tipo de data que tenemos en nuestras bases de datos)
  • Checksum: Este parámetro nunca debe de faltar ya que asegura que nuestro backup no este corrupto.
  • NoCopyOnly: Por defecto el comando “BackupDbaDatabase” toma los respaldos de las bases de datos en modo CopyOnly para no romper las cadenas de backups, pero si queremos que nuestro backup sea parte de la cadena de backups entonces debemos utilizarlo para sobre-escribir el valor por defecto.
  • Databases: En este parámetro podemos colocar las bases de datos en específico que queremos respaldar.

Respaldar bases de datos específicas

Como hemos visto hasta ahora se puede respaldar las bases de datos de manera muy sencilla, tanto las de sistema como las de usuario, incluso vemos que podemos indicar nosotros mismos que bases de datos queremos respaldar, pero ahora vamos a ver una manera incluso más sencilla e intuitiva de hacerlo.

Esta sentencia vuelve a echar mano del comando “Get-DbaDatabase” pero ahora envía su resultado a otro comando llamado “Out-GridView” el cual levantara una ventana grafica de tipo tabla con el resultado, en la cual podemos hacer filtros personalizados para buscar los registros que realmente necesitamos. Adicionalmente a este comando se adiciono el parámetro “-PassThru” el cual permitirá que pase los registros seleccionados de la ventana grafica hacia el siguiente comando que en este caso es “Backup-DbaDatabase” para poder finalmente respaldar solo las bases de datos seleccionadas.

Esto es todo lo que veremos en esta primera entrega sobre las diferentes ventajas que nos da el uso del comando “Backup-DbaDatabase”, que como se pudo observar no son pocas, y yo personalmente recomiendo mover los backups a este tipo de soluciones que nos ofrecen mayor facilidad y flexibilidad para lograr el objetivo. En una segunda entrega veremos cómo implementar los demás tipos de backup como los diferenciales y de log.

One thought on “Backups con DBATools – Parte 1

Comments are closed.