domingo, 7 de abril de 2013

Restaurar InnoDB con TDolphin.



Estoy usando TDolphin de Daniel , http://tdolphin.blogspot.com.es/ y estoy realizando el soporte de copia de seguridad.

He encontrado un problema a la hora de hacer la restauración de la copia, y es debido a al uso del motor InnoDB, y las claves foráneas.

El problema es que no puedes crear, por ejemplo, la tabla albaran cuando depende esta de la tabla cliente.

La solución es bastante simple;


function Restore_backup( )
  Local oErr
  Local cFile := ChooseFile( "Selecciona fichero backup" )

  try 
     oServer:Execute( "SET FOREIGN_KEY_CHECKS = 0;" )
     oServer:Restore( cFile )
     oServer:Execute( "SET FOREIGN_KEY_CHECKS = 1;" )
     Msginfo( "Restauracion completada" )
  catch oErr
       MsgStop( oErr:Description )
  end
return nil
  

Lo que hacemos es desconectar el chequeo de la clave foránea, restaurar la BD y después, volvemos a activarlo.

Otra problema con el que tuve que liar fue con los permisos necesarios para el usuario en cuestión pudiese hacer la copia de seguridad y posterior restauración en MySql.

Tan simple como ejecutar estas lineas en el cliente de Mysql, solo cambia el usuario backup y el de la BD , basededatos, por el tuyo;




mysql> grant select on basededatos.* to ‘backup’@'localhost’ with grant option;
mysql> grant lock tables on basededatos.* to backup@localhost;
mysql> grant reload on *.* to backup@localhost;