Visualizzazione risultati 1 fino 2 di 2

Discussione: Guida al backup di database di grosse dimensioni

  1. #1
    scaistar non è connesso Neofita
    Data registrazione
    12-12-2003
    Messaggi
    29

    Predefinito Guida al backup di database di grosse dimensioni

    Se l'amministratore gradisce può metterla in rilievo.

    DISCLAIMER: E' inutile ricordarvi che se combinate guai o danni al vostro database non sognatevi nemmeno di prendervela con il sottoscritto. Fate sempre una copia di riserva dei vostri dati prima di procedere.
    (una copia di riserva prima di fare un backup!?!?!? )

    Iniziamo.

    - Entrate nel pannello di Controllo di www.altervista.org con i vostri dati USER e PASSWORD
    - Nel menù in alto cliccate su TOOLS



    - Scendete in basso e cliccate sul logo PHPMYADMIN



    - Si aprirà un nuovo pannello di LOGIN. Usate di nuovo gli stessi USER e PASSWORD e premete OK per entrare in phpMyAdmin



    - Cliccate sul nome del database in alto a sinistra (in genere identificato su Altervista con my_vostronickname) per aprire l'indice delle tabelle.



    Identificate eventuali tabelle di grandi dimensioni.



    Nel mio caso il database pesa 45.6 MB ed ho scelto di spezzarlo in 3 parti. Ho programmato quindi di esportare in 3 passaggi:
    - tutte le tabelle del database (escluse le due qui di seguito).
    - la tabella "phpbb_posts_text" che è quella che contiene migliaia di messaggi del Forum phpBB2 = 12 Mbyte
    - la tabella "phpbb_search_wordmatch" che contiene i dati per effettuare le ricerche all'interno del Forum (una sorta di glossario) = 23.3 Mbyte

    Cliccate sul pulsante in alto "ESPORTA".



    Purtroppo phpmyadmin non memorizza la selezione, quindi se avete selezionato spontaneamente le tabelle nella pagina precedente avete perso tempo.
    Vi tocca selezionare nel nuovo elenco le tabelle da esportare.



    Potete trascinare il mouse per selezionarle tutte (oppure cliccare su SELEZIONA TUTTO) e usare il tasto CTRL (CONTROL) per deselezionare eventuali tabelle indesiderate (nel nostro caso le 2 che abbiamo scelto di esportare a parte).
    Abilitate il flag accanto a "AGGIUNGI DROP TABLE". In basso cliccate su "COMPRESSO CON ZIP" e poi infine su ESEGUI per avviare l'esportazione.



    Dopo alcuni secondi verrà visualizzata la finestra "Salva con nome" che vi permetterà di salvare le tabelle in un file ZIP compresso. Salvatelo in un luogo sicuro!
    Nel mio caso, con una ADSL 640 e circa 20 Mb di database, il salvataggio con ZIP ha richiesto circa 2 minuti.
    Al termine del salvataggio, onde evitare spiacevoli sorprese, è buona norma controllare che l'archivio ZIP non sia corrotto. Apritelo e con il blocco note di Windows aprite il file SQL in esso contenuto. Alla fine del file dovreste vedere un messaggio di questo tipo



    (che infatti riassume il salvataggio dell'ultima tabella della lista).
    Se invece il file termina in modo strano, provate a ripetere il salvataggio e magari a selezionare meno tabelle, e quindi a snellire l'esportazione.

    Ritorniamo in PhpMyAdmin e sotto la lista delle tabelle clicchiamo su "DESELEZIONA TUTTO".
    Selezioniamo l'altra tabella "phpbb_posts_text" che avevamo programmato e cliccate su ESEGUI (le impostazioni dovrebbero ancora essere memorizzate dal salvataggio precedente.
    ATTENZIONE!: Quando si aprirà la finestra "Salva con nome" abbiate cura di rinominare il file da salvare (magari aggiungendo un 2 alla fine del nome) e di non sovrascrivere quello precedentemente salvato!).

  2. #2
    scaistar non è connesso Neofita
    Data registrazione
    12-12-2003
    Messaggi
    29

    Predefinito

    E ora arriva il bello (o meglio il brutto). Infatti basterebbe ripetere la stessa l'operazione anche per la terza tabella "phpbb_search_wordmatch", ma se l'avete notato in precedenza tale tabella pesa ben 23.3 Mbyte e cioè uguale a circa la metà dell'intero database. Provando a esportarla il server va in timeout con il risultato di un file ZIP illegibile e corrotto.

    L'unica soluzione e salvare la tabella in più parti!

    Cliccate sul nome della tabella "phpbb_search_wordmatch" dall'elenco a sinistra



    e poi su ESPORTA dal menù in alto.

    La schermata sembra simile a quella vista in precedenza ma non lo è.
    Selezioniamo di nuovo "AGGIUNGI DROP TABLE" e poi osserviamo il totale di righe della tabella (nel nostro caso 1.100.933 !!!).



    Potremmo spezzare la tabella in 2 parti, ad esempio la prima di mezzo milione e poi la restante seconda un pò più grande).
    Scriviamo allora nel primo campo "500000" , selezioniamo "compresso con zip" e poi su ESEGUI.



    In questo modo salveremo solo le prime 500000 righe (su 1.100.933) della nostra tabella
    Salvate il file ZIP insieme agli altri 2 ZIP creati in precedenza.

    Clicchiamo ancora una volta sul nome della tabella "phpbb_search_wordmatch" dall'elenco a sinistra, poi di nuovo su ESPORTA dal menù in alto, e questa volta NON SELEZIONARE "AGGIUNGI DROP TABLE". Questa operazione è importantissima poichè se lasciamo abilitata la voce, aggiungeremo all'inizio del secondo backup l'istruzione "Drop table" e cioè "elimina tabella". Così facendo, quando avremo problemi ed andremo ad importare il primo database, aggiungeremo le prime 500.000 righe, ma poi, quando selezioneremo la seconda parte, elimineremo involontariamente la prima. Il risultato sarà che la tabella sarà complessivamente di 600.933 righe e non di 1.100.933 poichè abbiamo perso le prime 500.000.
    Abilitiamo invece la voce "Aggiunge IF NOT EXISTS", altrimenti quando importeremo la seconda parte Mysql tenterà di creare di nuovo la stessa tabella e avremo un errore "#1050 - La tabella 'xxxxxxyyyyyzzzz' esiste gia`

    Lasciamo inalterato il valore totale delle righe ma inseriamo come inizio delle righe "a partire dalla riga" "500000"



    selezioniamo "compresso con zip" e poi su ESEGUI.
    In questo modo salveremo le restanti righe del database non ancora esportate.

    ATTENZIONE!: Anche questa volta quando si aprirà la finestra "Salva con nome" abbiate cura di rinominare il file da salvare (magari aggiungendo un 2 alla fine del nome) e di non sovrascrivere quello precedentemente salvato!).

    Prima di eliminare il database o di compiere qualsiasi operazione pericolosa su di esso vi consiglio sempre di controllare bene i vostri backup.
    Per essere sicuri potreste ad esempio installare in locale EasyPhp e importare il database per verificare che ci siano tutti i dati.

    Spero di esservi stato utile. Si accettano eventuali suggerimenti o correzioni.
    Saluti

    PIT

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •