Hoe maak je een back-up en herstel je een MySQL-database
Als je gegevens opslaat in een MySQL-database en het belangrijk is om ze niet te verliezen, moet je regelmatig back-ups maken. Dit artikel leert je hoe je snel via de console back-ups kunt maken en deze kunt herstellen in MySQL. Je kunt ook gegevens naar een andere server overzetten.
- Hoe maak je een back-up via de opdrachtregel (met mysqldump)
- Hoe maak je een MySQL-databaseback-up met compressie
- Hoe herstel je een MySQL-database vanuit een back-up
- Back-up en herstel via Adminer
Hoe maak je een back-up via de opdrachtregel (met mysqldump)
Als je via de console (SSH) toegang hebt tot de server, kun je snel back-ups maken en terugzetten. Dit maakt het mogelijk om snel een dump van de database te maken (een dump is een tekstuele versie van de database) en deze terug te zetten, sneller dan via phpMyAdmin, Adminer enzovoort. De dump bestaat uit SQL-commando’s om een kopie van je database te creëren. Hier is het commando om een dump te maken:
$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
[uname] – de gebruikersnaam van de database (vaak root)
[pass] – het wachtwoord van de gebruiker, kan direct achter -p worden geschreven als het geen speciale tekens of spaties bevat, bijvoorbeeld -proot of -ppassword
[dbname] – de naam van je database
[backupfile.sql] – de naam van het bestand waarin de back-up wordt opgeslagen
[--opt] – opties voor het mysqldump-commando, optioneel
Stel dat je een database genaamd DrupalDB hebt, met gebruiker root en wachtwoord password, en je wilt de back-up opslaan in backup.sql, dan gebruik je het volgende commando:
$ mysqldump -u root -ppassword DrupalDB > backup.sql
Als je wachtwoord spaties of speciale tekens bevat (#!,-_), of als je het liever niet in de opdracht schrijft, voer je het apart in:
$ mysqldump -u root -p DrupalDB > backup.sql
Je kunt ook afzonderlijke tabellen back-uppen door hun namen te vermelden, bijvoorbeeld nodes en users:
$ mysqldump -u root -p DrupalDB nodes users > backup.sql
Naast het back-uppen van afzonderlijke tabellen kun je ook meerdere databases tegelijk back-uppen met de parameter --databases, gevolgd door de namen van de databases:
$ mysqldump -u root -p --databases DrupalDB Drupal7 Drupal8 > backup.sql
Als je de volledige MySQL-server wilt migreren, gebruik dan de parameter --all-databases om alle databases te kopiëren:
$ mysqldump -u root -p --all-databases > alldb_backup.sql
Het commando mysqldump heeft ook verschillende nuttige parameters:
--add-drop-table – voegt een DROP TABLE-commando toe vóór elk CREATE TABLE-commando in de dump, zodat bestaande tabellen worden verwijderd voordat ze opnieuw worden aangemaakt.
--no-data – maakt alleen een kopie van de databasestructuur zonder gegevens. Handig voor tabellen zoals cache-tabellen in Drupal die honderdduizenden onnodige records kunnen bevatten.
--add-locks – voegt LOCK TABLES en UNLOCK TABLES toe. Bij grote databases kunnen tabellen hierdoor langere tijd vergrendeld zijn.
Hoe maak je een MySQL-databaseback-up met compressie
Dit is meestal de beste optie, omdat compressie de bestandsgrootte 10 tot 20 keer kan verkleinen, waardoor grote back-ups veel kleiner worden. Gebruik hiervoor het commando gzip:
$ mysqldump -u root -p DrupalDB | gzip -9 > backup.sql.gz
Als je het bestand wilt uitpakken (niet de database herstellen, alleen uitpakken), gebruik dan:
$ gunzip backup.sql.gz
Hoe herstel je een MySQL-database vanuit een back-up
Om een database uit een dump te herstellen, heb je een lege database nodig. Je kunt bestaande tabellen verwijderen via Adminer of phpMyAdmin. Als je de parameter --add-drop-table gebruikte, worden de tabellen automatisch verwijderd en opnieuw aangemaakt, dus je hoeft niets handmatig te verwijderen. Gebruik het volgende commando om te herstellen:
$ mysql -u root -p DrupalDB < backup.sql
Als je een gecomprimeerde back-up hebt, gebruik dan:
gunzip < backup.sql.gz | mysql -u root -p DrupalDB
Back-up en herstel via Adminer (alternatief voor PhpMyAdmin)
Adminer is een alternatief voor PhpMyAdmin. Het biedt dezelfde functionaliteit, maar in de vorm van één klein bestand, wat erg handig is:
Kopieer eenvoudig het bestand naar de rootmap van je website en open het in je browser:
http://jouw_website/adminer-4.2.1.php (je kunt het hernoemen naar adminer.php voor gemak)
Log in en open de gewenste database, bijvoorbeeld Drupal7.
Klik vervolgens op “Export (Dump)” om de gegevens te downloaden. Je kunt ervoor kiezen om cachegegevens niet te exporteren:
Om een dump terug te importeren, gebruik je het tabblad “Import (Importeren)”: