Backup y mysql

Post Reply
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Backup y mysql

Post by horacio »

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
User avatar
jrestojeda
Posts: 601
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: Backup y mysql

Post by jrestojeda »

Hola Horacio.
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
User avatar
acuellar
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Backup y mysql

Post by acuellar »

Horacio

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.
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Backup y mysql

Post by horacio »

Estoy usando FwMariaDb para conectarme con Mysql, pongo código, se va a entender mejor lo que quiero hacer

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.
User avatar
jrestojeda
Posts: 601
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: Backup y mysql

Post by jrestojeda »

Horario,
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
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Backup y mysql

Post by horacio »

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
User avatar
Raymundo Islas M.
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: Backup y mysql

Post by Raymundo Islas M. »

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

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
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Backup y mysql

Post by horacio »

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
Post Reply