Respaldo de base de datos mariadb desde fivewin

Respaldo de base de datos mariadb desde fivewin

Postby JoseAlvarez » Mon Sep 27, 2021 2:57 am

Saludos a todos amigos.

Uso FW17.01 mariaDB localmente, tdolphin y xHarbour.

Habra alguna manera de que pueda colocar una opcion "Respaldo" en el menu de mi aplicacion fivewin y que me pase la BD completa a formato .sql, y luego a .zip o cualquier otra herramienta de compresión con clave si es posible?

De alli lo enviaria a un correo o una carpeta en mi servidor web.

Espero que no sea mucho pedir.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: Respaldo de base de datos mariadb desde fivewin

Postby leandro » Mon Sep 27, 2021 1:37 pm

Amigo buenos días como estas?

Lo que no se, es si sea compatible con fw 17.01.

Code: Select all  Expand view  RUN

*********************************
//REALIZA LA COPIA DE SEGURIDAD
*********************************
Function copiaseguridad()
local oCn
Local cRutaSql := ".\copias\"
Local cNombSql :=   alltrim(oLamcla:vGnit) + "
_" + DTOS(DATE()) + "_" + SUBSTR(TIME(),1,2) +;
                    SUBSTR(TIME(),4,2) + SUBSTR(TIME(),7,2) + "
.Sql"
Local cRutFina := cRutaSql+cNombSql
Local documento := {=>}
Local cbCopia := <||
       
        //ACTUALIZAMOS LA FECHA DE LA ULTIMA COPIA EN LA BASE DE DATOS
        oSlq:= TCad():New(oLamcla:tEmpr,oCnEmp)
        oSlq:Campos("
e_ultima_copia",dtos(date()))
        oSlq:Condicion("
e_codi",oLamcla:vGcod,"")
        oSlq:Actualiza()
        oSlq:=nil   
       
        //LEEMOS EL ARCHIVO PLANO PARA ENVIARLO AL SERVIDOR
        cText := MemoRead( cRutFina )

        //ENVIAMOS LA COPIA DE SEGURIDAD AL SERVIDOR
        tercero := alltrim(oLamcla:vGnit)
        pass := "
ClavedelWS"   //TEMPORAL
        cBas64 := hb_base64encode(tercero+"
:"+pass,len(tercero+":"+pass))

        //DATOS PARA REGISTRO EN LA BASE DE DATOS
        documento["
tercero"] := tercero
        documento["
nombre_sql"] := cNombSql
        documento["
sql"] := cText
        documento["
sucursal"] := oLamcla:nEmpSucu
        enviar := hb_jsonEncode( documento )

        ohttp := CreateObject( "
MSXML2.XMLHTTP" )
        ohttp:Open( "
POST" ,"http://tuhosting/tuwebservice",.F.)   
        oHttp:SetRequestHeader("cache-control", "no-cache")
        ohttp:SetRequestHeader("content-type", "application/json" )
        ohttp:SetRequestHeader("authorization", "Basic "+cBas64 )
        TRY
          ohttp:Send( enviar )
        CATCH
            msginfo("No Se Pudo Enviar Archivo ","Intente Nuevamente")
            return .t.
        END
        response:=ohttp:responseText

        aHasRes := hash()
        hb_jsondecode(response ,@aHasRes)

        if aHasRes["copia_confirma"]
       
            //ACTUALIZAMOS LA FECHA DE LA ULTIMA COPIA EN LA BASE DE DATOS
            oSlq:= TCad():New(oLamcla:tEmpr,oCnEmp)
            oSlq:Campos("e_ultima_nube",dtos(date()))
            oSlq:Condicion("e_codi",oLamcla:vGcod,"")
            oSlq:Actualiza()
            oSlq:=nil          
       
            MsgInfo("Proceso Completado Correctamente - Archivo Guardado "+cRutFina,"Confirma")
        else
            MsgInfo("Proceso NO pudo ser completado ","Error Datos")
        endif

    >

oCn := maria_Connect( alltrim(oLamcla:cHost),alltrim(oLamcla:cEmpDBda),alltrim(oLamcla:cUsuario),;
                    alltrim(oLamcla:cPassword) )
if oCn == nil
    msginfo(    "No se pudo comprobar la conexión con la base de datos"+CRLF+;
            "Por favor revise la ip en la configuración de la conexión","Error Conexión")
else
    MYSQL_CRYPTKEY( alltrim(oLamcla:cPassword) )
    oCn:BackUp( nil , cRutFina )
    MYSQL_CRYPTKEY( nil )
    oCn:close()
   
    MsgRun("Procesando Información...","Creando Archivo",{||CursorWait(),WaitRun(eval(cbCopia), 0 )})
   
endif
Return nil
 
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Respaldo de base de datos mariadb desde fivewin

Postby JoseAlvarez » Mon Sep 27, 2021 2:27 pm

leandro wrote:Amigo buenos días como estas?

Lo que no se, es si sea compatible con fw 17.01.

Code: Select all  Expand view  RUN

*********************************
//REALIZA LA COPIA DE SEGURIDAD
*********************************
Function copiaseguridad()
local oCn
Local cRutaSql := ".\copias\"
Local cNombSql :=   alltrim(oLamcla:vGnit) + "
_" + DTOS(DATE()) + "_" + SUBSTR(TIME(),1,2) +;
                    SUBSTR(TIME(),4,2) + SUBSTR(TIME(),7,2) + "
.Sql"
Local cRutFina := cRutaSql+cNombSql
Local documento := {=>}
Local cbCopia := <||
       
        //ACTUALIZAMOS LA FECHA DE LA ULTIMA COPIA EN LA BASE DE DATOS
        oSlq:= TCad():New(oLamcla:tEmpr,oCnEmp)
        oSlq:Campos("
e_ultima_copia",dtos(date()))
        oSlq:Condicion("
e_codi",oLamcla:vGcod,"")
        oSlq:Actualiza()
        oSlq:=nil   
       
        //LEEMOS EL ARCHIVO PLANO PARA ENVIARLO AL SERVIDOR
        cText := MemoRead( cRutFina )

        //ENVIAMOS LA COPIA DE SEGURIDAD AL SERVIDOR
        tercero := alltrim(oLamcla:vGnit)
        pass := "
ClavedelWS"   //TEMPORAL
        cBas64 := hb_base64encode(tercero+"
:"+pass,len(tercero+":"+pass))

        //DATOS PARA REGISTRO EN LA BASE DE DATOS
        documento["
tercero"] := tercero
        documento["
nombre_sql"] := cNombSql
        documento["
sql"] := cText
        documento["
sucursal"] := oLamcla:nEmpSucu
        enviar := hb_jsonEncode( documento )

        ohttp := CreateObject( "
MSXML2.XMLHTTP" )
        ohttp:Open( "
POST" ,"http://tuhosting/tuwebservice",.F.)   
        oHttp:SetRequestHeader("cache-control", "no-cache")
        ohttp:SetRequestHeader("content-type", "application/json" )
        ohttp:SetRequestHeader("authorization", "Basic "+cBas64 )
        TRY
          ohttp:Send( enviar )
        CATCH
            msginfo("No Se Pudo Enviar Archivo ","Intente Nuevamente")
            return .t.
        END
        response:=ohttp:responseText

        aHasRes := hash()
        hb_jsondecode(response ,@aHasRes)

        if aHasRes["copia_confirma"]
       
            //ACTUALIZAMOS LA FECHA DE LA ULTIMA COPIA EN LA BASE DE DATOS
            oSlq:= TCad():New(oLamcla:tEmpr,oCnEmp)
            oSlq:Campos("e_ultima_nube",dtos(date()))
            oSlq:Condicion("e_codi",oLamcla:vGcod,"")
            oSlq:Actualiza()
            oSlq:=nil          
       
            MsgInfo("Proceso Completado Correctamente - Archivo Guardado "+cRutFina,"Confirma")
        else
            MsgInfo("Proceso NO pudo ser completado ","Error Datos")
        endif

    >

oCn := maria_Connect( alltrim(oLamcla:cHost),alltrim(oLamcla:cEmpDBda),alltrim(oLamcla:cUsuario),;
                    alltrim(oLamcla:cPassword) )
if oCn == nil
    msginfo(    "No se pudo comprobar la conexión con la base de datos"+CRLF+;
            "Por favor revise la ip en la configuración de la conexión","Error Conexión")
else
    MYSQL_CRYPTKEY( alltrim(oLamcla:cPassword) )
    oCn:BackUp( nil , cRutFina )
    MYSQL_CRYPTKEY( nil )
    oCn:close()
   
    MsgRun("Procesando Información...","Creando Archivo",{||CursorWait(),WaitRun(eval(cbCopia), 0 )})
   
endif
Return nil
 


Leandro muchos saludos. Buenos dias.

Muchas gracias , voy a probar tu codigo y te comento.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: Respaldo de base de datos mariadb desde fivewin

Postby JoseAlvarez » Fri Oct 01, 2021 8:44 pm

Leandro, saludos

Estuve detallando tu codigo, pero de verdad que no tengo los conocimientos para entenderlo ya que no soy nada bueno usando objetos. aparte de que me estarian faltando algunas funciones y una clase que esta alli.

Me senté con calma a hacerlo y logre un PRG con el FW basico + dos comandos MSDOS + la herramienta MYSQLDUMP.

Hice un modulo que ejecuta el respaldo en formato .SQL, lo comprime en .ZIP y lo envia a un correo GMAIL. (puede ser cualquier otro)

Por ahora me funciona my bien, solo con la limitante que si el tamaño del archivo .ZIP llegara a sobrepasar los 25mb de capacidad de adjunto que soporta gmail, el usuario debe sacarlo el mismo a un medio externo de almacenamiento.

Pienso hacer la funcion de que cuando esto suceda, el mismo programa lo detecte y lo suba al servidor. pero como por ahora con esto me basta, hare lo de la subida mas adelante.

El codigo de esta funcion que hice esta disponible para quien pueda estar interesado, y si pueden mejorarlo pues, se agradece hacerlo y compartirlo. Como les comente, no soy programador experto.


Acá les dejo un video para que puedan ver como funciona.

http://www.datanet.space/fw/backup.mp4

Gracias nuevamente a ti y a todos los amigos del foro, siempre prestos a ayudar.
jalvarez@neurosistema.online
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: Respaldo de base de datos mariadb desde fivewin

Postby horacio » Sat Apr 02, 2022 10:23 pm

Hola José, estoy haciendo una herramienta para crear backups en sql, utilizo para ello mysqldump. Funciona bien pero me gustaría que no salga la pantalla msdos cuando se ejecuta, Veo en tu video que lo resolviste. Que función utilizas para ejecura mysqldump en modo silencioso?. Desde ya muchas gracias

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Respaldo de base de datos mariadb desde fivewin

Postby nageswaragunupudi » Sun Apr 03, 2022 4:08 am

FWH native SQL BackUp and Restore are one of the best backup facilities available, even compared to sqldump or hidisql, etc.

Simple to use:
Code: Select all  Expand view  RUN

oCn:BackUp( [aTables], [cfile/folder], [bProgress],... )
oCn:Restore( cBackupFile )
 


Most simple to use and at the same time, highly feature rich and efficient.
Compatible with 1701.
We recommend you to save your time and effort and use one of the best backup/restore utility you already have in our own library.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Respaldo de base de datos mariadb desde fivewin

Postby Armando » Sun Apr 03, 2022 5:13 pm

Mr. Rao:

Excelent !, do you have a small sample?, to know all parms.

Regards
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Respaldo de base de datos mariadb desde fivewin

Postby JoseAlvarez » Sun Apr 03, 2022 10:06 pm

nageswaragunupudi wrote:FWH native SQL BackUp and Restore are one of the best backup facilities available, even compared to sqldump or hidisql, etc.

Simple to use:
Code: Select all  Expand view  RUN

oCn:BackUp( [aTables], [cfile/folder], [bProgress],... )
oCn:Restore( cBackupFile )
 


Most simple to use and at the same time, highly feature rich and efficient.
Compatible with 1701.
We recommend you to save your time and effort and use one of the best backup/restore utility you already have in our own library.


Mr. Rao Excuse me, I had not read your post. I'm going to try and I will comment to you back.

Thanks a lot
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: Respaldo de base de datos mariadb desde fivewin

Postby JoseAlvarez » Sun Apr 03, 2022 10:24 pm

horacio wrote:Hola José, estoy haciendo una herramienta para crear backups en sql, utilizo para ello mysqldump. Funciona bien pero me gustaría que no salga la pantalla msdos cuando se ejecuta, Veo en tu video que lo resolviste. Que función utilizas para ejecura mysqldump en modo silencioso?. Desde ya muchas gracias

Saludos


Hola horacio, disculpa que no habia visto tu post.

Si aun te interesa, puedes enviarme un correo a jalvarez neurosistema.online y te envio la funcion. luego la adaptas a tu uso.

Tambien es bueno que veas el aporte de mr rao. se ve mucho mas simple
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: Respaldo de base de datos mariadb desde fivewin

Postby nageswaragunupudi » Mon Apr 04, 2022 1:59 am

Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Respaldo de base de datos mariadb desde fivewin

Postby horacio » Mon Apr 04, 2022 12:20 pm

Hola José y Rao, el problema de las funciones para backups nativas de fivewin es que muchas veces se genera el backup
pero está corrupto. Por eso quiero usar mysqldump. Gracias.

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Respaldo de base de datos mariadb desde fivewin

Postby nageswaragunupudi » Mon Apr 04, 2022 12:27 pm

This is one simple code used by a small user:
Code: Select all  Expand view  RUN
  DEFINE BUTTON OF oBar PROMPT "BackUp"  ACTION ( ;
         CursorWait(), ;
         MsgInfo( cn():BackUp( nil, "g:\vp_act\mybackup\" ) + " Created" ) )


The user clicks the button everyday when leaving.
What does this simple code
Code: Select all  Expand view  RUN
cn():BackUp( nil, "g:\vp_act\mybackup\" )

do?

First parameter is nil. That means the entire "database" currenly selected is backedup. This back up includes all tables, views and all objects like stored procedures, functions, triggers, etc.

Second parameter "g:\vp_act\mybackup\" is a folder name. Not a file name. In this case, the backup file "<databasename>.sql" is created in a subfolder with the name of the week.
Eg:
"g:\vp_act\mybackup\SUNDAY\databasename.sql"
"g:\vp_act\mybackup\MONDAY\databasename.sql"
"g:\vp_act\mybackup\TUESDAY\databasename.sql"
....
"g:\vp_act\mybackup\SATURDAY\databasename.sql"

In addition, he mapped "G:" drive to his GoogleDrive.

So at any point of time, he has seven days backups on his google drive.
He has his main database on a cloud server.

Even if all his office computers are damaged, he is safe.
He still has data on a cloud server. Even if that goes, he still has seven days backups on Google Cloud..

Backup() method has many features. This is one way one user has used.

Encryption:
It is extremely easy to encrypt our backups, compared with any 3rd party utility.
Code: Select all  Expand view  RUN

MYSQL_ENCRYPTKEY( <yourkey> )
oCn:BackUp( ... )
MYSQL_ENCRYPTKEY( nil )

Now, even if our backups fall into the hands of any third party, there is no worry.

Dolphin/TMySql/ADO:
It does not matter whether your main application uses Dolphin, TMySql or ADO.
FW native libs easily coexists with them.
Code: Select all  Expand view  RUN
oFwCon := maria_Connect( oDolphinSever )
// OR
oFwCon := maria_Connect( oTMySqlCon )
// OR
oFwCon := maria_Connect( oAdoConn )

oFwCon:BackUp( ... )
oFwCon:Close()
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Respaldo de base de datos mariadb desde fivewin

Postby nageswaragunupudi » Mon Apr 04, 2022 12:27 pm

This is one simple code used by a small user:
Code: Select all  Expand view  RUN
  DEFINE BUTTON OF oBar PROMPT "BackUp"  ACTION ( ;
         CursorWait(), ;
         MsgInfo( cn():BackUp( nil, "g:\vp_act\mybackup\" ) + " Created" ) )


The user clicks the button everyday when leaving.
What does this simple code
Code: Select all  Expand view  RUN
cn():BackUp( nil, "g:\vp_act\mybackup\" )

do?

First parameter is nil. That means the entire "database" currenly selected is backedup. This back up includes all tables, views and all objects like stored procedures, functions, triggers, etc.

Second parameter "g:\vp_act\mybackup\" is a folder name. Not a file name. In this case, the backup file "<databasename>.sql" is created in a subfolder with the name of the week.
Eg:
"g:\vp_act\mybackup\SUNDAY\databasename.sql"
"g:\vp_act\mybackup\MONDAY\databasename.sql"
"g:\vp_act\mybackup\TUESDAY\databasename.sql"
....
"g:\vp_act\mybackup\SATURDAY\databasename.sql"

In addition, he mapped "G:" drive to his GoogleDrive.

So at any point of time, he has seven days backups on his google drive.
He has his main database on a cloud server.

Even if all his office computers are damaged, he is safe.
He still has data on a cloud server. Even if that goes, he still has seven days backups on Google Cloud..

Backup() method has many features. This is one way one user has used.

Encryption:
It is extremely easy to encrypt our backups, compared with any 3rd party utility.
Code: Select all  Expand view  RUN

MYSQL_ENCRYPTKEY( <yourkey> )
oCn:BackUp( ... )
MYSQL_ENCRYPTKEY( nil )

Now, even if our backups fall into the hands of any third party, there is no worry.

Dolphin/TMySql/ADO:
It does not matter whether your main application uses Dolphin, TMySql or ADO.
FW native libs easily coexists with them.
Code: Select all  Expand view  RUN
oFwCon := maria_Connect( oDolphinSever )
// OR
oFwCon := maria_Connect( oTMySqlCon )
// OR
oFwCon := maria_Connect( oAdoConn )

oFwCon:BackUp( ... )
oFwCon:Close()
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Respaldo de base de datos mariadb desde fivewin

Postby nageswaragunupudi » Mon Apr 04, 2022 12:29 pm

horacio wrote:Hola José y Rao, el problema de las funciones para backups nativas de fivewin es que muchas veces se genera el backup
pero está corrupto. Por eso quiero usar mysqldump. Gracias.

Saludos

I know many users using native backup/restore.
Anyway I will contact all such users and get back.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India


Return to FiveWin para Harbour/xHarbour

Who is online

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