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

Usa mysqldump per eseguire il backup di MySQL o MariaDB

MySQL e MariaDB includono l'utilità themysqldump per semplificare il processo di creazione di un backup di un database o di un sistema di database. Usando mysqldump crea un backup logico . Puoi utilizzare questo strumento solo se il processo del database è accessibile e in esecuzione.

Se il tuo database non è accessibile per qualsiasi motivo, puoi invece creare un backup fisico , che è una copia della struttura del filesystem che contiene i tuoi dati.

Le istruzioni in questa guida si applicano sia a MySQL che a MariaDB. Per semplificare, il nome MySQL verrà utilizzato per applicare a entrambi.

Prima di iniziare

  • Avrai bisogno di un'installazione MySQL o MariaDB funzionante e un utente del database per eseguire il backup. Per assistenza con l'installazione, vedere la documentazione di Linode MySQL.

  • Avrai bisogno dell'accesso come root al sistema o di un account utente con sudo privilegi.

Backup di un database

Il mysqldump la sintassi generale del comando è:

mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
  • mysqldump richiede una password prima di avviare il processo di backup.
  • A seconda delle dimensioni del database, il completamento potrebbe richiedere del tempo.
  • Il backup del database verrà creato nella directory in cui viene eseguito il comando.
  • -$(date +%F) aggiunge un timestamp al nome del file.

Esempi di casi d'uso includono:

  • Crea un backup di un intero Database Management System (DBMS):

      mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
    
  • Eseguire il backup di un database specifico. Sostituisci db1 con il nome del database di cui si desidera eseguire il backup:

      mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
    
  • Eseguire il backup di una singola tabella da qualsiasi database. Nell'esempio seguente, table1 viene esportato dal database db1 :

      mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
    

Ecco una ripartizione di mysqldump opzioni di comando utilizzate sopra:

  • --single-transaction :Emetti un'istruzione BEGIN SQL prima di eseguire il dump dei dati dal server.
  • --quick :applica le tabelle di dumping riga per riga. Ciò fornisce una maggiore sicurezza per i sistemi con poca RAM e/o database di grandi dimensioni in cui l'archiviazione di tabelle in memoria potrebbe diventare problematica.
  • --lock-tables=false :non bloccare le tabelle per la sessione di backup.

Automatizzazione dei backup con cron

Le voci possono essere aggiunte a /etc/crontab per pianificare regolarmente i backup del database.

  1. Crea un file per contenere le credenziali di accesso dell'utente root MySQL che eseguirà il backup. Nota che l'utente di sistema la cui directory home è archiviato questo file può non essere correlato a nessun utente MySQL.

    File:/ home/utente_esempio/.mylogin.cnf
    1
    2
    3
    
    [client]
    user = root
    password = MySQL root user's password
  2. Limita i permessi del file delle credenziali:

    chmod 600 /home/example_user/.mylogin.cnf
    
  3. Crea il file di lavoro cron. Di seguito è riportato un esempio di cron job per eseguire il backup dell'intero sistema di gestione del database ogni giorno all'01:00:

    File:/ ecc/cron.daily/mysqldump
    1
    
    0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql

    Per ulteriori informazioni su cron, vedere le pagine di manuale di cron(8) e cron(5).

Ripristina un backup

La sintassi generale del comando di ripristino è:

mysql -u [username] -p [databaseName] < [filename].sql
  • Ripristina un intero backup DBMS. Ti verrà richiesta la password dell'utente root MySQL:
    Questo sovrascriverà tutti i dati correnti nel sistema di database MySQL

      mysql -u root -p < full-backup.sql
    
  • Ripristina un singolo dump del database. Deve esistere già un database di destinazione vuoto o vecchio in cui importare i dati e l'utente MySQL su cui stai eseguendo il comando deve avere accesso in scrittura a quel database:

      mysql -u [username] -p db1 < db1-backup.sql
    
  • Ripristina una singola tabella, devi avere un database di destinazione pronto a ricevere i dati:

      mysql -u dbadmin -p db1 < db1-table1.sql
    

Maggiori informazioni

Si consiglia di consultare le seguenti risorse per ulteriori informazioni su questo argomento. Sebbene questi siano forniti nella speranza che possano essere utili, tieni presente che non possiamo garantire l'accuratezza o la tempestività dei materiali ospitati esternamente.

  • Pagina dei metodi di backup del database MySQL
  • mysqldump - Un programma di backup del database, manuale di riferimento MySQL