Backup y mysql
Backup y mysql
Amigos, estoy queriendo guardar un backup en un servidor remoto mysql. Todo funciona salvo cuando quiero recuperar el backup, el registro me devuelve 310 bytes menos que el original, por supuesto cuando quiero restaurar me dice que el backup está corrupto. E intentado con un campo longblob y longtext sin ningún resultado. Alguna pista donde mirar? Muchas gracias!.
Saludos
Saludos
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Backup y mysql
Hola Horacio.
Cómo estás haciendo el Backup?
Y cómo estás haciendo el Restore?
Cómo estás haciendo el Backup?
Y cómo estás haciendo el Restore?
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Re: Backup y mysql
Horacio
Lo hago así:
Backup
Restore
Lo hago así:
Backup
Code: Select all | Expand
C:\Archivos de programas\MySqlMaDB\bin\MySqlDump -h localhost -u root -pclave base>D:\Sistemas\rrhh\data\bkrrhh.sql
Restore
Code: Select all | Expand
C:\Archivos de programas\MySqlMaDB\bin\mysql -u root -pclave base<D:\Sistemas\rrhh\data\bkrrhh.sql
Saludos,
Adhemar C.
Adhemar C.
Re: Backup y mysql
Estoy usando FwMariaDb para conectarme con Mysql, pongo código, se va a entender mejor lo que quiero hacer
Quiero guardar el backup en un campo de una base de datos. Cuando hago la lectura de ese campo no me devuelve la longitud correcta, faltan 310 bytes.
Code: Select all | Expand
cBackup := Memoread( "C:\backup\backup.sql" )
cUpdate := "Update empresa set backup '" + cBackup + "' where codigo = 1"
oCon : Execute( cUpdate )
Quiero guardar el backup en un campo de una base de datos. Cuando hago la lectura de ese campo no me devuelve la longitud correcta, faltan 310 bytes.
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Backup y mysql
Horario,
En principio en el update te falta el signo "="
De todos modos, no tiene por qué tener la misma cantidad de bytes el archivo que la cadena que se ve en el memoread.
Por otro lado, debes entender que en el query estarias grabando en el campo blob el contenido del archivo de texto .sql, (Ahora en el .sql puede haber un backup o un texto cualquiera)
No me parece que sea el mejor método para hacer un backup poner el backup en el campo de una tabla.
De todos modos, una forma más apropiada de insertar el archivo en el campo BLOB sería la siguiente.
En este ejemplo estaría insertando en el campo directamente el archivo, no el contenido del archivo.
Espero te sirvan los comentarios.
En principio en el update te falta el signo "="
Code: Select all | Expand
cUpdate := "Update empresa set backup = '" + cBackup + "' where codigo = 1"
De todos modos, no tiene por qué tener la misma cantidad de bytes el archivo que la cadena que se ve en el memoread.
Por otro lado, debes entender que en el query estarias grabando en el campo blob el contenido del archivo de texto .sql, (Ahora en el .sql puede haber un backup o un texto cualquiera)
No me parece que sea el mejor método para hacer un backup poner el backup en el campo de una tabla.
De todos modos, una forma más apropiada de insertar el archivo en el campo BLOB sería la siguiente.
Code: Select all | Expand
cFile :="C:/backup/backup.sql"
cUpdate :="UPDATE empresa SET backup=LOAD_FILE('"+cFile+"') WHERE codigo=1"
En este ejemplo estaría insertando en el campo directamente el archivo, no el contenido del archivo.
Espero te sirvan los comentarios.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Re: Backup y mysql
Hola Eduardo, gracias por tu respuesta, me olvide de poner el igual. Probaré tu solución. Con respecto al tamaño recuperado yo creo que si debería ser igual al backup original, de hecho es solo texto.
Saludos
Saludos
- Raymundo Islas M.
- Posts: 592
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Re: Backup y mysql
Hummm meter un respaldo en un campo ? Salvo que la DB tenga muuuuy poca info !
La opcion de Ademar funciona muy bien, solo que tarda una eternidad la restauracion si la DB es mediana a grande !
En mi caso, uso lo siguiente :
- Verifico y detengo el servicio
- Ejecuto este programita similar al winzip o winrar desde linea de comandos
El 7za.exe lo puedes encontrar sin problemas en google
Dependiendo de la pc, es posible que tengas que ejecutar como administrador.
Esto lo estoy usando desde hace años en DBs medianas ( 40 a 70 millones de registros ) sin ningun problemas hasta la fecha.
Espero les sirva.
Saludos
La opcion de Ademar funciona muy bien, solo que tarda una eternidad la restauracion si la DB es mediana a grande !
En mi caso, uso lo siguiente :
- Verifico y detengo el servicio
Code: Select all | Expand
static function VrfMySrvSts()
local oLoc, oWmi, oServiceList, oService, aSrvDts2Ret := {.f.,""}
oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
oWmi:= oLoc:ConnectServer()
if oWmi == nil
msginfo( "NO SE PUDO OBTENER INFO DEL MOTOR DE DATOS PARA GENERAR EL RESPALDO.","AVISO" )
return aSrvDts2Ret
endif
oServiceList := oWmi:ExecQuery( "select * from Win32_Service where Name='MySQL'" )
for each oService in oServiceList
if oService:State == "Stopped"
aSrvDts2Ret[1] := .t.
endif
if oService:State == "Running"
oService:StopService()
aSrvDts2Ret[1] := .t.
aSrvDts2Ret[2] := "MySQL"
endif
next
return aSrvDts2Ret
- Ejecuto este programita similar al winzip o winrar desde linea de comandos
Code: Select all | Expand
aBckUpDatDts[2] := "c:\Repaldos"
aBckUpDatDts[3] := "c:\CarpetaDeMySql"
cBckPFix := "NombreDeTuRespaldo" + " " // Ojo en el espacio final sirve para separar los parametros !!!
aSrvMyDts := VrfMySrvSts()
if aSrvMyDts[1]
WaitRun( "7za.exe a " + aBckUpDatDts[2] + "\rsbck_" + cBckPFix + aBckUpDatDts[1] + "\DATA -pTuPassword", 0 ) // -p Para comprimir con password
endif
- Arranco el servicio otra vez
WaitRun( "sc start " + aSrvMyDts[2], 0 )
if vrfSqlEngOn()
// Aqui nomalmente lo que hago es cerrar el programa y que vuelvan a entrar...
endif
endif
Code: Select all | Expand
static function vrfSqlEngOn()
local oLoc, oWmi, oServiceList, oService, lVal2Ret := .f.
oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
oWmi:= oLoc:ConnectServer
if oWmi == nil
DckMBox( 1, "NO FUE POSIBLE ARRANCAR EL MOTOR DE DATOS DESPUES DEL RESPALDO.",,,, )
return lVal2Ret
endif
oServiceList := oWmi:ExecQuery( "select * from Win32_Service where Name='MySQL'" )
for each oService in oServiceList
if oService:State == "Running"
lVal2Ret := .t.
endif
next
return lVal2Ret
El 7za.exe lo puedes encontrar sin problemas en google
Dependiendo de la pc, es posible que tengas que ejecutar como administrador.
Esto lo estoy usando desde hace años en DBs medianas ( 40 a 70 millones de registros ) sin ningun problemas hasta la fecha.
Espero les sirva.
Saludos
FWH 10.6 + xHarbour + Borland 582
Re: Backup y mysql
Amigos, finalmente desistí de guardar un backup en un campo de mysql. Opte por subir el backup directamente al servidor con pscp una utilidad de putty sumamente rápida y sencilla. Muchas gracias por sus respuestas.
Saludos
Saludos