Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/03/2010, 08:21
Masane
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Problemas con backup de Mysql en archivo

Buenas amigos, tengo algunos problemillas que vengo a resolver.

Estoy intentando desarrollar un pequeño script que haga un backup de una base de datos en MySQL y hasta ahora sólo he conseguido extraer los metadatos de sus tablas y necesito poder extraer también los registros.

He leído por ahí una sentencia SQL para volcar cada tabla en un archivo, pero no me está dando resultado y quizás esta sentencia sea la forma más adecuada para mi script de guardar backups en archivos...

Os pongo el script que tengo hasta ahora:

Código PHP:
Ver original
  1. function createBackup()
  2.       {        
  3.         $key = "Tables_in_".$this->bdconfig["database"];
  4.         $query1 = "SHOW TABLES";
  5.        
  6.         $request = $this->connection->prepare($query1);
  7.        
  8.         $request->execute();
  9.      
  10.         while($tablenamelist = $request->fetch())
  11.         {          
  12.           $tablename = $tablenamelist[$key];
  13.          
  14.           $backupFile = $this->outputPath.$tablename;
  15.          
  16.           //echo $backupFile."<br />";
  17.          
  18.           @unlink($backupFile);
  19.              
  20.           $query2 = "SELECT * INTO OUTFILE '".$backupFile.".sql' FROM ".$tablename;
  21.          
  22.           $request2 = $this->connection->prepare($query2);
  23.          
  24.           $request2->execute();
  25.          
  26.           $request2->closeCursor();
  27.         }
  28.        
  29.         $request->closeCursor();        
  30.       }


Esta función pertenece a una clase que gestiona los accesos a la base de datos, de ahí los "$this->". El problema de este código es que al ejecutarlo me salta el siguiente error:

Código:
SQLSTATE[HY000]: General error: 1 Can't create/write to file '/web/htdocs/static/backups/tablaX.sql' (Errcode: 2)
La ruta está correcta y las carpetas "static" y "backups" tienen permisos 777. ¿Puede influir el hecho de que la base de datos a la que accedo está en otro servidor y no pertenece a la misma red del servidor en el que se está ejecutando el script? Hablando con el hosting me permitieron el acceso desde un servidor a otro, pero aún así no sé si con eso podré hacer el backup desde un servidor externo.

También conozco el script para generar un backup usando "mysqldump", pero preferiría hacerlo todo usando sentencias SQL en vez de hacer llamadas al sistema.

¿Alguien sabría orientarme?

Muchas gracias por ayudarme.


Un saludo.