Computer 4 dummy

Informatica facile a portata di tutti

amministrazioneDatabaseguidaMicrosoft WindowsmysqlWindows

Backup DB mysql da script .bat

Uno dei modi più pratici che ho trovato di schedulare un backup automatico di un database mysql è quello di creare un task (Task Scheduler) ed eseguire il file bat che esegue il backup dei database presenti sul server.

@echo off
:: ---- SETUP ----
:: db user name
set dbuser=backups
:: db user password
set dbpass=pAssW03d
:: db list (lista di DB separati da uno spazio)
set dblist=database1 database2 database3
:: backup directory destinazione dump
set bkupdir=C:\Backup
:: Cartella di installazione mysql
set mysqldir=C:\mysql
:: -----------------------------------------------------
:: NON MODIFICATE SOTTO
echo MySQLDump start >> log.txt
for %%f in (%dblist%) do (
echo backing up %%f ...
"%mysqldir%\bin\mysqldump" --user=%dbuser% --password=%dbpass% --databases %%f --opt --quote-names --allow-keywords --events --routines --complete-insert --skip-lock-tables > "%bkupdir%\%%f.sql"
echo OK! 
echo backup di %%f OK! >> log.txt
)
echo MySQLDump Finito>> log.txt
echo ----- >> log.txt
echo Procedura terminata correttamente!

Prima cosa creiamo una cartella nel disco C:  e al suo interno creiamo un file di testo che rinominiamo in mysqldump.bat, lo editiamo con un editor di testo incollandoci lo script sopra e modificando i dati di setup come spiegato sotto:

SETUP

Nella prima parte dobbiamo compilare i parametri di accesso necessari ad eseguire il dump del database.

  • dbuser: Utente del database con i privilegi necessari per eseguire il dump su ogni database selezionato nella lista.
  • dbpass: Password di connessione dell’utente.
  • dblist: Lista dei database sui quali eseguire il dump.
  • bkupdir: Cartella di destinazione del file .sql generato dopo il dump.
  • mysqldir: Percorso di installazione del mysql (nella cartella bin al suo interno deve essere presente il file mysqldump.exe).

Una volta compilati i capi del setup se i permessi sul database sono corretti e l’utente dispone dei permessi di scrittura nella cartella di destinazione possiamo eseguire lo script.

log.txt

Per sicurezza generiamo anche un file di log per verificare eventuali problemi in caso di esecuzione schedulata senza la nostra presenza.
In questo script il log viene generato nella stessa posizione da dove viene lanciato lo script.

Esecuzione del DUMP

La stringa che esegue il dump è:

"%mysqldir%\bin\mysqldump" --user=%dbuser% --password=%dbpass% --databases %%f --opt --quote-names --allow-keywords --events --routines --complete-insert --skip-lock-tables > "%bkupdir%\%%f.sql"
echo OK!

Cerchiamo di spiegarla:

“%mysqldir%\bin\mysqldump”

Esecuzione del file mysqldump.exe conteuto nella cartella bin di installazione del mysql.

–user=%dbuser%

Utente con i permessi per l’esecuzione del dump del database.

–password=%dbpass%

La password dell’utente con i permessi per eseguire il dump del database.

–databases %%f

Viene selezionato dalla variabile %f il database sul quale eseguire il dump.

–opt

Nella guida ufficiale si dice che non è necessario specificarlo dato che è abilitato di default, serve comunque a includere una serie di parametri quali  –add-drop-table –add-locks–create-options –disable-keys –extended-insert –lock-tables –quick –set-charset

–quote-names

Aggiunge un apostrofo ai nomi delle tabelle e delle colonne.

–allow-keywords

Permette la creazione di campi con nomi di keyword anteponendo il nome della tabella al campo.

–events

Esporta nel dump anche gli eventi schedulati.

–routines

Con questa opzione vengono esportati anche le funzioni e le procedure.

–complete-insert

Se non aggiungiamo l’opzione –complete-insert le tabelle vengono esportate senza valori pertanto tutte le tabelle sono vuote, abbiamo quindi solo la struttura senza dati.

–skip-lock-tables

Nel caso non vengano “lockate” le tabelle non si garantiscono i permessi di lettura/scrittura alle tabelle agli altri utenti, quindi quindi non possiamo “usare” il database durante il dump, questo serve a garantire la coerenza dei dati durante il dump ma allo stesso tempo ne blocca l’utilizzo nel caso di un database di produzione.

> “%bkupdir%\%%f.sql”

Fine di destinazione contenente tutto l’export del database mysql.

 

Per i dettagli di tutte le opzioni disponibili per il dump del database mysql rimando al link della guida: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.