Script de Python para copia de seguridad de la base de datos MySQL

Script de Python para copia de seguridad de la base de datos MySQL

Este es un simple script de Python para hacer una copia de seguridad de las bases de datos MySQL utilizando la utilidad mysqldump. Este script ha sido probado con el Python 3.5 y 2.7.15.

Cómo usar script

Este script es muy fácil de usar, descargar o copiar este script en su sistema local y ejecutarlo con Python. Este script es capaz de tomar varias bases de datos de copia de seguridad

Copia de seguridad de la base de datos única: Si desea usar este script para tomar una copia de seguridad de la base de datos única, edite el script como a continuación. Por ejemplo, el nombre de la base de datos es mydb.

 Db_name = 'mydb' 

Copia de seguridad de múltiples bases de datos: Para tomar varias bases de datos de copia de seguridad, cree un archivo de texto como /copia de seguridad /dbnames.txt y agregar nombres de bases de datos uno por línea como a continuación

# gat /backup /dbnames.Base de datos txt1 mydb 

Y agregue este archivo al script como a continuación.

 Db_name = '/backup/dbnames.TXT' 

Cambiar ubicación de respaldo: Puede cambiar a continuación la variable para cambiar la ubicación de la ruta de copia de seguridad.

 Backup_path = '/backup/dbbackup/' 

Script de copia de seguridad de Python MySQL

Haga clic aquí o use el comando a continuación para descargar el script desde github o simplemente puede copiar el script a continuación.

#!/usr/bin/python ######################################## ################Este script de Python se usa para MySQL Base de datos de copia de seguridad#usando MySqldump y Tar Utility. # # Escrito por: Rahul Kumar # Sitio web: http: // tecadmin.Neta # Fecha creada: 03 de diciembre de 2013 # # Último modificado: 17 de agosto de 2018 # Probado con: Python 2.7.15 y Python 3.5 # Revisión de script: 1.4############################################ ##########Importar Bibliotecas de Python Requerido Importar Tiempo de importación de importación de importación DateTime Import de importación#Detalles de la base de datos MySQL a qué copia de seguridad se debe realizar. Asegúrese de que el usuario tenga suficientes privilegios para tomar una copia de seguridad de las bases de datos. # Para tomar varias bases de datos de copia de seguridad, cree cualquier archivo como /copia de seguridad /dbnames.txt y poner los nombres de bases de datos uno en cada línea y asignado a la variable db_name. Db_host = 'localhost' db_user = 'root' db_user_password = '_mysql_user_password_' #db_name = '/backup/dbnameslist.txt 'db_name =' db_name_to_backup 'backup_path ='/backup/dbbackup ' # Obtención de tiempo de fecha mayor actual para crear la carpeta de copia de seguridad separada como "20180817-123433". DateTime = Time.strftime ('%y%m%d-%h%m%s') TodaybackUppath = backup_path + '/' + datetime # verificación si la carpeta de copia de seguridad ya existe o no. Si no existe, lo creará. Prueba: OS.STAT (TodayBackUppath) excepto: OS.Código MKDIR (TodayBackUppath) # para verificar si desea tomar una copia de seguridad de la base de datos única o al aviso de varias copias de seguridad en DB_NAME. Imprimir ("Comprobación del archivo de nombres de bases de datos.") Si OS.camino.existes (db_name): file1 = open (db_name) multi = 1 print ("archivo de bases de datos encontrado ...") imprime ("copia de seguridad inicial de todos los DB enumerados en el archivo" + db_name) else: print ("archivo de bases de datos no encontrado ...") Imprimir ("Inicio de copia de seguridad de la base de datos" + DB_NAME) Multi = 0 # Inicio del proceso de copia de seguridad de la base de datos real. if multi: in_file = open (db_name, "r") flength = len (in_file.readLines ()) in_file.cerrar () p = 1 dbfile = open (db_name, "r") mientras p " + tuberías.CITA (TODAYBACKUPPATH) + "/" + DB + ".SQL "OS".Sistema (dumpcmd) gzipcmd = "gzip" + tuberías.CITA (TODAYBACKUPPATH) + "/" + DB + ".SQL "OS".Sistema (GZIPCMD) P = P + 1 DBFILE.Close () else: db = db_name dumpcmd = "mysqldump -h" + db_host + "-u" + db_user + "-p" + db_user_password + "" + db + ">" + tuberías.CITA (TODAYBACKUPPATH) + "/" + DB + ".SQL "OS".Sistema (dumpcmd) gzipcmd = "gzip" + tuberías.CITA (TODAYBACKUPPATH) + "/" + DB + ".SQL "OS".Sistema (GZIPCMD) print ("") print ("Script de copia de seguridad completado") Impresa ("Sus copias de seguridad se han creado en '" + TodayBackUppath + "' Directorio")
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#!/usr/bin/python ######################################## ################ Este script de Python se usa para MySQL Base de datos de copia de seguridad#usando MySqldump y Tar Utility.## Escrito por: Rahul Kumar# Sitio web: http: // tecadmin.Neta# Fecha creada: 03 de diciembre de 2013## Último modificado: 17 de agosto de 2018# Probado con: Python 2.7.15 y Python 3.5# Revisión de script: 1.4 ############################################# ##########Importar las bibliotecas de Python Importar Osimport TimeImport DateTimeImport Tipes#Detalles de la base de datos MySQL a qué copia de seguridad se debe hacer. Asegúrese de que el usuario tenga suficientes privilegios para tomar una copia de seguridad de las bases de datos.# Para tomar varias bases de datos de copia de seguridad, cree cualquier archivo como /copia de seguridad /dbnames.txt y poner los nombres de bases de datos uno en cada línea y asignado a la variable db_name. Db_host = 'localhost' db_user = 'root'db_user_password =' ​​_mysql_user_password _ '#db_name ='/backup/dbnameslist.txt'db_name = 'db_name_to_backup'backup_path ='/backup/dbbackup ' # Obtener la hora de fecha actual para crear la carpeta de respaldo separada como "20180817-123433".DateTime = Time.strftime ('%y%m%d-%h%m%s') TodaybackUppath = backup_path + '/' + datetime # verificación si la carpeta de copia de seguridad ya existe o no. Si no existe, lo creará.Prueba: OS.STAT (TodayBackUppath) excepto: OS.Código MKDIR (TodayBackUppath) # para verificar si desea tomar una copia de seguridad de la base de datos única o al aviso de varias copias de seguridad en DB_NAME.Imprimir ("Comprobación del archivo de nombres de bases de datos.") Si OS.camino.existes (db_name): file1 = open (db_name) multi = 1 print ("archivo de bases de datos encontrado ...") imprime ("copia de seguridad inicial de todos los DB enumerados en el archivo" + db_name) else: print ("archivo de bases de datos no encontrado ...") Imprimir ("Inicio de copia de seguridad de la base de datos" + DB_NAME) Multi = 0 # Inicio del proceso de copia de seguridad de la base de datos real.if multi: in_file = open (db_name, "r") flength = len (in_file.readLines ()) in_file.cerrar () p = 1 dbfile = open (db_name, "r") mientras p <= flength: db = dbfile.readline() # reading database name from file db = db[:-1] # deletes extra line dumpcmd = "mysqldump -h " + DB_HOST + " -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + tuberías.CITA (TODAYBACKUPPATH) + "/" + DB + ".SQL "OS".Sistema (dumpcmd) gzipcmd = "gzip" + tuberías.CITA (TODAYBACKUPPATH) + "/" + DB + ".SQL "OS".Sistema (GZIPCMD) P = P + 1 DBFILE.Close () else: db = db_name dumpcmd = "mysqldump -h" + db_host + "-u" + db_user + "-p" + db_user_password + "" + db + ">" + tuberías.CITA (TODAYBACKUPPATH) + "/" + DB + ".SQL "OS".Sistema (dumpcmd) gzipcmd = "gzip" + tuberías.CITA (TODAYBACKUPPATH) + "/" + DB + ".SQL "OS".Sistema (GZIPCMD) print ("") print ("Script de copia de seguridad completado") Impresa ("Sus copias de seguridad se han creado en '" + TodayBackUppath + "' Directorio")

Ejecutar script de python

Después de descargar el script, haga que el script se ejecute usando el siguiente comando

chmod +x dbbackup.py 

y ejecute este script como a continuación

python2 dbbackup.py 

También puede programar este script para ejecutar diariamente en un intervalo regular usando crontab. Agregue el comando a continuación en Crontab.

0 2 * * */usr/bin/python dbbackup.py 

Lea más sobre Crontab en 20 ejemplos útiles para programar trabajos.

Gracias! para usar este script. Si tiene alguna sugerencia para mi guión, no dude en enviarme un correo electrónico o hacer un comentario a continuación. Tus comentarios me ayudarán a mejorar.