Una de las labores más repetidas por los administradores de servidores es la de respaldos de la base de datos. Cuando se utiliza como servidores de aplicaciones o servidor para motores de base de datos una distribución de Linux me gusta utilizar o recomendar Python, por la sencillez y por la potencia que tiene.
En este sencillo ejemplo configuraremos un archivo backup.py para realizar respaldos de una base de datos MySQL y guardarlos en una carpeta.
Una vez que tenemos la configuración de los accesos y el destino de los respaldos aplicamos lógica
Para descargar el ejemplo: https://pastebin.com/b7uqn3iS
En este sencillo ejemplo configuraremos un archivo backup.py para realizar respaldos de una base de datos MySQL y guardarlos en una carpeta.
Código:
#!/usr/bin/env python
import os
import time
# Configuración de la DDBB
username = 'usuario'
password = 'MiPassUsuarioDB'
hostname = '127.0.0.1'
port = 3306
dest_folder = '/home/usuario/folder_respaldo'
#Declaramos las base de datos que NO incluiremos en el backup, como las de sistemas, etc.
not_backup = ['information_schema', 'test', 'mysql', 'performance_schema']
Una vez que tenemos la configuración de los accesos y el destino de los respaldos aplicamos lógica
Código:
#Indicamos el formato del archivo por Año, Mes día
filestamp = time.strftime('%Y%m%d')
#Ejecutamos el comando como salida prompt
database_list_command="mysql -u%s -p%s -h %s -P %s --silent -N -e 'show databases'" % (username, password, hostname, port)
#Recorremos la lista de las bases de datos en el servidor
for database in os.popen(database_list_command).readlines():
database = database.strip()
# Condicionamos las bases de datos que NO vamos a realizar respaldo para que no las tome
if database in not_backup:
continue
filename = "%s/%s-%s.sql" % (dest_folder, filestamp, database)
# dump + gzip command
os.popen("mysqldump -u%s -p%s -h %s -P %s -e --opt -c %s | gzip -c > %s.gz" % (username, password, hostname, port, database, filename))
Para finalizar escribimos en /etc/crontab
0 0 * * * usuario_ejecuta_trabajo python /ruta/backup.py
