Pagina 1 di 1

Perdita parziale di dati dal DB

Inviato: 16/03/2014, 23:45
da jesealex
Salve a tutti!
Ho un problema per quanto riguarda la perdita parziale dei dati del DB di un mio amico, in pratica lui aveva effettuato un backup tramite phpbb, che purtroppo a quanto pare non è andato a buon fine nella fase di creazione del file .sql, nonostante non si sia presententato alcun tipo di errore. Ha usato quel file per ripristinare i dati sul forum in seguito a un errore dovuto ad un aggiornamento che stava facendo ed
ora ci ritroviamo a dover "sistemare" il suo DB con quei pochi dati che sono rimasti salvi.. i problemi che riscontra, sono:

- Mancanza del primo post su alcuni topic
- Alcuni post andati persi (sopprattutto quelli più recenti)
- Pagine dei topics che non coincidono col numero di post rimasti per quel topic

Rovistando fra i suoi files, ho trovato altri file di backup sql, probabilmente creati anni fa dal vecchio Admin del forum..ora la mia idea è quella di usare tutti questi file di backup per salvare più post possibili, poichè diciamo tutte le altre tabelle sono salve..

Ho fatto delle prove e avevo pensato che per risolvere la questione di primi post, potevo creare una pagina in php, che mi ricreasse automaticamente il primo post, dove manca, mandando un messaggio di default per tutti, dove viene segnalato l'errore e si avvisa agli utenti che a causa di una perdita di dati, quel post non è più disponibile e quindi reinvitarli a riscriverlo...

con questo codice invece ho messo a confronto due database provati in locale .. in pratica ho preso l'ultimo backup e uno precedente che avevo trovato tra i suoi files confrontando le tabelle phpbb_posts e vedendo quanti post riuscirei a salvare:

Codice: Seleziona tutto


$db = @mysql_connect ("localhost","root","") or die("impossibile leggere db errore".mysql_error());
mysql_select_db ("post31112011",$db);

$result = mysql_query ("SELECT * FROM phpbb_posts",$db);

while($records = mysql_fetch_array($result))
{
               $array_posts_id[]=$records['post_id'];
}
#print_r($array_posts_id);

mysql_close ($db);

$dba = @mysql_connect ("localhost","root","") or die("impossibile leggere db errore".mysql_error());
mysql_select_db ("prova",$dba);
$post_trovati=0;
$post_non_trovati=0;
for($a=0;$a<count($array_posts_id);$a++)
{
               $query = mysql_query("SELECT * FROM phpbb_posts WHERE post_id = ".$array_posts_id[$a]);
               if(mysql_num_rows($query)>0)
               {
                   $post_trovati++;
               }
               else
               {
                   $post_non_trovati++;
               }
}
echo "Ho trovato ".$post_trovati." posts già presenti<br>";
echo "Ho trovato ".$post_non_trovati." posts non presenti";
per quanto riguarda invece le pagine che non coincidono col numero di post rimasti per quel topic, ho visto che bisognerebbe ricontare i post che hanno lo stesso topic_id nella tabella phpbb_posts e modificare con i nuovi valori nella tabella phpbb_topics le colonne topic_replies e topic_replies_real , anche se devo dire che non ho ben capito che differenza ci sia tra queste due colonne..

le idee per sistemare al meglio, credo di averle.. ora devo solo metterle in pratica... m'interesserebbe sapere se magari esiste qualche script che faccia già tutto quello di cui ho bisogno, ci farebbe sicuramente risparmiare parecchio tempo, in alternativa, avrei bisogno di altre idee... voi che dite??

Re: Perdita parziale di dati dal DB

Inviato: 17/03/2014, 9:48
da Barrnet
Non so quanto possa essere affidabile una soluzione del genere, considera che tu puoi al massimo curare i sintomi che noti ad occhio, ma nel profondo probabilmente del database rimarrà comunque danneggiato.
Anche a costo di usare un backup vecchio di giorni vi conviene chiedere all'hosting se hanno un backup, spesso anche se non è nel piano di hosting ne offrono comunque uno a livello settimanale di cortesia.
La differenza tra topic_Replies e topic_replies_real dovrebbe considerare, non ne sono sicuro, se ci sono post che sono stati spostati o cancellati.

Re: Perdita parziale di dati dal DB

Inviato: 29/03/2014, 20:53
da jesealex
abbiamo risolto caricando il file di backup più completo e ho creato uno script in php che mi ricrea i primi post mancanti.. dopo abbiamo fatto la risincronizzazione di topic e post.. ora il forum è di nuovo stabile.. abbiamo perso qualche topic e un po' di post, ma si può sopravvivere.. ;)

Re: Perdita parziale di dati dal DB

Inviato: 30/03/2014, 10:38
da Segnalo
Fai una verifica totale del forum per essere certo che non sia danneggiato

Re: Perdita parziale di dati dal DB

Inviato: 30/03/2014, 23:38
da jesealex
una verifica totale in che senso?? controllo topic per topic, oppure c'è un altro modo??