Superposición del sitio

Automatizar copia de seguridad de la base de datos MySQL

Al utilizar un Script para generar la copia de la base de datos a partir de la versión 5.6 de MySQL genera un error.

[code language=»sql»]
mysql Warning: Using a password on the command line interface can be insecure
[/code]

Este es producido debido a que es una práctica poco segura introducir en un script la contraseña de la base de datos, para evitar este error podemos almacenar la contraseña en un fichero de configuración externo, sin olvidar que este debe estar en el directorio del usuario que va ejecutar el script y con los permisos necesarios para que no sea legible para otros usuarios.

El fichero externo de configuración lo guardamos con el nombre mysql-credentials.cnf:

[code language=»bash»]
[client]
user=usuarioDB
password=contraseñaDB
host=localhost
[/code]

Configurando los permisos.

[code language=»bash»]
chmod 600 mysql-credentials.cnf
[/code]

Para realizar copia de seguridad guardamos la siguientes lineas con el nombre de backup_db.sh.

[code language=»bash»]
#!/bin/bash

echo "* MySQLDUMP esta Realizando el Backup de la base de datos"

BACKUP_DIR=’/home/Usuario/Carpeta_Backup’
FECHA=$(date –date=’now’ +%d-%m-%Y)
DIR=$BACKUP_DIR"/"$FECHA"_Nombre_DB.sql"
DB_NAME=’Nombre_DB’

credentials="/home/Usuario/mysql-credentials.cnf"
# Realizar Backup de toda la base de datos
mysqldump –defaults-file=$credentials –databases ${DB_NAME} > ${DIR}

# Realizar Backup de las tablas de la base de datos sin información –no-data
mysqldump –defaults-file=$credentialsFile –databases –no-data ${DB_NAME} > ${DIR}

echo "* Backup base de datos Terminado"

[/code]

Vamos a la consola y escribimos

[code language=»bash»]
crontab -e
[/code]

Ahora vamos a configurar nuestro script para que se ejecute con el gestor de tareas programadas crontab, para esto solo basta agregar la siguiente linea en el archivo de configuración abierto con crontab -e.

[code language=»text»]
00 12 * * * bash /home/Usuario/backup_db.sh
[/code]

Ahora el script se ejecutara todos los días a medio día.

NOTA:

Si aparece en la salida por comandos un mensaje

${DIR}: redireccionamiento ambiguo

puedes modificar la siguiente línea agregando a ${DIR} las comillas dobles «${DIR}»

[code language=»bash»]
mysqldump –defaults-file=$credentials –databases ${DB_NAME} > "${DIR}"
[/code]

Colocar doble comillas en la variable evitara la «redirección ambigua» por culpa de espacios que puedan aparecer al copiar desde una pagina web o archivo, pero también debe revisar la ortografía si es el caso de fue transcrito el codigo.

2 comentarios en «Automatizar copia de seguridad de la base de datos MySQL»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *