BACKUP/RESTORE DATABASE MYSQL CON TDOLPHIN

BACKUP/RESTORE DATABASE MYSQL CON TDOLPHIN

Postby joseluisysturiz » Sat Aug 23, 2014 8:20 pm

Saludos, estoy usando xHarbour, alguien ha hecho respaldo y restauracion de las database mysql con la clase TDolphin.? ...logre hacer el backup, luego probe restaurarlo con navicat y no me trajo las tablas, parece que el .SQL no es compatible, estoy probando restaurar con la misma TDolphin, mis tablas son InnoDb, las ayudas, sugerencias, recomendaciones y opciones son bienvenidas.

Que sugieren mejor usar para respaldo/restaurar tablas InnoDb.?...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: BACKUP/RESTORE DATABASE MYSQL CON TDOLPHIN

Postby Willi Quintana » Sat Aug 23, 2014 8:31 pm

Hola...
Yo uso estas sentencias para el backup y el restore,,,,( el detalle esta en que no guarda las estructuras,,, pero es mucho mas rápido que mysqldump)...
pero,,, solo backupeas y las restauras desde tu aplicación,,,,

SELECT * INTO OUTFILE //copias/productos FROM tabprod ORDER BY código // copia la data de la tabla tabprod a un archivo plano productos

LOAD DATA INFILE //copias/productos INTO TABLE tabprod // llena la tabla tabprod desde el archivo plano productos..



Salu2
User avatar
Willi Quintana
 
Posts: 1002
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: BACKUP/RESTORE DATABASE MYSQL CON TDOLPHIN

Postby joseluisysturiz » Sat Aug 23, 2014 8:42 pm

Willi, esa opcion la estoy probando, pero como dices, solo guarda la data y no la estructura de la tabla, intente usar mysqldump en un excute() y aun no me funciona bien, creo me falta un parametro, estoy leyendo sobre su uso, lei que algunas funciones de respaldo de MySql solo funcionan en tablas MyISam, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: BACKUP/RESTORE DATABASE MYSQL CON TDOLPHIN

Postby Willi Quintana » Sun Aug 24, 2014 1:42 am

Hola,,,
Un detalle, esas funciones que te indique, solo funcionan en el server... no en las estaciones de trabajo,,, esto es valido por un tema de seguridad,,, así que desde cualquier estación no se puede sacar backups.... ya suena mas seguro..
User avatar
Willi Quintana
 
Posts: 1002
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: BACKUP/RESTORE DATABASE MYSQL CON TDOLPHIN

Postby joseluisysturiz » Sun Aug 24, 2014 2:06 am

Ya lo pille Willi, pero el detalles es que solo respalda la data y no la estructura de las tablas, pude hacer respaldo y estauracion con TDolphin, pero tengo una tabla con 700 registros, para respaldarla todo bien, pero cuando intento restaurarla no lo hace en esa tabla, probe borrando todas las tablas y crea la de los 700 registros, pero nunca trae la data, lanza un error de tdolhpin y si no borro la tabla, entonces se queda colgado el sistema y nunca trae data, si quito esa tabla o hago el respaldo con tablas con pocos registros todo trabaja bien, mis tablas son InnoDb y uso xHarbour, espero algun otra sugerencia o experiencia de otros colegas de saber como hacen sus respaldo de database de mysql, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: BACKUP/RESTORE DATABASE MYSQL CON TDOLPHIN

Postby Willi Quintana » Sun Aug 24, 2014 3:26 am

Hola...
Hago backups con una 60m tablas y algunas de ellas con 500,000 registros,,, con los comandos que te mencione,,, y además los zipe con password... asi nadie (o casi nadie) las puede ver... echale un ojo a este código
Code: Select all  Expand view

# include "fivewin.ch"                  // 0x4L |
# include "btnget.ch"
# include "eagle1.ch"
# include "Splitter.ch"
# include "report.ch"
static oWnd, oDlg                   // objeto ventana principal
STATIC oAppW, oTray, oIcon
//---------------------------------------------------------------------------------------------------
Function Main()
local cTitle, lOk, iLogo, _msn_n
local oCursor, oSalir, lSalir, oConec, oEscon
local cHost, cUser, cPass, cDbNa, cDDes
local oHost, oUser, oPass, oDbNa, oDDes
local oMySQL, oDataBase, oTimba
local oDias, aDias, oHora, cHora, oTray, oMenu, oIcon1, lUno, aFile, cFile
local eConec, lYa, oBoton

IF ISEXERUNNING( CFILENAME( HB_ARGV( 0 ) ) )    // evita el doble arranque
  RETURN NIL
ENDIF

ServiceProcess(1)

oDias := ARRAY(7)
aDias := ARRAY(7)
aFile := {}
AFill(aDias, .f.)
lSalir := .t.
lYa    := .t.
cHora  := SPACE(5)
cHost := SPACE(40)
cPass := "contraseña"       // contraseña de la base de datos
cDbNa := SPACE(40)
cDDes := SPACE(75)
cFile := "SVBACKUP.CFG"
If File(cFile)
  aFile := LeerTxt(cFile)
  cHost := aFile[1]
  cUser := aFile[2]
  cDbNa := aFile[3]
  aDias[1] := IF(aFile[4] = "1", .t.,.f.)
  aDias[2] := IF(aFile[5] = "1", .t.,.f.)
  aDias[3] := IF(aFile[6] = "1", .t.,.f.)
  aDias[4] := IF(aFile[7] = "1", .t.,.f.)
  aDias[5] := IF(aFile[8] = "1", .t.,.f.)
  aDias[6] := IF(aFile[9] = "1", .t.,.f.)
  aDias[7] := IF(aFile[10] = "1", .t.,.f.)
  cHora := aFile[11]
EndIF
eConec := {||CConectar(oMySQL, oDataBase, cHost, cUser, cPass, cDbNa, aDias, cHora, oTimBa, oBoton) }

DEFINE ICON oIcon RESOURCE "ABACKUP"
DEFINE ICON oIcon1 RESOURCE "ABACKUP2"
DEFINE CURSOR oCursor HAND
DEFINE DIALOG oAppW RESOURCE "ABACKUP2" ICON oIcon TITLE "SVBACKUP V1-0"
       REDEFINE BTNGET oHost ;
                VAR    cHost ;
                ID 110 OF oAppW
       REDEFINE BTNGET oUser ;
                VAR    cUser ;
                ID 111 OF oAppW
       REDEFINE BTNGET oDbNa ;
                VAR    cDbNa ;
                ID 113 OF oAppW
       REDEFINE BTNGET oDDes ;
                VAR    cDDes ;
                ID 114 OF oAppW
       REDEFINE CHECKBOX oDias[1] ;
                VAR      aDias[1] ;
                ID 101 OF oAppW
       REDEFINE CHECKBOX oDias[2] ;
                VAR      aDias[2] ;
                ID 102 OF oAppW
       REDEFINE CHECKBOX oDias[3] ;
                VAR      aDias[3] ;
                ID 103 OF oAppW
       REDEFINE CHECKBOX oDias[4] ;
                VAR      aDias[4] ;
                ID 104 OF oAppW
       REDEFINE CHECKBOX oDias[5] ;
                VAR      aDias[5] ;
                ID 105 OF oAppW
       REDEFINE CHECKBOX oDias[6] ;
                VAR      aDias[6] ;
                ID 106 OF oAppW
       REDEFINE CHECKBOX oDias[7] ;
                VAR      aDias[7] ;
                ID 107 OF oAppW
       REDEFINE BTNGET oHora ;
                VAR    cHora ;
                VALID OkHora(cHora) ;
                PICTURE "99:99" ;
                ID 115 OF oAppW
       REDEFINE BUTTON oEscon ;
                ACTION oAppW:Hide() ;
                PROMPT "&Esconder" ;
                ID 121 OF oAppW
       REDEFINE BUTTON oConec ;
                ACTION CConectar(oMySQL, oDataBase, cHost, cUser, cPass, cDbNa, aDias, cHora, oTimBa, oBoton) ;
                PROMPT "&Conectar" ;
                ID 122 OF oAppW
       REDEFINE BUTTON oSalir ;
                ACTION (If(MsgNoYes("Cerrar la Aplicación?","Confirme"),(lSalir := .t.,  oAppW:End()), ) ) ;
                PROMPT "&Salir" ;
                ID 123 OF oAppW

       REDEFINE BITMAP oBoton ;
                RESOURCE "BVERDE" TRANSPARENT ;
                ID 120 OF oAppW



aEval(oAppW:aControls,{|oC|iif(oC:ClassName()="TBUTTON",oC:oCursor:=oCursor,)})
ACTIVATE DIALOG oAppW CENTER ;    //
         ON INIT (oTray := TTrayIcon():New(oAppW,oIcon,"SVBACKUP",{||oAppW:Show()},{|nRow,nCol|MenuTray(nRow,nCol,oTray)}), ;
                  oTimBa:=ATimer(oAppW, oTimBa, eConec) ) ;
         ON PAINT (If(lYa, (oAppW:Hide(), lYa:=.f.), Nil) ) ;
         ON RIGHT CLICK oTray:SetIcon( oIcon1, "Another" ) ;
         VALID (lSalir) // oTray:End() ;
SysRefresh()
Return(Nil)

//------------------------------------------------------------------------------------------------------
Function ATimer(oAppW, oTimBa, eConec)
DEFINE TIMER oTimBA OF oAppW INTERVAL 60000 ACTION EVAL (eConec)
ACTIVATE TIMER oTimBa
oAppW:Hide()
oAppW:Minimize()
Return(oTimBa)

//---------------------------------------------------------------------------------------------------------
FUNCTION MenuTray( nRow, nCol, oTray )
LOCAL oMenu
   MENU oMenu POPUP
      MENUITEM "Mostrar" ACTION oAppW:Show(), oAppW:SetFocus()
//      MENUITEM "Esconder" ACTION oAppW:Hide()
   ENDMENU
   ACTIVATE POPUP oMenu AT nRow, nCol OF oTray:oWnd
RETURN NIL

//----------------------------------------------------------------------------------------------------
Function CConectar(oMySQL, oDataBase, cHost, cUser, cPass, cDbNa, aDias, cHora, oTimBa, oBoton)
local oWndBack, oBack, cBack, fBack, lOk, cTime, cSufijo, cRuta, aTablas, nLen, nCont, cRZip, cLinea, aFiles
local oApp, oMeter1, oMeter2, nPer1, nPer2, lNo
local oAcepta, oCursor, lProcede, oSay, cFilZip, oFont1
local cDiskExe, oHand, cFile, qDia, qHora, qMinu, nSec1, nSec2

oBoton:SETBMP("BVERDE")

If EMPTY(cHost) .OR. EMPTY(cUser) .OR. EMPTY(cDbNa)
  Return(.f.)
EndIF

cFile := "SVBACKUP.CFG"
cLinea := cHost + CHR(13) + CHR(10) + ;
             cUser + CHR(13) + CHR(10) + ;
             cDbNa + CHR(13) + CHR(10) + ;
             If(aDias[1],"1","0") + CHR(13) + CHR(10) + ;
             If(aDias[2],"1","0") + CHR(13) + CHR(10) + ;
             If(aDias[3],"1","0") + CHR(13) + CHR(10) + ;
             If(aDias[4],"1","0") + CHR(13) + CHR(10) + ;
             If(aDias[5],"1","0") + CHR(13) + CHR(10) + ;
             If(aDias[6],"1","0") + CHR(13) + CHR(10) + ;
             If(aDias[7],"1","0") + CHR(13) + CHR(10) + ;
             cHora + CHR(13) + CHR(10)

oHand := FCreate( cFile )
FWRITE(oHand, cLinea)
FCLose(oHand)
lOK   := .f.
qDia  := DOW(DATE())   // se en ordinal de la semana de la fecha del sistema.
qHora := TIME()        // se toma la hora del sistema

If aDias[qDia]
  lOk := .t.
EndIf

If !lOK
  Return(lOk)
EndIf

nSec1 := ( VAL(SUBSTR(qHora,1,2)) * 3600 ) + (VAL(SUBSTR(qHora,4,2)) * 60 )
nSec2 := ( VAL(SUBSTR(cHora,1,2)) * 3600 ) + (VAL(SUBSTR(cHora,4,2)) * 60 )

If nSec1 < nSec2
  Return(.f.)
EndIf

cDiskExe := CURDRIVE() + ":"
cRuta    := cRZip := "BACKUP_SVITE"
lMKDir("\" + cRuta)     // almacena archivos de la tabla
cRuta    := cDiskExe + "
/" + cRuta + "/"
cRZip    := cDiskExe + "
\" + cRZip + "\"
cFilZip  := cDbNa + cRZip

If FILE(ALLTRIM(cRZip) + ALLTRIM(cDbNa) +  "
.ZIP")
  Return(.f.)
EndIF

cHost := ALLTRIM(cHost)
cUser := ALLTRIM(cUser)
cDbNa := ALLTRIm(cDbNa)
WHILE .t.
  oMySql := TMSConnect():New()
  If oMySql:Connect( cHost, cUser, cPass )
     EXIT
    Else
     Return(.f.)
  EndIF
ENDDO
Sonido("
reminder.wav")
If !oMySQL:ExistDb( cDbNa )      // si no existe la base de datos,,,
  Return( .f. )
EndIf
//--------creamos el objeto contenedor de la base de datos
USE DATABASE oDataBase NAME cDbNa OF oMySQL
If !oDataBase:Used()        //
 Return( .f. )
Endif
lOK     := .f.
lNo     := .f.
nPer1   := nPer2 := 0
aTablas := oDataBase:ListTables()
nLen := LEN(aTablas)
IF nLen = 0
  Return(lOk)
EndIF
cFilZip := "
"

oAppW:Show()
oTimBa:DeActivate()
oBoton:SETBMP("
BROJO")
oBoton:Refresh()

lOK := ZipTablas(oMySQL, oDataBase, cRuta, cRZip, aTablas, @cFilZip, cPass, cDbNa)

oTimBa:Activate()
oBoton:SETBMP("
BVERDE")
oBoton:Refresh()
oAppW:Hide()

Return(lOk)

//---------------------------------------------------------------------------------------------------
Function ZipTablas(oMySQL, oDataBase, cRuta, cRZip, aTablas, cFilZip, cPass, cDbNa )
local nCont, nLen, aFiles, lOK, cTime, cSufijo, fBack, cBack, nRow
CURSORWAIT()
aFiles  := {}
lOK     := .f.
nRow    := 1
cPass   := ALLTRIM(cPass)
cTime   := TIME()
cSufijo := DTOS(Date()) //+ SUBSTR(cTime,1,2) + SUBSTR(cTime,4,2) + SUBSTR(cTime,7,2)
nLen    := LEN(aTablas)
cFilZip := cRZip + cDbNa + cSufijo + "
.ZIP"

If FILE(cFilZip)
  Return(.f.)
EndIf

FOR nCont := 1 TO nLen
   Tone(1000,1)
   fBack   := cSufijo + ALLTRIM(aTablas[nCont])
   cBack := "
SELECT * INTO OUTFILE '" + cRuta + fBack + "' FROM " + ALLTRIM(aTablas[nCont])
   lOk := oDatabase:ExecSQL( cBack )
   If !lOK
     EXIT
   ENDIF
   AaDd(aFiles, cRZip + AllTrim( fBack ) )
   Tone(500,1)
NEXT nCont
If !lOk
  Return(lOk)
EndIF
lOk := HB_ZipFile( cFilZip, aFiles, 9,,.T., cPass, .F., .F. )
FOR nCont := 1 TO nLen
  FERASE(aFiles[nCont])
NEXT nCont
Sonido("
reminder.wav")
Return(lOk)

//---------------------------------------------------------------------------------------------------
Function Sonido(cWav)
local cWav1
cWav1 := cWav
cWav  := GetWinDir()+ "
\Media\" + cWav + ".WAV"
If File(cWav)
  SndPlaySound(cWav)
 Else
  cWav1 := "
SND\" + cWav1
  If File(cWav1)
     SndPlaySound(cWav1)
    Else
     Tone(1000,1)
  EndIf
EndIf
Return(Nil)

//---------------------------------------------------------------------------------------------------
Function LeerTxt(cFile,nModo)
local oFile,cLinea := "
", aLinea := {}
DEFAULT cFile := "
"
DEFAULT nModo := 0
If Empty(cFile) .OR. !File(cFile)
  Return({})
EndIf
oFile := TTxtFile():New( cFile )
Do while !oFile:lEof()
  AaDd(aLinea,oFile:cLine)
  oFile:Skip()
EndDo
oFile:End()
Return(aLinea)

//--------------------------------------------------------------------------------------------------
Function OkHora(cHora)
local lOK
lOk := .f.
If VAL(SUBSTR(cHora,1,2)) >= 0 .AND. VAL(SUBSTR(cHora,1,2)) <=23
  lOk := .t.
Endif
If VAL(SUBSTR(cHora,3,2)) >= 0 .AND. VAL(SUBSTR(cHora,3,2)) <=59
  lOk := .t.
 Else
  lOk := .f.
EndIf
Return(lOk)

//---------------------------------------------------------------------------------------------------
Function ServiceProcess( mode )
//------------------------------
Local nProcessId := 0
Default mode := 0
nProcessId := GCP( )
If Abs( nProcessId ) > 0
    RSProcess( nProcessId, mode )
Endif
RETURN Nil

//----------------------------------------------------
DLL32 FUNCTION RSProcess(npID  AS LONG ,;
                         nMode AS LONG ) AS LONG ;
      FROM "
RegisterServiceProcess" LIB "kernel32.DLL"
//----------------------------------------------------
DLL32 FUNCTION GCP() AS LONG;
      FROM "
GetCurrentProcessId" LIB "kernel32.dll"

User avatar
Willi Quintana
 
Posts: 1002
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: BACKUP/RESTORE DATABASE MYSQL CON TDOLPHIN

Postby Francisco Horta » Mon Aug 25, 2014 9:41 pm

Jose Luis,

yo hago el mysqldump por medio de un .bat

cFile := "backup.bat"
lEsc := .f.

FErase( cFile )

if ! FILE( cFile )

nHand := FCreate( cFile )
FWrite(nHand, cComando )
FClose(nHand)

// Respaldo Antes de la Auditoria, Nombre del DUMP
cFileBackup := 'respaldo_' + DTOS(Date()) + '_' + Time() + '.sql'

cComando := ""
cComando += 'mysqldump -h' + oApp:cConexion + ' -u' + oApp:cUser + ' -p' + oApp:cPassword + ' ' + oApp:cDatabase + ' > .\backup\'
cComando += cFileBackup + CRLF

hCambios := FOpen( cFile, FO_READWRITE + FO_SHARED )
FSeek( hCambios, 0, FS_END)
FWrite( hCambios, cComando )
FClose(nHand)

endif

*------------- Proceso de Generacion del DUMP de la base de datos
lEsc := .F.

cText := ""

DEFINE BRUSH oBrush FILE oApp:cDirBmps + "grad.jpg"

DEFINE DIALOG oDls RESOURCE "DLG_AVISO2" TITLE "Mi Respaldo ..." FONT ::oFont[2] BRUSH oBrush TRANSPARENT

REDEFINE SAY oSay PROMPT cText ID 100 OF oDls ;
COLORS CLR_WHITE

oDls:bStart := { || WaitRun( cFile, 0 ),;
lEsc := .T.,;
oDls:End() }

ACTIVATE DIALOG oDls CENTERED ;
VALID lEsc

oBrush:End()


Espero te sirva a mi me va bien y si puedo recuperar el .sql

Saludos
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 74 guests