Sebbene tu possa eseguire comandi di backup da PHP, in realtà non hanno nulla a che fare con PHP. Riguarda MySQL.
Suggerirei di utilizzare l'utilità mysqldump per eseguire il backup del database. La documentazione può essere trovata qui:http://dev.mysql. com/doc/refman/5.1/en/mysqldump.html .
L'utilizzo di base di mysqldump è
mysqldump -u user_name -p name-of-database >file_to_write_to.sql
Puoi quindi ripristinare il backup con un comando come
mysql -u user_name -p <file_to_read_from.sql
Hai accesso a cron? Suggerirei di creare uno script PHP che esegua mysqldump come cron job. Sarebbe qualcosa come
<?php
$filename='database_backup_'.date('G_a_m_d_y').'.sql';
$result=exec('mysqldump database_name --password=your_pass --user=root --single-transaction >/var/backups/'.$filename,$output);
if(empty($output)){/* no output is good */}
else {/* we have something to log the output here*/}
Se mysqldump non è disponibile, l'articolo descrive un altro metodo, utilizzando il SELECT INTO OUTFILE
e LOAD DATA INFILE
comandi. L'unica connessione a PHP è che stai usando PHP per connetterti al database ed eseguire i comandi SQL. Puoi anche farlo dal programma MySQL da riga di comando, dal monitor MySQL.
È piuttosto semplice, stai scrivendo un file SQL con un comando e lo carichi/esegui quando è il momento di ripristinare.
Puoi trovare i documenti per selezionare nell'outfile qui (cerca nella pagina outfile). LOAD DATA INFILE è essenzialmente il contrario di questo. Vedi qui per i documenti.