• Domingo 28 de Abril de 2024, 07:19

Autor Tema:  Re: mysqldump backup base datos MySQL  (Leído 3789 veces)

Diana Serna

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://www.german-shoes-online.com
Re: mysqldump backup base datos MySQL
« en: Jueves 7 de Agosto de 2003, 18:47 »
0
holas!!!
tengo un problema con una base de datos que esta en un hosting, quiero hacer un backup de la base de datos, pero no se como funciona la instruccion mysqldump para hacer backup, el problema es que no tengo acceso a la base de datos con phpmyadmin,  unicamente atravez de scripts, quisiera hacer un script en php que me permita sacar el backup de la estructura y los datos de mi base de datos..

Si alguien puede ayudarme mil gracias
Diana

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
mysqldump backup base datos MySQL
« Respuesta #1 en: Viernes 8 de Agosto de 2003, 00:15 »
0
Hola Diana:) Hace un tiempo encontré un script que te puede servir. Una vez hecho el backup puedes elegir que te haga una copia en la cuenta de FTP que le indiques y/o que te lo mande por correo.

 
Código: Text
  1. <?php
  2.  
  3. //*** BEGIN variables ***//
  4.  
  5. // Mysql Database Information:
  6. $database = 'dbname'; // name of the database.
  7. $username = 'user'; // username with access to database.
  8. $password = 'pass'; // password for username.
  9.  
  10. // Database Backup Filename & Location
  11. $backupto = '/path/to/file'; // absolute path to folder containing database - no trailing slash.
  12. $backupas = $database . '.sql.' . date ( "mdY" ) . '.gz';
  13.  
  14. // E-mail Information:
  15. $mailname = 'from address'; // who the mail is from.
  16. $mailfrom = ''; // reply address (not needed)
  17. $mailto = 'your address'; // email address to send the database to.
  18. $subject = 'email subject'; // subject of email.
  19. $message = 'Here's the latest backup!'; // message body.
  20.  
  21. // FTP Information
  22. $ftpserver = 'remote.ftp.server'; // Remote FTP hostname
  23. $ftppath = 'path/to/files'; // RELATIVE PATH from your ftp home directory (with trailing slash)
  24. $ftpuser = 'username'; // FTP Username
  25. $ftppassword = 'password'; // FTP Password
  26.  
  27. // Options:
  28. $send_email = '1'; // 1 = send backup copy via e-mail. 0 = just backup data, don't e-mail.
  29. $send_ftp = '0'; // 1 = send backup copy via ftp. 0 = just backup data, don't ftp.
  30. $delete_local = '1'; // 1 = delete local copy when done. 0 = leave local copy when done.
  31.  
  32. //*** END of variables. ***//
  33.  
  34. //*** Do Not Edit Beyond This Point ***//
  35.  
  36.  
  37. // Call Functions
  38. backupdb();
  39. if ($send_email) {makeandsend();}
  40. if ($send_ftp) {ftpcopy();}
  41. if ($delete_local) {removedb();}
  42.  
  43.  
  44.  
  45. // Functions
  46.  
  47. function backupdb() {
  48. global $username,$password,$database,$backupto,$backupas;
  49. $backupcommand = "mysqldump -u$username -p$password $database | gzip >$backupto/$backupas";
  50. passthru ("$backupcommand", $error);
  51. if($error) { echo ("Problem: $errorn"); exit;}
  52. }
  53.  
  54. function removedb() {
  55. global $backupto,$backupas;
  56. if(!unlink("$backupto/$backupas")) { echo ("Cannot Remove $backupto/$backupas"); exit;}
  57. }
  58.  
  59. function makeandsend() {
  60. global $backupto,$backupas,$message,$mailto,$subject,$mailname,$mailfrom;
  61. $mail_boundary = '--=nextpart_' . md5(uniqid(time()));
  62. $mail_head = "From: $mailnamernReply-to: $mailfromrn";
  63. $mail_head .= "MIME-Version: 1.0rn";
  64. $mail_head .= "Content-type: multipart/mixed; boundary="$mail_boundary"";
  65. $mail_head .= "rnrn";
  66. $mail_head .= "This is a multi-part message in MIME format.";
  67. $mail_head .= "rnrn";
  68.  
  69. $db_file = "$backupto/$backupas";
  70. $fp = fopen($db_file, "r");
  71. $file = fread($fp, filesize($db_file));
  72. $file = chunk_split(base64_encode($file));
  73.  
  74. $mail_body = "--$mail_boundaryrn";
  75. $mail_body .= "Content-type: text/plain; charset=us-asciirn";
  76. $mail_body .= "Content-transfer-encoding: 8bitrnrn";
  77. $mail_body .= " $messagern";
  78. $mail_body .= "--$mail_boundaryrn";
  79.  
  80. $filename = basename($db_file);
  81.  
  82. $mail_body .= "Content-type: application/octet-stream; name="$filename"rn";
  83. $mail_body .= "Content-transfer-encoding:base64rn";
  84. $mail_body .= "Content-Disposition: attachment; filename="$filename"rnrn";
  85. $mail_body .= $file. "rnrn";
  86. $mail_body .= "--$mail_boundary--";
  87.  
  88. mail($mailto, $subject, $mail_body, $mail_head);
  89. }
  90.  
  91. function ftpcopy () {
  92. global $ftpserver,$ftppath,$ftpuser,$ftppassword,$backupas;
  93. $fp = 0;
  94. $fp = ftp_connect($ftpserver);
  95. $login = ftp_login ($fp, $ftpuser, $ftppassword);
  96. ftp_chdir($fp, $ftppath);
  97. ftp_put($fp, $backupas, $backupas, FTP_BINARY);
  98. ftp_quit($fp);
  99. }
  100. ?>
  101.  


Otra forma de hacerlo, si tienes acceso al servidor a través de SSH o bien puedes utilizar Cron jobs (procesos programados) sería utilizar el comando mysqldump:

mysqldump -h[host] -u[usuario] -p[password] [basededatos] > [nombredearchivo]

por ejemplo:

 
Código: Text
  1. mysqldump -hlocalhost -ubd_admin -p21745 bd_tienda > backup_tienda.sql
  2.  


Espero que te sirva.

Salu2,
Avalon