/vz/private , /vz/root , backup und mount [message #38411] |
Thu, 17 December 2009 14:45 ![Go to next message Go to next message](/theme/ovz3/images/down.png) |
SchnickSchnack
Messages: 2 Registered: December 2009
|
Junior Member |
|
|
Hallo Gruppe,
ich habe die Administration einiger OpenVZ Systeme übernommen. Da in einer VE eine große Datenbank angelegt werden muss, mache ich momentan ein paar Tests mit dem mounten eines externen Volumes in eine VE. Hier mal ein paar Fakten:
1. In einer VE wird ein Volume gemountet. In der VE zeigt mount folgendes an:
/dev/sdb1 on /storage/db
Vom Host aus betrachtet sieht das so aus:
/dev/sdb1 on /var/lib/vz/root/340/storage/db
2.
Das Backup der relevanten Daten in den VEs wird bisher von dem Host aus gemacht. Dazu wird /vz/private/340/... mittels tar und gz auf unser Backupsystem kopiert.
3.
Mit dem Backupskript kann ich allerdings nicht den Inhalt des gemounteten Volumes sichern. Das erscheint leer.
Nun die Fragen:
Kann ich direkt vom Host aus sichern, also unter Umgehung der VE (/vz/root/VE) oder gibt das Konflikte?
Gibt es eine schon bekannte Best Practice, wie man in so einem Fall vor geht?
Danke und viele Grüße
Michael
|
|
|
|
|
Re: /vz/private , /vz/root , backup und mount [message #39037 is a reply to message #38411] |
Fri, 05 March 2010 10:08 ![Go to previous message Go to previous message](/theme/ovz3/images/up.png) |
TheStig
Messages: 94 Registered: December 2008
|
Member |
|
|
Hm... ich mounte meine LVMs/Partitionen/Festplatten immer zuerst in der HN ein und dann stelle sie dann per mount --bind einem VPS zur Verfügung. Auf die Art und Weise steigt auch tar in diese Verzeichnisse ab (zumindest bei mir . Allerdings benutze ich das so nicht aktiv - sondern archiviere immer einzelne (Web-)Anwendungen bzw. deren MySQL-DBs. Dazu verwende ich ein Script, dass per vzctl exec VEID mysqldump zuerst einen (in der virtuellen Maschine) lokalen Dump erzeugt und diesen dann von der HN "weiterschickt".
Mein Script arbeitet da ungefähr wie folgt:
config-Part:
#define database source: res_mysql="[declare as mysql] [where to store] [dbase_name] [dbuser] [dbpasswd] [(if_db_in_VZ)VZID]"
# the name of the array has to start with "res"
res_customer1database="mysql www_myapp_net /var/backup/local/ bkupuser securepasswd 144"
Das Backup-Script lädt dass dann ungefähr folgend:
source $configfile
date1=`date +%Y.%m.%d`
errlog="/var/log/wherever/"
vzctl="/usr/sbin/vzctl"
#### mysqldump function
_dump() {
# check for backup dir
if [ ! -d $2/$5/ ] ; then mkdir -p $2/$5 ; fi
# check if to use inside a VPS
case $# in
# dump locally
4 ) cd $2 && mysqldump -u $3 -p$4 $1 > $1.$date1.sql && \
tar Pczf $1.$date1.sql.tar.gz $1.$date1.sql && rm -rf $1.$date1.sql 2>> $errlog ;;
# dump inside VPS
5 ) $vzctl exec $5 "if [ ! -d $2 ] ; then mkdir -p $2 ; fi && cd $2 && \
mysqldump -u $3 -p$4 $1 > $1.$date1.sql && \
tar Pczf $1.$date1.sql.tar.gz $2/$1.$date1.sql && rm -rf $2/$1.$date1.sql" 2>> $errlog
# now for example move from VPS to backup device
mv /vz/root/$5/$2/$1.$date1.sql.tar.gz $2/$5
;;
esac
Mein Backup-Verzeichnis wird per rsync (read only) freigegeben und der Backup-Server ist für den automatischen Abgleich zuständig.
Damit der obere Code-Teil funktioniert muss der Inhalt der Config noch an die dump-Funktion weitergegeben werden. Das mach ich so:
#### call functions
k=${!res@}
for b in $k ; do
a=(${!b})
case ${a[0]} in
mysql ) _dump "${a[1]}" "${a[2]}" "${a[3]}" "${a[4]}" "${a[5]}" ;;
* ) _mailto "Don't know how to backup ${a[1]}" "ERROR" ;;
esac
done
Das ganze mach ich über case und Funktionen, weil mein Script noch andere Definitionen als "mysql" als Wert $0 des Arrays kennt, zb. vhosts, und diese dann über eine andere Funktion archiviert und zum Backup freigibt. Kann ich bei bedarf gerne nachliefern. ebenso die Funktion mailto, welche mich per eMail über Fehler informiert.
Außerdem hab lösche ich meine mehr als eine Woche alten Archive lokal (und via rsync --delete auch am Backup) mit
find $2/$5/ -mtime +7 -execdir rm -f '{}' \;
direkt im Backup-Script.
[Updated on: Fri, 05 March 2010 10:10] Report message to a moderator
|
|
|