O.T.: ¿Se puede respaladar solo una serie de tablas de MySQL?

81 views
Skip to first unread message

Alejandro Garcia G.

unread,
Feb 17, 2018, 9:43:29 AM2/17/18
to Comunidad de Visual Foxpro en Español
Saludos a todos. Se me esta presetando un problema en una empresa en donde ciertas tablas crecen mucho y otras no. Cuando intentamos restaurar una copia a veces puede durar mucho tiempo en hacerse, hasta se "revienta" por decirlo de alguna manera. Pense en hacer una serie de respaldos por separado teniendo en cuenta que mis tablas manejan un prefijo, por ejemplo: car_ para cartera, con_ para contabilidad, nom_ para nomina y así.

He buscado en la internet algo para hacer lo que deseo y encontre esta instrucción pero esta para GNU/Linux, ¿alguno me puede guiar/ayudar para cuando es Windows?.

La base de datos es MySQL.

Instrucción:
mysql -h SERVIDOR -u USUARIO -pPASSWORD base_de_datos  -e 'show tables like "spip_%"' | grep -v Tables_in | xargs mysqldump -h SERVIDOR -u USUARIO -pPASSWORD base_de_datos > backup.sql


Un millón de gracias.

Juan Pablo Iparraguirre Iparraguirre

unread,
Feb 26, 2018, 10:19:21 AM2/26/18
to Comunidad de Visual Foxpro en Español
Hola, Alejandro:
Si aun es oportuno la solucion tiene dos opciones:
La primera opcion es por la linea de comandos "CMD", que tendrias que hacerlo en dos partes:
La Primera, te creara un archivo txt con el listado de las tablas:

mysql -h tuHost -u tuUsarioRoot -pContraseña virgendb --execute="show tables like 'prefijo_%'" > tablas.txt

Luego:
for /F "skip=1" %k in (tablas.txt) DO mysqldump -h tuHost -u tuUsuarioRoot -pTuContraseña --add-drop-table --create-options virgendb %k > "%k.sql"

Lo que dará como resultado un archivo por tabla.

y por ultimo:


delete tablas.txt


Para que elimines el txt con el nombre de las tablas para evitar confusiones.

La segunda opcion es crear un archivo .BAT y guardarlo para hacer las cosas mas rápidas, con el siguiente contenido.


@echo off

mysql -h tuHost -u tuUsarioRoot -pContraseña virgendb --execute="show tables like 'prefijo_%'" > tablas.txt

for /F "skip=1" %%k in (tablas.txt) DO mysqldump -h tuHost -u tuUsuarioRoot -pTuContraseña --add-drop-table --create-options virgendb %k > "%%k.sql"

del tablas.txt


Bueno eso seria todo, espero que te sea útil y oportuna la informacion, cualquier consulta me avisas.

Saludos a todos.

Juan Pablo Iparraguirre I.
CONSULTOR T.I.
Cajabamba - Perú





ZeRoberto

unread,
Feb 26, 2018, 12:32:55 PM2/26/18
to publicesvfoxpro
Cuantas base de datos tienes en ese servidor? todos son del mismo sistema?

Saludos

Alejandro Garcia G.

unread,
Feb 26, 2018, 1:35:29 PM2/26/18
to Comunidad de Visual Foxpro en Español
Juan mil gracias por tu respuesta, muy completa para lo que deseaba.

La voy a analizar y ver como la puedo implementar.

Gracias nuevamente.

Alejandro Garcia G.

unread,
Feb 26, 2018, 1:41:46 PM2/26/18
to Comunidad de Visual Foxpro en Español
ZeRoberto: Si, tengo varias bases de datos que pertenecen al mismo sistema, pero lo que deseaba era hacer una copia de las mas "liviana" y otra con las mas pesadas que son mas o menos 7 tablas.


Juan Pablo Iparraguirre Iparraguirre

unread,
Feb 26, 2018, 3:18:28 PM2/26/18
to Comunidad de Visual Foxpro en Español

Una actualizacion de lo expuesto anteriormente, como que me puse a revisar por ahi y se ha logrado esto:

mysql -h tuHost -u tuUsuarioRoot -pTuContraseña nombre_bd --execute="show tables like 'tbl_%'" > tablas.txt & for /F "skip=1" %k in (tablas.txt) DO (mysqldump -h tuHost -u tuUsuarioRoot -pTuContraseña --add-drop-table --create-options nombre_bd %k > "%k.sql" &  type "%k.sql" >> archivo_backup.sql & del "%k.sql")
  
con el "&" se concatenan las ordenes, es el equivalente a los pipes "|" de Linux / Unix .

Saludos.

Juan Pablo Iparraguirre I.
CONSULTOR T.I.
Cajabamba - Perú


Reply all
Reply to author
Forward
0 new messages