
Realizar copias de seguridad periódicas es una tarea fundamental para proteger la información de tus bases de datos. En este artículo, veremos cómo crear un script en Python que automatiza la generación de un respaldo de una base de datos MySQL utilizando la herramienta mysqldump
.
Requisitos previos
Antes de comenzar, asegúrate de tener instalado:
- Python 3
- MySQL
- La herramienta
mysqldump
incluida en la instalación de MySQL - Acceso al sistema como administrador o con permisos adecuados para ejecutar respaldos
El script en Python
A continuación, se muestra el código que permite generar un archivo de respaldo (.sql
) de una base de datos específica:
import subprocess import getpass import datetime # Datos de conexión usuario = "root" base_datos = "world" archivo_salida = f"C:/Copias/backup_{base_datos}_{datetime.datetime.now():%Y%m%d_%H%M%S}.sql" # Solicitar contraseña de forma segura contrasena = getpass.getpass("Introduce la contraseña de MySQL: ") # Parámetros de conexión comando = [ "mysqldump", f"--user={usuario}", f"--password={contrasena}", "--databases", base_datos ] try: with open(archivo_salida, "w", encoding="utf-8") as salida: # Ejecutar el comando de forma segura resultado = subprocess.run(comando, stdout=salida, stderr=subprocess.PIPE, text=True, check=True) print(f"Copia de seguridad completada: {archivo_salida}") except subprocess.CalledProcessError as e: print("Error al hacer la copia de seguridad.") print("Mensaje de error:", e.stderr) except FileNotFoundError: print("Error: No se encontró 'mysqldump'. Asegúrate de que está en el PATH del sistema.")
Explicación del código
- Bibliotecas utilizadas:
subprocess
: permite ejecutar comandos del sistema desde Python.getpass
: asegura que la contraseña no se muestre mientras se escribe.datetime
: genera una marca de tiempo para diferenciar los respaldos.
- Generación del archivo de respaldo:
Se crea un archivo.sql
con un nombre que incluye la fecha y hora actuales, lo que evita sobrescribir archivos anteriores. - Ejecución del comando
mysqldump
:
Se utilizasubprocess.run()
para ejecutarmysqldump
con los parámetros necesarios. La salida estándar del comando se redirige directamente al archivo de respaldo. - Manejo de errores:
Se capturan errores comunes, como problemas de autenticación o la ausencia del comandomysqldump
en el sistema.
Consideraciones de seguridad
- No guardar contraseñas en texto plano: El uso de
getpass
mejora la seguridad al evitar que la contraseña quede expuesta. - Permisos adecuados: Asegúrate de que el script tenga permisos para escribir en la ubicación especificada.