
En este artículo, aprenderá los pasos para crear un script para respaldar bases de datos MySQL en cualquier entorno Unix, siempre que tenga los privilegios necesarios (root) en el servidor.
Paso 1: Creación de directorios necesarios
Vamos a crear una carpeta en cualquier lugar, digamos: /var/backup/ preferiblemente por fuera de donde se encuentra el directorio raíz de su aplicación web para evitar el acceso accidental de cualquier persona que no sea usted. Ahora, cree un archivo con permisos de ejecución con el nombre "mysqlbackup.sh" en la carpeta creada anteriormente.
Necesitaremos crear otra carpeta, digamos "db", donde almacenará las copias de seguridad de su base de datos.
sudo mkdir -p /var/backup/db
cd /var/backup
sudo touch mysqlbackup.sh
sudo chmod +x mysqlbackup.sh
Paso 2: Creación de archivo de configuración
Vamos a crear un archivo de configuración donde vamos a almacenar nuestras credenciales de MySQL, esto para evitar tener que poner nuestra contraseña en el script.
Cree un archivo de configuración en el directorio donde desee guardarlo puede ser /home/nombre_usuario/.mysqlcredentials.cnf
Una vez creado el archivo ábralo con su editor de texto favorito puede ser vim o nano, cree las credenciales de autenticación como se muestra a continuación
vim /home/nombre_usuario/.mysqlcredentials.cnf
Escriba en el archivo el nombre del usuario, la contraseña y después guárdelo.
[client]
user = root
password = contraseña_aqui
Por último, vamos a restringir los permisos para este archivo
chmod 600 /home/nombre_usuario/.mysqlcredentials.cnf
Paso 3: Creación del script
Vamos a editar el script que habíamos creado anteriormente (mysqlbackup.sh), abrimos el script con nuestro editor de texto y escribimos lo siguiente.
DATE=`date +"%d_%b_%Y_%H%M"`
BACKUP_LOCATION=/var/backup/db
SQLFILE=${BACKUP_LOCATION}/db_backup_${DATE}.sql
DATABASE=nombre_base_datos_a_respaldar
USER=root
CONFIG_FILE_PATH=/home/nombre_usuario/.mysqlcredentials.cnf
if [ ! -d $BACKUP_LOCATION ]; then
echo "Directorio no encontrado, creando directorio…"
sudo mkdir -p ${BACKUP_LOCATION}
fi
sudo mysqldump --defaults-extra-file=${CONFIG_FILE_PATH} -u ${USER} ${DATABASE}|gzip > ${SQLFILE}.gz
Primero que todo definimos las variables necesarias para nuestro script.
- DATE: Aquí vamos a almacenar la fecha en la cual se realizó el respaldo, esta variable la utilizaremos en el nombre de nuestro respaldo.
- BACKUP_LOCATION: Aquí ponemos la ruta en la cual vamos a almacenar nuestros respaldos.
- SQLFILE: Aquí almacenamos la ruta del directorio donde se guardará el respaldo, con el nombre de nuestro respaldo
- DATABASE: Aquí ponemos el nombre de la base de datos que queremos respaldar
- USER: Usuario mysql
- CONFIG_FILE_PATH: Ruta de nuestro archivo de configuración con las credenciales de autenticación
Luego creamos un if para comprobar si el directorio donde vamos a guardar nuestro respaldo existe, si no existe lo creamos recursivamente.
Por último, utilizamos el comando mysqldump para realizar el respaldo, pasamos el resultado del comando mysqldump a él comando gzip para comprimir nuestro respaldo y ahorrar espacio en el disco de nuestro servidor.
Podemos ejecutar nuestro script para comprobar que todo está funcionando perfectamente antes de crear nuestra tarea programada en cron, para ello ejecutamos el script con sudo /var/backup/mysqlbackup.sh y revisamos que se haya creado el respaldo en la carpeta db.
Paso 4: Automatizar las copias de seguridad con Cron
Vamos a editar nuestro archivo crontab con el siguiente comando:
sudo crontab -e
Vamos crear una tarea programada que ejecute nuestro script de respaldo todos los días a medianoche, para ello escribimos lo siguiente al final del archivo:
0 0 * * * /var/backup/mysqlbackup.sh
Guardamos el archivo y salimos del editor. Si necesitas ejecutar los respaldos a una hora distinta, puedes hacerlo cambiando los valores del comando que acabamos de escribir, un sitio web que nos hará la vida más fácil para calcular los valores personalizados es https://crontab.guru/
(Bonus) Restablecer nuestra base de datos con respaldo
Para restablecer nuestra base de datos con un archivo de respaldo, primero vamos a descomprimir el archivo de respaldo y el resultado se lo vamos a pasar al comando mysql, ponemos el nombre de nuestro usuario mysql y el nombre de la base de datos que queremos restablecer.
sudo gunzip < nombre_archivo_respaldo.sql.gz | mysql -u root -p nombre_de_la_base_de_datos
Contenido del articulo
- Comentarios
Comentarios
No hay comentarios. Inicia sesión para comentar.