Backup y mysql

Backup y mysql

Postby horacio » Tue Sep 14, 2021 1:28 pm

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

Re: Backup y mysql

Postby jrestojeda » Tue Sep 14, 2021 5:28 pm

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

Re: Backup y mysql

Postby acuellar » Tue Sep 14, 2021 8:09 pm

Horacio

Lo hago así:
Backup
Code: Select all  Expand view

C:\Archivos de programas\MySqlMaDB\bin\MySqlDump -h localhost -u root -pclave base>D:\Sistemas\rrhh\data\bkrrhh.sql
 


Restore
Code: Select all  Expand view

C:\Archivos de programas\MySqlMaDB\bin\mysql -u root -pclave base<D:\Sistemas\rrhh\data\bkrrhh.sql
 
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Backup y mysql

Postby horacio » Tue Sep 14, 2021 11:53 pm

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

Code: Select all  Expand view

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

Re: Backup y mysql

Postby jrestojeda » Wed Sep 15, 2021 2:14 am

Horario,
En principio en el update te falta el signo "="

Code: Select all  Expand view
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 view

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

Re: Backup y mysql

Postby horacio » Thu Sep 16, 2021 12:48 pm

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

Re: Backup y mysql

Postby Raymundo Islas M. » Fri Sep 17, 2021 12:29 am

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 view

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 view

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 view

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

Re: Backup y mysql

Postby horacio » Tue Sep 21, 2021 2:43 pm

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 76 guests