Backup und Restore
Die Sicherung einer Datenbank kann mit dem Befehl mysqldump
erfolgen.
Beim Wiederherstellen müssen neben der Datenbank noch Benutzer und dessen Rechte wiederhergestellt werden.
Backup-Benutzer erstellen
Zum Sichern der DBs sollte ein Benutzer verwendet werden, welcher die DBs nur lesen kann.
CREATE USER '<USERNAME>'@'localhost' IDENTIFIED BY '<PASSWORD>'; GRANT SELECT, SHOW VIEW, LOCK TABLES, RELOAD, PROCESS, TRIGGER, EXECUTE, REPLICATION CLIENT, EVENT ON *.* TO '<USERNAME>'@'localhost'; FLUSH PRIVILEGES;
Backup
Ein einfaches Backup einer Datenbanken kann wie folgt erstellt werden:
mysqldump -u<USERNAME> -p<PASSWORD> > <DB_NAME>.sql
für eine Bestimmte Datenbank einfach den Schalter -B <DATENBANKNAME>
hinzufügen.
Restore
Hier ein einfaches Script zum wiederherstellen der Datenbank und des entsprechenden Benutzers und aller Rechte für die wiederhergestellte Datenbank.
Es wird davon ausgegangen, dass sich der Dump im Verzeichnis /tmp
befindet. Den Pfad bei Bedarf einfach ändern.
#!/bin/bash SRCDIR="/tmp" read -p "Datenbankname? " DB_NAME read -p "Benutzername? " USER_NAME read -p "Passwort? " USER_PWD read -p "Hostname? " HOST_NAME echo "Erstelle Datenbank." mysql -uroot -p -e "create database ${DB_NAME};" echo echo "Stelle Sicherung für ${DB_NAME} wieder her." mysql -uroot -p -B ${DB_NAME} < ${SRCDIR}/${DB_NAME}.sql echo echo "Erstelle Benutzer ${USER_NAME}." mysql -uroot -p -e "create user '${USER_NAME}'@'${HOST_NAME}' identified by '${USER_PWD}';" echo echo "Setze Rechte für Datenbank ${DB_NAME} für Benutzer ${USER_NAME}." mysql -uroot -p -e "grant all privileges on ${DB_NAME}.* to '${USER_NAME}'@'${HOST_NAME}';" echo echo "Mache Benutzerrechte bekannt." mysql -uroot -p -e 'flush privileges;'