Cómo extraer la copia de seguridad de tablas de un archivo de volcado MySQL completo

Cómo extraer la copia de seguridad de tablas de un archivo de volcado MySQL completo

Mysqldump es una utilidad proporcionada por mysql/mariadb para hacer una copia de seguridad de bases de datos y tablas. En general, tomamos un volcado completo de la base de datos regularmente y lo mantenemos. Pero algunas veces debemos recuperar una sola o 2-3 tablas de la copia de seguridad. Entonces la pregunta si cómo restaurar una tabla específica desde el archivo de copia de seguridad completo. Este artículo lo ayudará a extraer copias de seguridad de tablas del archivo de copia de seguridad de la base de datos completa. Además, podemos extraer todas las tablas de copia de seguridad en archivos individuales por tabla.

Paso 1 - Descargar script dividido de volcado mysql

Para dividir un archivo de copia de seguridad de la base de datos mysqldump mysqldump en una copia de seguridad de archivos específicos de tabla separados. Crea un archivo llamado SplitDB.mierda y copiar a continuación script en él.

#!/bin/bash #### # divide el archivo sql de volcado mysql en un archivo por tabla # basado en http: // blog.tty.NL/2011/12/28/Splitting-A-Database-Dump #### if [$#-lt 1]; luego echo "Uso $ 0 dump_file [tabla]" Salir fi si [$# -GE 2]; luego csplit -s -ftable $ 1 "/-estructura de tabla para la tabla/" "%-estructura de tabla para la tabla '$ 2'%" "/-estructura de tabla para la tabla/" "%40103 set Time_zone =@old_time_zone%1 "Else csplit -s -ftable $ 1"/ -estructura de tabla para tabla/"* fi [$? -eq 0] || Salir MV TABLE00 FEARD FILE = "LS -1 TABLA* | Tail -n 1" if [$# -GE 2]; entonces mv $ file foot else csplit -b '%d' -s -f $ file $ file "/40103 set time_zone =@old_time_zone/" * mv $ file 1 pie fi para archivo en 'ls -1 tabla *'; do name = "head -n1 $ file | Cut -d $" x60 '-f2' Cat Head $ File Foot> "$ Nombre.SQL "Tabla de pie de cabeza RM RM*
123456789101112131415161718192021222324252627282930313233343536#!/bin/bash ##### divide el archivo sql de volcado mysql en un archivo por tabla#basado en http: // blog.tty.NL/2011/12/28/Splitting-A-Database-Dump #### if [$#-lt 1]; luego echo "Uso $ 0 dump_file [tabla]" Exitfi si [$# -GE 2]; luego CSplit -s -ftable $ 1 "/-estructura de tabla para la tabla/" "%-Estructura de la tabla para la tabla '$ 2'%" "/-Estructura de la tabla para la tabla/" "%40103 Establecer [correo electrónico protegido] _time_zone% 1 "Else csplit -s -ftable $ 1"/ -estructura de tabla para tabla/"* fi [$? -eq 0] || Salir MV TABLE00 FEARD FILE = 'LS -1 TABLA* | cola -n 1'if [$# -GE 2]; Entonces MV $ FILE FOTELSE CSPLIT -B '%D' -S -F $ FILE $ FILE "/40103 SET [Correo electrónico protegido] _time_zone/" * mv $ file 1 Footfi para archivo en 'ls -1 tabla* '; do name = 'head -n1 $ archivo | CUT -D $ 'X60' -F2 'CABE CABE $ FIETO> "$ Nombre.SQL "Tabla de pie de cabeza RM RM*

Este script tomado de https: // gist.github.com/jasny/1608062.

Paso 2 - Extraiga todas las tablas del volcado

Para este ejemplo tengo un archivo de volcado nombrado mydb.sql, que quiero dividir en pequeñas copias de seguridad por mesa. Para esto he creado un nuevo directorio /opt/splitdb y copiado arriba script con nombre SplitDB.mierda En este directorio. Ahora use el siguiente comando para extraer todas las tablas en archivos de copia de seguridad individuales.

CD /Opt /SplitDB Chmod +X SplitDB.mierda ./SplitDB.sh mydb.SQL #do no se ejecuta con el comando 'sh'  

Paso 3 - Extraer tabla única del volcado

Si queremos extraer solo una tabla, podemos usar el comando como a continuación. Por ejemplo, quiero dividir solo la tabla llamada my_tbl1 y my_tbl2. extraerá la copia de seguridad en el directorio actual con el nombre my_tbl1.sql y my_tbl2.sql.

CD /Opt /SplitDB Chmod +X SplitDB.sh sh splitdb.sh mydb.sql my_tbl1 sh splitdb.sh mydb.sql my_tbl2