Loading...
 

mysqldump backup e ripristino database MySql MariaDB

DA SISTEMARE

Il comando mysqldump viene utilizzato per eseguire il backup di un database MySql o MariaDB, di seguito alcune opzione da poter utilizzare

Alcune opzioni

--verbose oppure -v

mostra le operazioni che sta eseguendo, utile per capire che sta lavorando e non si è bloccato

--opt

con questa opzione è come specificare add-drop-table add-lock create-options disble-keys extended-insert lock-tables --quick set-charset. Dovrebbe dare un'operazione di dumping veloce e produrre un file di dump che può essere ricaricato rapidamente in un server MySQL.
L'opzione  opt è abilitata di default. Usare skip-opt per disabilitarlo, in caso è possibile disabilitare anche una sola delle opzioni.

--single-transaction

Questa opzione imposta la modalità di isolamento della transazione su REPEATABLE READ e invia un'istruzione SQL START TRANSACTION al server prima di scaricare i dati. È utile solo con le tabelle transazionali come InnoDB, perché in questo modo scarica lo stato coerente del database nel momento in cui è stata emessa START TRANSACTION senza bloccare alcuna applicazione.

Quando si utilizza questa opzione, è necessario tenere presente che solo le tabelle InnoDB vengono scaricate in uno stato coerente. Ad esempio, qualsiasi tabella MyISAM o MEMORY scaricata durante l'utilizzo di questa opzione potrebbe comunque cambiare stato.

Mentre è in corso un dump di --single-transaction, per garantire un file di dump valido (contenuto della tabella e coordinate di registro binari corretti), nessun'altra connessione deve utilizzare le seguenti istruzioni: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TAVOLO. Una lettura coerente non è isolata da quelle istruzioni, quindi l'utilizzo di esse su una tabella da scaricare può causare SELECT che viene eseguita da mysqldump per recuperare il contenuto della tabella per ottenere contenuti non corretti o fallire.

L'opzione single-transaction e lock-tables si escludono a vicenda perché LOCK TABLES causa il commit implicito di tutte le transazioni in sospeso.

Questa opzione non è supportata per le tabelle del cluster NDB; non è possibile garantire la coerenza dei risultati a causa del fatto che il motore di archiviazione NDBCLUSTER supporta solo il livello di isolamento della transazione READ_COMMITTED. È consigliabile utilizzare sempre il backup e il ripristino NDB.

Per scaricare tabelle di grandi dimensioni, combinare l'opzione single-transaction con l'opzione quick.

--quick, -q

Questa opzione è utile per il dumping di tabelle di grandi dimensioni. Costringe mysqldump a recuperare righe per una tabella dal server una riga alla volta piuttosto che recuperare l'intera serie di righe e memorizzarla in memoria prima di scriverla.

--routines impostata a FALSE di default

esporta anche eventuali procedure

--triggers impostata a TRUE di default

esporta anche i tiggers

-h

specifica l'host per un backup da remoto

--port

per utilizzare una porta diversa da quella di default

-u

per specificare il nome dell'utente dautilizzare

-p

per passare la password dell'utente utilizzato, se si passa -p la password verrà richiesta dopo aver dato invio, altrimenti si può passare la password nel modo seguente -ppassword cioè inserendo la passord subito dopo -p senzaa spazi.

Comando di base

in locale

mysqldump -u user -p db_da_copiare > backup.sql

da remoto

mysqldump -h 127.0.0.1 --port 3306 -u user -p db_da_copiare > backup.sql

Eseguire il backupi

se avessimo un database con nome ProvaDB con le tabelle tabella1, tabella2, tabella3, tabella4, tabell51, tabella6 e 

per effettuare il backup escludendo le tabelle tabella3 e tabella4 e nominare il file di backup come ProvaDB_backup potremmo eseguire il comando seguente

mysqldump -u Username -p opt --single-transaction quick --routines databases ProvaDB ignore-table=ProvaDB.tabella3 ignore-table=ProvaDB.tabella4 > ProvaDB_backup.sql

per effettuare il backup di tulle le tabelle

mysqldump -u Username -p opt single-transaction quick routines --databases ProvaDB > ProvaDB_backup.sql

Eseguire il backup comprimendo il dump

mysqldump -u Username -p opt single-transaction quick routines databases ProvaDB | gzip > ProvaDB_backup.sql.gz

Ripristino del database

il file generato da mysqldup contiene semplicemente l'sql con la struttura e i dati

Ripristino di un dump non compresso

mysql -u Username -p ProvaDB < ProvaDB_backup.sql 

Ripristino di un dump compresso con gzip

gunzip < ProvaDB_backup.sql.gz | mysql -u Username -p ProvaDB