Webserver – Automatisch MySQL database backups maken

database backup

Ik heb hier als titel meegenomen “automatisch”, want dit programma (MySQLdump) kan via de commandline worden uitgevoerd, zo kun je dus heel makkelijk een “cronjob” laten lopen die bijvoorbeeld om de dag een database naar een bestand dumpt!, dit kun je hieronder vinden.

Wat is MySQLDump?
MySQLDump is een uitvoerbaar .exe bestand dat je kunt vinden in de MySQL installatiefolder: [MySQLFolder]\bin\mysqldump.exe

De MySQLDump utility geeft ons een scala aan mogelijkheden om een ​​database back-up naar een externe bron, zoals een bestand, of zelfs een geheel andere MySQL server die draait op de andere kant van de wereld te geven!
Ik gebruik het woord “backup” nogal losjes hier, omdat MySQL niet daadwerkelijk een backup maakt van onze gegevens. Integendeel, het creëert een set van “CREATE TABLE” en “INSERT INTO” opdrachten die kunnen worden uitgevoerd tegen een MySQL-server voor het opnieuw opbouwens van de database).

Hoe een backup te maken van een database naar een bestand?
Daarvoor kun je de volgende commandolijn opgeven:

mysqldump --user [GEBRUIKERSNAAM] --password=[WACHTWOORD] [DATABASE] > [BESTAND.EXT]

Voorbeeld:

mysqldump --user root --password=[WACHTWOORD] mijndatabase > mijndatabase.sql

OPT commando:
Met het extra commando “–opt” (van optimize=optimaliseren) worden de databases iets geavanceerder weggeschreven, zodoende komen er ook “DROP TABLE IF EXISTS” commando’s in te staan die dus eerst een table verwijderen en vervolgens opnieuw opbouwen, de total commandolijn is dan als volgt:

mysqldump --user [GEBRUIKERSNAAM] --password=[WACHTWOORD] --opt [DATABASE] > [BESTAND.EXT]

Dumpen vanaf een andere computer/server
Met het extra commando “-h” (van host) kun je een MySQL server vanaf een IP adres opgeven om de informatie op te halen!

Ps. zorg wel dat je mysqldump.exe hebt op de desbetreffende computer, deze kun je kopieren uit de [MySQLFolder]\bin\ folder!

ysqldump -h [IPADRES] --user [GEBRUIKERSNAAM] --password=[WACHTWOORD] --opt [DATABASE] > [BESTAND.EXT]

Voorbeeld:

mysqldump -h 192.168.1.101 --user root --password=[WACHTWOORD] --opt mijndatabase > mijndatabase.sql

Hoe zet ik een database terug?
Een database terugzetten kan eenvourig met de volgende commandolijn:

mysqldump --user [GEBRUIKERSNAAM] --password=[WACHTWOORD] [DATABASE] < [BESTAND.EXT]

Voorbeeld:

mysqldump --user root --password=[WACHTWOORD] mijndatabase < mijndatabase.sql

Verkorte commandolijn
Hierboven staan de uitgebreide commandolijn parameters, deze kunnen ook verkort worden opgeschreven.
–password=[WACHTWOORD] kan ook opgegeven worden met -p[WACHTWOORD] (let op: GEEN spatie tussen -p en het wachtwoord!)

De commandolijn:

mysqldump -h [IPADRES] --user [GEBRUIKERSNAAM] --password=[WACHTWOORD] --opt [DATABASE] > [BESTAND.EXT]

Wordt dan:

mysqldump -h [IPADRES] -u [GEBRUIKERSNAAM] -p[WACHTWOORD] --opt [DATABASE] > [BESTAND.EXT]

Voorbeeld:

mysqldump -h 192.168.1.101 -u root -p[WACHTWOORD] --opt mijndatabase > mijndatabase.sql


Automatisch backups maken (Windows)

Hieronder volgt een voorbeeld om zelf via een “cronjob” (op Windows: st) een MySQL backup te laten maken

Maak met notepad een .BAT (Batch) bestand aan (mag ook .cmd heten) (bijvoorbeeld: C:\MySQLBackup.bat met de volgende inhoud:
(pas de gegevens aan op je eigen situatie!)

Voorbeeld:

Er is nu een SQL bestand aangemaakt: E:\BACKUPSDB\MijnDatabase_10-05-20_203134.sql

Wil je 1 backup hebben per database (anders worden er oneindig veel bestanden opgeslagen), dan kun je hetvolgende aan het batchbestand toevoegen:

del "%path%\%dbName%*.*" >null

Een backup maken van meerdere databases
Je kan in bovenstaand batch bestand gewoon doorbreien door de variabelen “dbName” en “file” opnieuw in te stellen en het onderste stukje weer te gebruiken, een voorbeeld:

We kunen nu AT (Windows planner) gebruiken om het batch bestand uit te voeren! ga naar de prompt (cmd) en tik het volgende in:

at 23:00 /every:ma,di,wo,do,vr,za,zo C:\MySQLBackup.bat

Nu wordt C:\MySQLBackup.bat elke dag om 23:30 gestart!

Wil je alleen op Ma, Woe en Zat om 01:00 een backup maken, dan tik je hetvolgende in:

at 01:00 /every:ma,wo,za C:\MySQLBackup.bat

De praktijk:

windows at mysql backup

Meer info over AT is hier te lezen.

Bronnen:
sitepoint.com
oskar.org