Mysql
 sql >> Database >  >> RDS >> Mysql

Esercitazione su come eseguire il backup e il ripristino (esportazione e importazione) di database MySQL

phpMyAdmin può essere utilizzato per esportare o eseguire facilmente il backup di database MySQL o MariaDB. Tuttavia, se la dimensione del database è molto grande, probabilmente non sarà una buona idea. phpMyAdmin consente agli utenti di salvare il dump del database come file o visualizzarlo sullo schermo, il che implica l'esportazione di istruzioni SQL dal server e la trasmissione dei dati attraverso una connessione di rete più lenta o Internet al computer dell'utente. Questo processo rallenta il processo di esportazione, aumenta il tempo di blocco del database e quindi l'indisponibilità di MySQL o MariaDB, rallenta il server e potrebbe semplicemente mandare in crash il server HTTPD Apache se troppe connessioni Web in entrata impastano le risorse del sistema.

Il modo migliore per eseguire il backup e l'esportazione del database MySQL o MariaDB è eseguire l'operazione localmente sul server, in modo che i dati delle tabelle possano essere scaricati istantaneamente sul disco locale senza indugio. Pertanto, la velocità di esportazione sarà più rapida e ridurrà il tempo in cui il database o la tabella MySQL o MariaDB sono bloccati per l'accesso. Questo tutorial è la guida su come eseguire il backup (esportare) e ripristinare (importare) database MySQL o MariaDB sul server di database stesso utilizzando mysqldump e mysql servizi di pubblica utilità. Esistono fondamentalmente due metodi per eseguire il backup di MySQL o MariaDB , uno è copiare tutti i file di tabella (file *.frm, *.MYD e *.MYI) o utilizzare mysqlhotcopy utility, ma funziona solo per le tabelle MyISAM. Di seguito il tutorial si concentrerà su mysqldump che funziona sia per le tabelle MyISAM che per quelle InnoDB.

Come esportare, eseguire il backup o eseguire il dump di un database MySQL o MariaDB

Per esportare un database MySQL o MariaDB in un file dump, digita semplicemente la seguente sintassi del comando nella shell. Puoi utilizzare Telnet o SSH per accedere in remoto alla macchina se non hai accesso alla casella fisica.

mysqldump -u username -ppassword database_name > dump.sql

Sostituisci nome utente con un ID utente MySQL o MariaDB valido, password con la password valida per l'utente (IMPORTANTE:nessuno spazio dopo -p e la password, altrimenti mysqldump ti chiederà la password ma tratterà la password come nome del database, quindi il backup fallirà) e nome_database con il nome effettivo del database che si desidera esportare. Infine, puoi inserire il nome che preferisci per il file di dump SQL di output, qui stato dump.sql .

Tutti i dati, le tabelle, le strutture e il database di nome_database verrà eseguito il backup in un file di testo SQL denominato dump.sql con il comando precedente.

Come esportare solo strutture di database MySQL o MariaDB

Se non hai più bisogno dei dati all'interno delle tabelle del database (improbabile), aggiungi semplicemente –no-data passare ad esportare solo le strutture delle tabelle. Ad esempio, la sintassi è:

mysqldump -u username -ppassword --no-data database_name > dump.sql

Come eseguire il backup dei soli dati di un database MySQL o MariaDB

Se desideri solo eseguire il backup dei dati, utilizza –no-create-info opzione. Con questa impostazione, il dump non ricreerà il database, le tabelle, i campi e altre strutture durante l'importazione. Usalo solo se sei abbastanza sicuro di avere database duplicati con la stessa struttura, dove devi solo aggiornare i dati.

mysqldump -u username -ppassword --no-create-info database_name > dump.sql

Come scaricare diversi database MySQL o MariaDB in un file di testo

–database l'opzione consente di specificare più di 1 database. Esempio di sintassi:

mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql

Come scaricare tutti i database in MySQL o MariaDB Server

Per eseguire il dump di tutti i database, utilizza –all-databases opzione e non è più necessario specificare il nome del database.

mysqldump -u username -ppassword --all-databases > dump.sql

Come eseguire il backup online delle tabelle InnoDB

Il backup del database causa inevitabile che il server MySQL o MariaDB non sia disponibile per le applicazioni perché durante l'esportazione, tutte le tabelle hanno acquisito un blocco di lettura globale utilizzando FLUSH TABLES WITH READ LOCK all'inizio del dump fino alla fine. Quindi, sebbene le istruzioni READ possano procedere, tutte le istruzioni INSERT, UPDATE e DELETE dovranno accodarsi a causa di tabelle bloccate, come se MySQL o MariaDB fossero inattivi o bloccati. Se utilizzi InnoDB, –transazione singola è il modo per ridurre al minimo questa durata del tempo di blocco quasi inesistente come se si esegue un backup online. Funziona leggendo le coordinate del log binario non appena il blocco è stato acquisito e il blocco viene quindi rilasciato immediatamente.

Sintassi:

mysqldump -u username -ppassword  --all-databases --single-transaction > dump.sql

Come ripristinare e importare database MySQL o MariaDB

Puoi ripristinare da phpMyAdmin, usando la scheda Importa. Per un modo più rapido, carica il file dump sul server MySQL o MariaDB e usa il comando seguente per importare nuovamente i database nel server MySQL o MariaDB.

mysql -u username -ppassword database_name < dump.sql
Se desideri connetterti a server MySQL o MariaDB in remoto su un altro server, aggiungi -h nome-server-o-indirizzo-IP al comando.

L'importazione e l'esportazione del database MySQL o MariaDB non solo è importante per recuperare i dati quando si verifica un disastro, ma fornisce anche un modo semplice per migrare o passare a un altro server, ad esempio quando si cambia provider di hosting web. Tuttavia, tieni presente che un problema comune è la codifica del set di caratteri. La versione più recente di mysqldump utilizza UTF8 come set di caratteri predefinito se non viene specificato nulla, mentre le versioni precedenti (in genere precedenti alla 4.1) utilizzano Latin1 come set di caratteri predefinito. Se il set di caratteri del database è Latin1 e viene eseguito il dump in una raccolta UTF8, i dati potrebbero finire per diventare semplicemente spazzatura, confusi o illeggibili (spesso accade con il blog di WordPress). In questo caso, usa –default-character-set=charset_name opzione per specificare il set di caratteri o convertire il database in UTF8.