Mysqldump maakt een *.sql-bestand met de DROP table-, CREATE table- en INSERT into-statements van de brondatabase. Om de database terug te zetten voer je dat *.sql-bestand simpelweg uit op de doeldatabase.

Een database back-uppen

  • Open de MySQL-shell — #mysql -uroot –p
  • Toon databases — mysql> show databases;
  • Back-up een database — # mysqldump -uroot -p[root_password] [database_name] > dumpfilename.sql

Een database terugzetten

Zorg dat je de database aanmaakt voordat je de restore uitvoert.

  • Open de MySQL-shell — #mysql -uroot –p
  • Maak eerst de database aan — mysql> create database [database_name];
  • Verlaat de MySQL-shell — exit;
  • Zet daarna de database terug — # mysql -uroot -p [database_name] < dumpfilename.sql

Rechten op de database instellen

Na het terugzetten moet je de rechten op de database opnieuw instellen.

  • Open de MySQL-shell — #mysql -uroot -p
  • Stel de rechten in. Hiermee wordt de gebruiker automatisch aangemaakt. — grant all privileges on databasename.* to ‘username’@’localhost’ identified by ‘password’;
  • Activeer de rechten — flush privileges;
  • Verlaat de MySQL-shell — exit;

Een back-uptaak inplannen

Je standaardwachtwoord voor mysqldump opslaan

Om mysqldump in een cronjob te draaien moet je een gebruikersnaam en wachtwoord in het MySQL-configuratiebestand zetten die het mysqldump-commando gebruikt. Anders kun je mysqldump niet zonder wachtwoord gebruiken.

  • Bewerk het MySQL-configuratiebestand — vi file /etc/my.cnf
  • Voeg de volgende regels onderaan het bestand toe — [mysqldump] user = mysql-user password = your-password

Een cronjob instellen om alle MySQL-databases te back-uppen

  • Begin met het bewerken van de crontab — crontab –e
  • Voeg een nieuwe regel toe die ons commando uitvoert. Dit eenvoudige commando back-upt elke dag om middernacht alle databases naar het bestand /root/sqldump.sql. — 0 0 * * * mysqldump –all-databases > /root/sqldump.sql

Alle databases back-uppen met een shellscript

Hieronder vind je een script waarmee je dagelijks met gzip gecomprimeerde back-ups van al je databases maakt. Je kunt dit script ook in crontab inplannen.

#!/bin/bash
### Create Directory with Date where Database backup will be stored. ####
month=$(date | awk ‘{print $2}’)
day=$(date | awk ‘{print $3}’ )
year=$(date | awk ‘{print $6}’)
foldername=$(echo $day$month$year”_backups”)
### List all the databases in /usr/local/dblist file. ####
mysql -u root -p’mysqlpassword’ -e ‘show databases’ >/usr/local/dblist
list=$(cat /usr/local/dblist)
echo $foldername
### Create Backup Directory in /Backup/mysqlbackup … ####
mkdir -p /Backup/mysqlbackup/$foldername
for i in $list
do
echo $i
mysqldump -u root -p’mysqlpassword’ $i | gzip > /Backup/mysqlbackup/$foldername/$i.sql.gz
echo ” “$i”.sql.gz file saved..”
done