Sí, sé que es un script sencillo que se puede realizar desde cero con un poco de tiempo, pero hay pequeños detalles que se olvidan y pues me servirá a mí más que todo como un recordatorio de cómo se hace y no perder el tiempo en hacerlo de cero.
Explico cada parte mediante los colores:
- Azul. Se establece una variable con la fecha/tiempo actual, de tal manera guardar ésta información en el nombre del archivo.
- Verde. Verificamos el # de BD’s que tiene nuestro servidor y, con base a éste, haremos el bucle para ir haciendo el respaldo de cada una de ellas. En ésta línea coloco las credenciales (usuario y clave) de acceso al MySQL en línea, pero esto no es adecuado… se puede hacer lo mismo que se verá más adelante.
- Rojo. Se genera el respaldo de la BD en cuestión. Lo especial de éste paso es que, en lugar de colocar el usuario y contraseña explícitamente en el script, se hace referencia al archivo auth-mysql.cnf , el cual es el que contiene dicha información. En ésta misma línea de comando, comprimimos el respaldo resultante en formato gzip. El contenido del archivo .cnf sería más o menos así (Credenciales de acceso al MySQL como root):
[client] user=root password=Mi_Clave2 host=localhost
- Morado. Copiamos el respaldo de la BD a un recurso compartido de algún Windows. De igual forma que el anterior punto, las credenciales de acceso las dejamos en una archivo de texto (/home/usuario/auth-samba.txt) con el siguiente contenido (Credenciales de acceso al recurso compartido de un Windows):
username=administrador password=Mi_Clave3 domain=ingdiaz.org
- Lo demás es para finalizar el bucle y eliminar el respaldo que quedó en el server local (dado que ya lo tenemos en el otro servidor y para efectos de liberar espacio es mejor eliminarlo).
A continuación, el contenido del script:
#!/bin/bash fecha=$( date +%Y%m%d-%H%M%S ) mysql -u usuario --password="Mi Clave" -B -N -e 'show databases' | while read db; do echo "Respaldando ${db}..." mysqldump --defaults-extra-file=/home/usuario/auth-mysql.cnf --lock-tables=false ${db} | gzip -c -9 > /opt/backup/bd-${db}-${fecha}.gz echo "Enviando a recurso compartido" smbclient //servidor1/respaldos -A /home/usuario/auth-samba.txt -c 'put /opt/backup/bd-'${db}'-'${fecha}'.gz bd-'${db}'-'${fecha}'.gz' #scp -u usuario -pMiClave '/opt/backup/mibase-'${db}'-'${fecha}'.gz' usuario2@server2://tmp done rm /opt/backup/* exit 0
También dejé «comentareado» la forma de copiar éste respaldo mediante scp , si digamos se quiera guardar en un servidor GNU/Linux.
¡Saludos!
Comentarios por Facebook
comentarios