Backup-Script für MySQL unter Linux und Windows

mkr

Registered User
Hallo!

Häufig will man alle Datenbanken auf einem Server sichern. Das geht mit der Option "--all-databases" von mysqldump. Dabei werden jedoch alle Datenbanken in den gleichen Dump gespeichert, was bei einem Restore sehr mühsam sein kann.

Deshalb habe ich für Linux (Shellscript) und Windows (Windows Scripting Host) je ein Script geschrieben, welches jede Datenbank in eine seperate Datei speichert.

Die Linux-Variante:
Code:
#!/bin/sh
# Backupscript fuer MySQL

USER=root
PASSWD=geheim
BACKUPDIR=/backup/mysql
DATABASES=`mysql -u$USER -p$PASSWD -e"show databases"`

for DATABASE in $DATABASES
do
if [ $DATABASE != "Database" ]; then
mysqldump -u$USER -p$PASSWD $DATABASE > $BACKUPDIR/$DATABASE"_dump"
fi
done

Die Windows-Variante:
Code:
'MySQL Backup Script
'sichert alle vorhandenen MySQL-Datenbanken in einzelne Dateien
'ausführen mit "cscript mysql_backup.vbs"

'Konfiguration
server = "127.0.0.1"
user = "root"
pw = "geheim"
mysql = "c:\programme\mysql\bin\mysql.exe"
mysqldump = "c:\programme\mysql\bin\mysqldump.exe"
backupdir = "c:\backup\mysql\"

'ab hier nichts mehr ändern
Set objShell = CreateObject("WScript.Shell")

'Datenbanken auflisten
'WScript.Echo mysql & " --host=" & server & " -u" & user & " -p" & pw & " -e""SHOW DATABASES"""
Set objWshScriptExec = objShell.Exec(mysql & " --host=" & server & " -u" & user & " -p" & pw & " -e""SHOW DATABASES""")
Set objStdOut = objWshScriptExec.StdOut

Do Until objStdOut.AtEndOfStream
db = objStdOut.ReadLine

If db <> "Database" Then
dateiname = db & "_dump.txt"
WScript.Echo "sichere Datenbank " & db & " nach " & backupdir & dateiname
objShell.Run(mysqldump & " --host=" & server & " -u" & user & " -p" & pw & " --result-file=" & backupdir & dateiname & " " & db)
End If
Loop

Sollte selbsterklärend sein. Vielleicht kann es ja jemand brauchen.
 
Back
Top