I comandi Linux: MySQL ( 6 ) | ALTRI capitoli | ||||||
Lo statement CHECK TABLE verifica eventuali errori presenti in una tabella o in una VIEW:
Quando si tratta di una VIEW, il comando CHECK TABLE verifica che le tabelle i cui dati vanno a comporre la VIEW siano ancora esistenti. È possibile eseguire la verifica su più tabelle:
Se si desidera verifcare la compatibilità di una tabella con la versione corrente di MySQL, eseguire il comando:
Se MySQL trova errori in una tabella, marca la tabella stessa come “corrupted”, in modo tale da impedirne l'uso, da parte dell'utente, almeno fino a quando non verrà riparata. Il comando CHECKSUM TABLE genera una checksum dai dati della tabella. Se la checksum generata è diversa dalla checksum ottenuta in precedenza, la tabella ha subito una qualche variazione. Se la variabile:
è pari a 1, la checksum viene eseguita comprendendo tutti i record ( row ) della tabella. Anche una semplice variazione nel formato dei dati può comportare una variazione della checksum.
Un server MySQL supporta diversi tipi di tabella. Il programma che gestisce un particolare tipo di tabella MySQL viene chiamato anche motore MySQL. Un motore MySQL può supportare alcune funzionalità SQL, ma non altre. Per conoscere quali motori MySQL supporta il vostro Relational Database Management System MySQL, eseguite, sulla riga di comando
Questo comando restituisce l'elenco dei motori MySQL supportati dal proprio server MySQL, le funzionalità supportate da ciascuno dei motori MySQL elencati, il motore MySQL utilizzato di default, quando, cioè, non ne viene specificato alcuno, in fase di creazione di una tabella:
Se si desidera conoscere le caratteristiche tecniche ed operazionali di un singolo motore MySQL, eseguite il comando:
Il comando richiede il privilegio PROCESS e chiede che vengano specificati il nome del motore MySQL ed il tipo di informazioni che si richiede:
Un database può contenere tabelle di tipo differente, gestite da motori MySQL differenti. Per sapere quali motori MySQL state utilizzando, per un determinato database, selezionate il database che contiene le tabelle per le quali desiderate le informazioni:
ed eseguite il comando:
Il motore MySQL da utilizzare può essere specificato al momento della creazione di ciascuna tabella:
Il motore MySQL da utilizzare di default può essere impostato in uno dei file di configurazione, all'interno della sezione dedicata al server MySQL:
oppure, per la sola sessione corrente, utilizzando il comando SET:
Il nome del motore MySQL di default è contenuto, infatti, nella variabile MySQL:
Per conoscere il valore della variabile, eseguite il comando:
Dalla versione 5.5.5 di MySQL, il motore MySQL di default è InnoDB, che è il solo motore che supporti le transazioni e l'integrità referenziale ( FOREIGN KEY e REFERENCES ). Per convertire una tabella da un motore ad un altro, utilizzate il comando ALTER TABLE:
Questa conversione può risultare molto utile, per esempio, nel passare da un server MySQL che non supporta l'integrità referenziale o le transazioni ad un server InnoDB, che supporta entrambe. I motori MySQL che non supportano queste funzionalità, infatti, comprendono la sintassi relativa all'integrità referenziale o alle transazioni, ma non ne eseguono i comandi. Non è infrequente lavorare in un ambiente i cui server MySQL slave ( schiavi ) utilizzino, per ragioni di efficienza e velocità, motori MySQL diversi da InnoDB, mentre il server aziendale ( master ) utilizza il motore MySQL InnoDB. In casi come questo, è possibile creare e sviluppare il proprio database, utilizzando i comandi ADD CONSTRAINT FOREIGN KEY, per esempio, anche se si lavora su un motore MySQL non InnoDB, sapendo che, una volta trasferito il database su un server InnoDB, quei comandi verrebbero, finalmente, eseguiti. Il metodo più semplice per eseguire un backup di un database è copiarne i file in un disco esterno, oppure in una partizione differente da quella correntemente utilizzata, oppure, addirittura, in un'altro computer. InnoDB salva i propri file, di dati e di log, all'interno della directory specificata nella variabile:
Se questa variabile non fosse mai stata impostata:
InnoDB utilizzerebbe, per i propri file, la directory HOME di MySQL, contenuta nella variabile MySQL:
nella quale MySQL salva i propri dati. La variabile MySQL:
invece, è la directory di installazione del server MySQL. Per MySQL, la directory:
rappresenta la sua cartella HOME. La rappresentazione:
indica, quindi, la stessa directory contenuta nella variabile:
InnoDB utilizza file binari. L'organizzazione dei file di InnoDB è piuttosto complessa ed è fondata sul concetto di " tablespace " ( lo spazio delle tabelle ), uno spazio virtuale, composto da uno o più file fisici che, nel loro insieme, vengono trattati come un unico file. Se la variabile:
è OFF, come solitamente è, InnoDB conterrà solo un " tablespace ", il tablespace di sistema, il cui identificatore ( un numero a 32 bit ) è 0. In questo caso, tutti i file di InnoDB verranno compresi in un unico file:
nel quale vengono memorizzati tutti i dati di sistema e tutti i dati inseriti dall'utente ( tabelle ). InnoDB, inoltre, in fase di inizializzazione, crea anche due file di " redo log ":
nei quali vengono memorizzate le modifiche apportate al database, in modo da poter ricostruire il database, in caso di crash del server o del sistema. Il tablespace di sistema, e solo il tablespace di sistema, può contenere più di un file di dati e più di una tabella. Il nome del file dei dati è conservato nella variabile:
Il percorso completo del file, quindi, è dato dal valore della variabile:
oppure, della variabile:
seguito dalla slash:
e dal valore contenuto nel primo campo del record contenuto nella variabile:
In questo caso, il nome del file è
In questo esempio, abbiamo definito, all'interno del file di configurazione:
la directory di default:
in cui salvare due file: il primo,
Un tablespace è una catena di file. Un tablespace può essere esteso, appendendo un nuovo file alla fine della catena. Solo impostando a ON la variabile
è possibile creare più tablespace, oltre a quello di sistema. InnoDB assegnerà, in questo caso, un tablespace a ciascuna tabella creata, generando un file di dati, con suffisso
sia che si decida di creare un tablespace per tabella, impostando la variabile:
InnoDB creerà, oltre ai file di tablespace già visti, un file
di utilizzare il solo tablespace di sistema:
e di avere un database di nome
La struttura dei file, nel nostro disco fisso, sarà la seguente:
con la directory AZIENDA che conterrà, a sua volta, i file:
In caso di backup, i file
Con InnoDB, non è possibile copiare i file di una sola tabella, oppure di un solo database, poichè InnoDB distribuisce le informazioni e le metainformazioni, relative ai database ed alle tabelle, nei vari tablespace che l'utente crea. Quindi, per effettuare una copia di tabelle InnoDB, è necessario copiare l'intera directory utilizzata da InnoDB. Prima di effettuare la copia dei file InnoDB, si consiglia vivamente di chiudere il server MySQL:
oppure:
Sia per eseguire questo primo comando, sia per eseguire la copia dei file di InnoDB, è necessario acquisire i privilegi di " root ", visto che InnoDB crea alcuni database ed alcune tabelle di gestione che non possono essere manipolati da un utente qualsiasi. Probabilmente, senza i privilegi di " root " non sareste nemmeno in grado di spostarvi nella directory dei file di InnoDB:
Questo accade perchè la directory
Per sapere a quali gruppi appartenete, è sufficiente eseguire il comando:
Uno shutdown dovrebbe essere eseguito solo dopo che il server MySQL abbia completato tutte le operazioni in esecuzione. Uno shutdown di questo tipo viene chiamato " clean shutdown ", oppure " slow shutdown ", proprio per distinguerlo da un crash o da un cosiddetto " fast shutdown ". Affinchè venga eseguito uno " slow shutdown ", è necessario impostare la variabile del server MySQL:
a zero, o per la sessione ( del server ) corrente:
oppure, per tutte le sessioni future, utilizzando uno dei file di configurazione MySQL. Attenzione: con database di grosse dimensioni, è possibile che uno " slow shutdown " duri molti minuti, in alcuni casi, anche ore! Occorre ricordare che, nel caso la variabile
Con questa impostazione, lo shutdown simulerebbe un vero e proprio crash del server. Da usare, ovviamente, con estrema prudenza! Per essere certi che il processo di shutdown sia stato completato con successo, verificate il file di LOG di MySQL, solitamente:
all'interno del quale dovreste trovare le righe:
Una volta completato lo shutdown del server MySQL, sarà possibile effettuare la copia dei file della directory di InnoDB, copiando tutti i file di configurazione:
i file:
che possono essere anche più di uno:
i file di LOG:
i file delle tabelle, con estensione:
e, nel caso fosse stata impostata a ON la variabile
Nel copiare i file, sarebbe meglio preservarne tutti gli attributi, utilizzando il comando
In questo esempio, stiamo salvando, nella directory corrente del corrente computer, tutti i file contenuti nella cartella Nel caso in cui il vostro sito web fosse installato su un server per il quale non detenete i privilegi di amministratore ( root ), vi sarebbe impossibile copiare i file dei database che avete installato. In casi come questo, molto frequenti, tornerebbe molto utile un programma che vi permetta di eseguire il " dump " di un database. I file dump contengono gli statement che permettono di ri-creare il database, oppure la tabella che desiderate ripristinare. Quindi, per eseguire un backup con
In questo caso, abbiamo salvato struttura e dati del database db nel file file.sql. Negli account di hosting, solitamente, i database MySQL possono essere gestiti, dall'utente, attraverso il programma
Il comando source, eseguibile dal prompt di mysql, esegue un file script SQL. Il file script SQL da dare in pasto al comando source, eseguibile dal prompt di mysql, è il file generato dal comando di shell mysqldump. Se il file di dump contiene uno o più database, non sarà necessario selezionare il database di destinazione, poichè il file di dump conterrà già gli statement CREATE DATABASE. In questo caso, si potrà eseguire il caricamento del file anche direttamente dalla shell, senza necessariamente aprire il comando
Per eseguire un dump di un database, utilizzando il comando di shell mysqldump, eseguire:
oppure, uno del due seguenti comandi, che sono equivalenti:
che eseguono il dump del database db e lo salvano nel file file.sql. Normalmente, mysqldump tratta il primo argomento della linea di comando come il nome del database e gli argomenti seguenti come i nomi delle tabelle:
Se si utilizza una delle due opzioni, equivalenti:
invece, mysqldump tratterà tutti gli argomenti della linea di comando come nomi di database:
Per creare una copia di tutti i database:
Se, per accedere al database locale del quale si vuole eseguire il dump servisse inviare al server MySQL una password, utilizzare una delle due seguenti opzioni:
Se si usa la forma abbreviata ( -p ), la password deve essere scritta immediatamente dopo l'opzione ( senza spazi ). Se si omette di scrivere anche la password, mysqldump la richiederà al prompt:
Quando si utilizza una delle due opzioni:
i due statement CREATE DATABASE e USE non verranno creati, costringendo l'utente, in fase di ripristino, a selezionare il database in cui operare. Se, in fase di ripristino di un database, si desidera che la preesistente copia del database venga eliminata, prima di eseguire il ripristino, eseguire:
Naturalmente, è possibile che anche la preesistente copia di una tabella venga eliminata, prima di eseguirne il ripristino:
Il comando
Per verificare tutte le opzioni disponibili per il comando
|
|||||||
I comandi Linux: MySQL ( 6 ) | Le guide di .bit: contenuto originale |