MySql Dump & Cronjobs

Salve a tutti,

vi ringrazio per gli aiuti e per questo favoloso forum che mi sta aiutando giorno dopo giorno. Mi son trovato nella difficile situazione di un database cancellato erroneamente e vorrei riparare creando un cronjob che mi invii una email contenente il dump dei miei databases compressi ed in utf8. E' possibile!? conoscete qualche classe o qualche pezzetto di codice che mi può aiutare?!

Grazie

Ulisse

inviato 10 anni fa
ulisse
X 0 X

Ci sono diversi modi per farlo. Innanzitutto ti consiglio la classe MySQL_Dump che trovi qui:

http://www.phpsoft.it/downloads.php

Io comunque uso un approccio diverso: attraverso uno script PHP richiamo lo script mysqldump fornito con MySQL. Ecco la parte essenziale:

<?php
// Metto in 'date' la data corrente
$date = date("Y-m-d_H-i-s");

$nome_file= $prefisso . '_' . $date;

# effetto il backup
shell_exec("mysqldump --quick --single-transaction --user=$db_user --password=$db_pass $db_dbname  > $nome_file.sql");

# comprimo il dump generato
@shell_exec("tar cfz $nome_file.tar.gz $nome_file.sql");

# cancello il dump noncompresso
unlink("$nome_file.sql");
?>

Ovviamente alcune variabili non sono definite nello script.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

vorrei fare solamente l'esportazione di struttura e dati del db chiamato "esempio" come devo fare con la classe MySQL_Dump!?!? Rispetta la codifica utf8?!?

grazie

ulisse

risposto 10 anni fa
ulisse
X 0 X

Quella classe non l'ho fatta io, per i dettagli ti conviene domandare sul forum dell'autore.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie mille

risposto 10 anni fa
ulisse
X 0 X

Comunque ti consiglio di impiegare mysqldump, sia per la sue capacità e configurabilità, sia perché è costantemente aggiornata dai realizzatori di MySQL.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni, ho provato lo script shell_exec che mi hai fatto avere ma mi risponde questo messaggio:

Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in /mounted-storage/home15b/sub002/sc17452-SGNF/www/cronjobs/dump.php on line 10

Warning: unlink(data.sql): No such file or directory in /mounted-storage/home15b/sub002/sc17452-SGNF/www/cronjobs/dump.php on line 16

risposto 10 anni fa
ulisse
X 0 X

Se hai PHP configurato in Safe Mode c'è poco da fare  :dunno:

sei in hosting?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Sil il sito web è in safe mode. Ma cosa comporterebbe se disabilitassi il safe mode?! Sono in hosting.

Grazie mille

Ulisse  :bye:

risposto 10 anni fa
ulisse
X 0 X

il Safe mode è una modalità di funzionamento di PHP che inibisce l'utilizzo di alcune funzioni potenzialmente pericolose.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Quindi non ho speranza?! Mi consigli di disabilitare la funzionalità!?

Grazie

Ulisse  :bye:

risposto 10 anni fa
ulisse
X 0 X

Qui trovi un po' di informazioni sul safe mode:

http://it.php.net/features.safe-mode

se vuoi lasciare ablitato il safe mode potresti indicare con la direttiva safe_mode_exec_dir  del php.ini una cartella contenete i programmi abilitati all'esecuzione

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie mille Gianni!

 :bye:

risposto 10 anni fa
ulisse
X 0 X

Bene Sono all'opera da circa 1 ora sulla stessa riga che non vuole funzionare. Dopo aver impostato tutte le variabili, non trovo come impostare l'host:

shell_exec("mysqldump --quick --single-transaction --user=$db_user --password=$db_pass $db_dbname  > $nome_file.sql");

ho provato anche questa:

shell_exec("mysqldump -h host.com -u **** -p ****** DATABASE ¦ gzip > /www/cronjobs/".$nome_file.".txt.gz");

In cosa sbaglio??

Grazie a tutti

 :bye:

risposto 10 anni fa
ulisse
X 0 X

ma il database non gira sulla stessa macchina in cui c'è lo script mysqldump? In tal caso l'host è localhost che se non sbaglio si sottointende.

Inoltre, se non ricordo male, quando si dichiarano i parametri di mysql con le lettere -u, -p, ecc. non bisogna inserire spazi:

mysqldump -hhost.com -uciccio -psegreto

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Non so se il db gira nella stessa macchina. ho provato anche con localhost...ma niente da fare.  :bye:

risposto 10 anni fa
ulisse
X 0 X

ricevi degli errori?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Nessun errore!

 :tichedoff:

risposto 10 anni fa
ulisse
X 0 X

modifica [tt]shell_exec(...[/tt] con [tt]echo shell_exec(...[/tt] e riporta i messaggi che ti vengono restituiti

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Bhe! Ho fatto proprio echo.... e non da alcun messaggio di errore.  :'(

risposto 10 anni fa
ulisse
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda