mysqldump: Skript für cronjobs

Einrichtung bzw. Problembehebung *Datenbanken (MySQL)
Antworten
localhorst
Beiträge: 571
Registriert: 17.12.2012, 20:19

mysqldump: Skript für cronjobs

Beitrag von localhorst »

Code: Alles auswählen

#!/bin/bash

DB_USER="Backup" #Erforderliche DB-Rechte: SELECT, PROCESS, SHOW DATABASES, LOCK TABLES, EVENT, SHOW VIEW, EXECUTE
DB_PASSWD="geheim"
DUMPPATH=/private-backup/srv/mysqldump/
DATABASES=($(mysql --user=${DB_USER} --password=${DB_PASSWD} --execute="SHOW DATABASES")) # Alle vorhandenen DBs ermitteln und in ein Array überführen.
MYSQL_OPTS=""

if ! [ -d ${DUMPPATH} ]; then mkdir -p ${DUMPPATH}; fi

for ((i=1;i<${#DATABASES[@]};i+=1)); do
	if [ ${DATABASES[$i]} == "information_schema" ]; then MYSQL_OPTS="--skip-lock-tables"; fi
	if [ ${DATABASES[$i]} == "mysql" ]; then MYSQL_OPTS="--events"; fi
    if [ ${DATABASES[$i]} == "performance_schema" ]; then MYSQL_OPTS="--skip-lock-tables"; fi
	mkfifo ${DUMPPATH}pipe_mysqldump
	gzip -9 -c < ${DUMPPATH}pipe_mysqldump > ${DUMPPATH}${DATABASES[${i}]}.gz &
	mysqldump --opt --routines --triggers --user=${DB_USER} --password=${DB_PASSWD} --databases ${DATABASES[${i}]} ${MYSQL_OPTS} > ${DUMPPATH}pipe_mysqldump
	rm ${DUMPPATH}pipe_mysqldump
	MYSQL_OPTS=""
done

Antworten