Python script: backup comprimido de MySQL a una carpeta local

13 enero, 2011

El siguiente script permite hacer un backup comprimido de las bases de datos en MySQL a una carpeta local. En la parte variables debemos cambiar los campos con “___&___”. El username más común es “root” y el hostname “localhost” pero hay otras opciones. La salida se encontrará en dest_folder con el nombre añomesdia-basedatos.sql.gz.

#!/usr/bin/env python
import os
import time

# START: configuration
username = '___&___'
password = '___&___'
hostname = '___&___'
dest_folder = '___&___'
# END: configuration

# timestamp
filestamp = time.strftime('%Y%m%d')
# database list
database_list_command="mysql -u%s -p%s -h %s --silent -N -e 'show databases'" % (username, password, hostname)
# iterate database list
for database in os.popen(database_list_command).readlines():
        database = database.strip()
        # databases not to backup
        if database == 'information_schema' or database == 'test' or database == 'mysql' or database == 'performance_schema':
                continue
        # destination and filename
        filename = "%s/%s-%s.sql" % (dest_folder, filestamp, database)
        # dump + gzip command
        os.popen("mysqldump -u%s -p%s -h %s -e --opt -c %s | gzip -c > %s.gz" % (username, password, hostname, database, filename))

Debemos añadir la siguiente linea al fichero /etc/crontab para que el backup se efectue cada dia a las 0:00:

0 0 * * * -username- python /-folder-/mysql2folder.py

Saludos!

    Etiquetas: , , , ,

    4 comentarios

    1. Carles dice:

      también encontré un script más avanzado que permite subir los ficheros a un ftp:
      https://github.com/s7anley/MySQL-backup
      contiene las instrucciones de configuración y uso.

    2. victor dice:

      Gracias por la ayuda, solo una cosina, ¿si solo quieres hacer el backup de una única base de datos, como la eliges?

    Dejar un comentario