UUGRN:Dienste/MySQL/backup
Aus UUGRN
< UUGRN:Dienste | MySQL
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"