MySQL-Backup-Script

Bash, Shell, PHP, Python, Perl, CGI
buddha
Posts: 21
Joined: 2003-01-17 10:05
Location: hessen

MySQL-Backup-Script

Post by buddha »

Huhu hab da ein kleines problemchen :-)

Also folgendes hab ich so teilweise im netz gefunden

Anfangs ging es garnicht nun nicht vollständig

Code: Select all

#!/bin/sh
mysql_host="localhost"
mysql_rootpasswd="glaubstduecht?"
backupdir="/var/backup"
mysql_backupdir="${backupdir}/mysqldump"
mysql_dump="/usr/bin/mysqldump"
mysql_show="/usr/bin/mysqlshow"
##     1 = yes(xxxx-2001xxxx-xx.sql.gz)
##     0 = no
db_compress="1"
## not include list
not_dump_db=""

sysdtime=`date +%Y%m%d-%H`
mysql_connect="-h $mysql_host -u root -p$mysql_rootpasswd"
mysql_DBs="`$mysql_show $mysql_connect | grep -v '(${not_dump_db}|Databases|+)' | awk '{print $2}' 2>/dev/null`"

mysql_dump_work() {
	mysql_each_DB="$1"
	mysql_dump_file="${mysql_backupdir}/${mysql_each_DB}-${sysdtime}.sql"
	$mysql_dump $mysql_connect $mysql_each_DB > $mysql_dump_file
	if [ "$db_compress" = "1" ] ; then
		gzip -9 $mysql_dump_file
	fi
}

if [ "$mysql_DBs" != "" ] ; then

	if [ ! -d "$mysql_backupdir" ] ; then
		mkdir -p "$mysql_backupdir"
		chmod 700 "$mysql_backupdir"
	fi

	for mysql_DB in $mysql_DBs ; do
		mysql_dump_work $mysql_DB
	done

fi

exit 0
Databases und tabellen die ich noch in der Variable not_dump_db angebe werden nicht herausgefiltert :-/

mit egrep -v gings auch nicht :-(
cheops
Posts: 8
Joined: 2002-12-01 15:54

Re: MySQL-Backup-Script

Post by cheops »

Hi,

ich hab das mit folgender Zeile ans Laufen bekommen.

Code: Select all

mysql_DBs="`$mysql_show $mysql_connect | egrep -v "${not_dump_db}|Databases|+" | awk '{print $2}' 2>/dev/null`"
Die Databases in not_dump_db müssen durch | getrennt sein. Wenn die Variable not_dump_db nicht gefüllt ist fällt das Script beim grep wieder auf die Schnauze. Also falls du keine DB auslassen möchtest die Variable mit der anschliessenden Pipe aus dem grep entfernen.

Code: Select all

mysql_DBs="`$mysql_show $mysql_connect | egrep -v "Databases|+" | awk '{print $2}' 2>/dev/null`"

mfg
Martin
buddha
Posts: 21
Joined: 2003-01-17 10:05
Location: hessen

Re: MySQL-Backup-Script

Post by buddha »

ahh nun gehts :o

danke!!!
d.goersch
Posts: 54
Joined: 2002-06-23 20:31
Location: Viersen

Re: MySQL-Backup-Script

Post by d.goersch »

Hoi,
Cheops wrote:

Code: Select all

mysql_DBs="`$mysql_show $mysql_connect | egrep -v "${not_dump_db}|Databases|+" | awk '{print $2}' 2>/dev/null`"
Die Databases in not_dump_db müssen durch | getrennt sein. Wenn die Variable not_dump_db nicht gefüllt ist fällt das Script beim grep wieder auf die Schnauze. Also falls du keine DB auslassen möchtest die Variable mit der anschliessenden Pipe aus dem grep entfernen.

Code: Select all

mysql_DBs="`$mysql_show $mysql_connect | egrep -v "Databases|+" | awk '{print $2}' 2>/dev/null`"
Wenn man die Pipe hinter der Variable mit in diese üernimmt brauch man sie nicht löschen, man lässt sie entweder leer, oder schreibt etwas rein mit abschliessendem Pipe.
Wer möchte könnte auch noch eine kleine Abfrage schreiben, die wenn der Inhalt der Variable >0 ist, eine Pipe anhängt.

Halte ich für sauberer als eine Variable im Aufruf löschen zu müssen, nur weil man sie nicht nutzt.