UUGRN:Dienste/MySQL/backup

Aus UUGRN
< UUGRN:Dienste‎ | MySQL(Weitergeleitet von UUGRN:MySQL/backup)

Umfang[Bearbeiten]

Alle Schemata werden jeweils in einen MySQL-Dump geschrieben.

Zeiten[Bearbeiten]

  • täglich um 0:42 Uhr
  • Archiv für 3 Wochen

Restore[Bearbeiten]

ganzes Schema[Bearbeiten]

Ein Schema kann durch Einlesen des Dumps in ein bestehendes Schema wiederhergestellt werden. Dabei werden bestehende Tabellen überschrieben.

# mysql [...] zielschema < /pfad/zum/dump/schema

einzelne Tabelle(n)[Bearbeiten]

Soll nur eine Tabelle aus dem Backup geholt werden, so muss der gesamte Dump zunächst in ein leeres Schema eingelesen werden und anschließend die gewünschte Tabelle durch mysqldump | mysql in das Zielschema kopiert werden:

# mysqladmin [...] create tmp_restore01
# mysql [...]  tmp_restore01 < /pfad/zum/dump/schema
# mysqldump --opt [...] tmp_restore01 tabellenname | mysql -u root ... zielschema 
# mysqladmin [...] drop tmp_restore01


Backup-Script[Bearbeiten]

UUGRN:MySQL wird täglich um 0:42 Uhr mit folgendem Script gesichert und 3 Wochen lang archiviert:

#! /bin/sh
#
#
# Datenbanken einzeln dumpen
#

DBSERVER=localhost
DBAUTH="-u root -p********"

cd -P /data/backup/mysql/

DIR="./$(date +%Y%m%d)"
mkdir -p "$DIR" || exit 1

echo "$(date): $0: Dumping MySQL Databases: start"
echo "show databases;" | /usr/local/bin/mysql ${DBAUTH} -h ${DBSERVER} | tail -n +2 |
while read DB; do
  NOW=$(date +%Y%m%d%H%M%S)
  FILE="${DIR}/${DB}.${NOW}.dump"
  echo "$(date): $0: Dumping mysql://${DBSERVER}/${DB} to ${FILE} ..."
  /usr/local/bin/mysqldump --opt ${DBAUTH}  -h ${DBSERVER} "${DB}" > "${FILE}" 2>"${FILE}.err"
done

# Symlink setzen
rm latest; 
ln -svf ${DIR} latest

echo "$(date): $0: Dumping MySQL Databases: all done"

# 3 Wochen Tagessicherungen aufheben
echo "$(date): $0: delete old backups: start"
( ls -1d 200?????/ | sort -rn  | tail -n +22 | while read dir; do echo "./${dir}/*" ; rm -Rvf ./$dir; done ) 1>/dev/null
echo "$(date): $0: delete old backups: done"