Como hacer un backup de la base de datos WordPress con SSH

En Tutoriales y Guías, Webmasters por

Me he dado cuenta de que en mis tareas de mantenimiento de servidores es muy frecuente el realizar copias de seguridad o backups de bases de datos WordPress, por ello voy a tratar de explicar cómo hacer un backup de la base de datos WordPress con SSH, es decir, desde la terminal.

Como hacer un backup de la base de datos WordPress con SSH

Muchos estaréis pensando que existen multitud de plugins para crear copias de seguridad de nuestro blog WordPress, y es cierto, pero desde mi punto de vista, crear una copia de seguridad de la base de datos desde la terminal es uno de los métodos más sólidos y fiables. También debo aclarar, que recurrir a este método a través de la terminal es la opción más viable cuando la base de datos WordPress tiene un tamaño considerable.

Antes de explicar nada, decir que echaremos mano de PuTTY para acceder a la terminal del servidor (en mi caso con el sistema operativo Ubuntu 14.04 x64).

Como hacer un backup de la base de datos WordPress con SSH

En primer lugar accedemos a la terminal y comprobamos que tenemos la herramienta mysqldump instalada (se instala en el momento que instalamos el paquete de MySQL/MariaDB en nuestro servidor). Escribimos en nuestra terminal mysqldump y deberíamos ver en pantalla algo similar a:

Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]
OR mysqldump [OPTIONS] –all-databases [OPTIONS]
For more options, use mysqldump –help

Empezaremos por el comando más sencillo que utilizaremos y luego iré explicando los detalles. El comando a emplear es:
mysqldump -u [usuario] -p[password] [base_datos] > [nombre_backup.sql]

Es muy importante prestar atención a los espacios en blanco, por ello recalco que entre -p y [password] no existe ningún espacio en blanco.

Las partes del comando que están entre corchetes debemos sustituirlas por:

  • [usuario]: el nombre de usuario de nuestra base de datos.
  • [password]: la contraseña de la base de datos.
  • [base_datos]: el nombre de la base de datos de la que queremos hacer un backup.
  • [nombre_backup.sql]: el nombre que tendrá nuestro archivo de backup, es importante que tenga extensión .sql para evitar futuros problemas.

Si no especificamos ninguna contraseña después de -p, el propio programa mysqldump nos la solicitará antes de comenzar a realizar el backup. El comando sería de la siguiente forma:
mysqldump -u [usuario] -p [base_datos] > [nombre_backup.sql]

Comprimir el backup SQL de la base de datos.

El archivo SQL de salida, es un archivo de texto plano, por lo que si el tamaño es considerable, suele ser una buena opción comprimirlo con Gzip. La aplicación de compresión Gzip suele estar instalada por defecto, pero podemos hacer una simple comprobación tecleando en la terminal el comando gzip, el cual nos debería mostrar en pantalla algo como:

gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip –h

Si se diese la extraña situación de no tener Gzip instalado, ejecutamos el siguiente comando para instalarlo (funcional en distribuciones Ubuntu):
sudo apt-get install gzip

El comando que emplearemos para hacer un backup comprimido con Gzip sería:
mysqldump -u [usuario] -p[password] [base_datos] | gzip -c > [nombre_backup.gz]

Podemos especificar el nivel de compresión máximo para Gzip y así obtener un archivo comprimido de menor tamaño con el siguiente comando:
mysqldump -u [usuario] -p[password] [base_datos] | gzip -9 -c > [nombre_backup.gz]

También podemos emplear Bzip2 para comprimir nuestro backup SQL:
mysqldump -u [usuario] -p[password] [base_datos] | bzip2 -c > [nombre_backup.gz]

Comprimir con Bzip2 especificando el nivel de compresión máximo:
mysqldump -u [usuario] -p[password] [base_datos] | bzip2 -9 -c > [nombre_backup.gz]

Fijaros que la extensión del archivo es .gz (en el caso de Gzip) o .bz2 (en el caso de Bzip2), las cuales nos permite identificar que se trata de un archivo comprimido.

Consideraciones a tener en cuenta con los backups o respaldos de bases de datos SQL comprimidos.

Los programas de compresión suelen soportar diferentes niveles de compresión y se suelen indicar con número de 1 al 9. Cuanto mayor es el número, menor será el tamaño del archivo comprimido.

Estos programas de compresión usan por defecto el nivel de compresión 6, ya que cuanto mayor sea el nivel de compresión, más tiempo se necesitará para comprimir el archivo y más recursos del sistema se emplearán. Esto es algo muy importante, ya que si el archivo que vamos a comprimir es de gran tamaño, si seleccionamos el nivel de compresión 9 podemos agotar los recursos de nuestro servidor.

En este tutorial se emplean los programas Gzip y Bzip2 para comprimir el backup de la base de datos WordPress, ambos programas son similares, la única diferencia es que Bzip2 consigue comprimir más los archivos y consigue archivos de menos tamaño, pero por otro lado, consume más recursos que Gzip. Mi consejo es emplear Gzip con el nivel de compresión por defecto.

Consideraciones a tener en cuenta con los backups o respaldos de bases de datos SQL en general.

Un problema muy frecuente aparece cuando la contraseña MySQL tiene uno o varios caracteres especiales y la terminal no reconoce adecuadamente el comando. Para solucionar esto debemos colocar la contraseña entre comillas simples. El comando de ejemplo sería:
mysqldump -u [usuario] -p'p@ssw#rd' [base_datos] > [nombre_backup.sql]

Otro aspecto importante es conocer algunas de las opciones que vienen activadas por defecto a la hora de crear nuestro backup con mysqldump. En muchos tutoriales se puede ver como agregan el modificador --opt al comando, por ejemplo:
mysqldump --opt -u [usuario] -p[password] [base_datos] > [nombre_backup.sql]

Este modificador --opt, ya viene activado por defecto (así que no tenemos por qué agregarlo al comando) y es aconsejable no desactivarlo, ya que activa ciertas opciones que optimizarán la creación de nuestro backup. Extraído de la documentación oficial, podemos ver que implica el modificador --opt:

Same as –add-drop-table, –add-locks, –create-options, –quick, –extended-insert, –lock-tables, –set-charset, and –disable-keys. Enabled by default, disable with –skip-opt.

Consideraciones finales.

Me he extendido más de lo que pretendía en este tutorial, pero así conoceréis más en profundidad que nos ofrece el sistema operativo a la hora de crear backups de la base de datos WordPress usando la shell. Este tutorial es el resultado de leer diferentes foros y páginas de webmasters además de la documentación oficial de mysqldump. Espero que os haya sido de ayuda y recordad que podéis dejar en los comentarios cualquier duda.