Back up....

Door WHiZZi op maandag 6 oktober 2008 10:05 - Reacties (14)
Categorie: Linux, Views: 4.740

Wat doe je als geek als je huwelijk niet zo goed gaat? Nou, je gaat bedenken dat een backup toch wel handig zou zijn en zo bedenk je je ook weer dat je backup op je live webserver eigenlijk niet zo goed is geregeld.

Helemaal omdat ik gisteren een telefoontje ontving dat ik een extra uplink ga krijgen en of ik even een "bonding" wil maken op mijn Debian server. Een wattes? Een bonding.. Ik vond het wel boeiend klinken (hahaaa!) maar het blijkt dus een failover systeem te zijn zodat als één van de uplinks down zou gaan, er automagisch overgestapt wordt op de 2e netwerk interface. Na het nodige Google werk bleek het allemaal eenvoudig en snel te kunnen. Ik heb uiteraard gekozen voor failover. Via een aantal simpele commando's kreeg ik een bonding van eth0 en eth1:

# aptitude install ifenslave-2.6
# modprobe bond0
# nano -w /etc/modprobe.d/aliases-bond


In dat bestand staat dus:

code:
1
2
alias bond0 bonding
options bond0 mode=1 arp_interval=2000 arp_ip_target=84.243.x.x miimon=100 downdelay=200 updelay=200


Waarbij 82.243.x.x dus in mijn geval het IP van de gateway is. Vervolgens pas je de /etc/network/interfaces aan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
auto lo
iface lo inet loopback

auto bond0
iface bond0 inet static
pre-up modprobe bond0
hwaddress ether XX:XX:XX:XX:XX:XX
address 84.243.x.x
netmask 255.255.255.0
gateway 84.243.x.x
dns-nameserver 208.67.222.222 208.67.220.220
up ifenslave bond0 eth0 eth1
down ifenslave -d bond0 eth0 eth1

iface bond0:0 inet static
  address 84.243.x.x
  netmask 255.255.255.0



Geef bij hwaddress het macadres van je primaire interface op (eth0) en haal verder alles uit je interfaces (dus geen verwijzingen meer naar eth0 en eth1). Nadat ik "fingers crossed" hield en een /etc/init.d/network restart uitvoerde kwam alles weer keurig online. Ook nadat ik erachter kwam dat ook de iptables regels aangepast moeten worden (overal waar eth0 staat moet dus een bond0 staan) werkt alles nu en heb ik live een failover systeem gemaakt zonder noemenswaardige downtime. De machine was weer back up! ;)

Maargoed, terugkomend op het backup verhaal. Tijdens dit uitzoeken bedacht ik mij dat het wel eens mis zou kunnen gaan met die server. Gezien daar behoorlijk wat informatie op staat en o.a. ook mijn complete mailbox (via imap) zou het best een ramp zijn als die server besluit dat beide HDD's dood zouden gaan (staat wel in RAID1). Het backup script wat ik nu heb en wat al tijden draait is als volgt:
- 1) Maak tar.gz van webroot (/home/websites)
- 2) Maak een gzip van mysqldump alle databases
- 3) Verwijder backup ouder dan 1 week en indien dag==zondag maak een archief backup
- 4) Done!

Oftewel, als mijn HDD's zouden failen is het afgelopen. Die backup blijft namelijk op de server hangen. Het script is al wel gebouwd om de dailybackup te uploaden via FTP maar gezien dat dus dagelijks een 4GB is vond mijn hosting provider dat niet tof. Wat is de oplossing in dit geval :? Rsync!

Ik heb dus gisteren een mooi backup rsync script gemaakt wat ik jullie uiteraard wil delen. Deze runt vanaf de server en synct via ssh met mijn server thuis (wederom een RAID1 machine) de belangrijkste data. Mocht de server dus volledig overlijden, heb ik in ieder geval de belangrijkste data nog. Dus iedere geek die dit leest (of hij nu huwelijksproblemen heeft of niet), maak remote backups! :)

Het script wat ik jullie beloofd heb wat je misschien eens nodig hebt :) :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
SYNC="/usr/bin/rsync -av --delete -e /usr/bin/ssh --delete-excluded --exclude-from=/opt/scripts/backup/.exclude"

echo "Sync of /home/websites"
$SYNC /home/websites user@homeserver.domein.tld:/home/backup/

echo "Sync of Email"
$SYNC /home/vpopmail/domains/domain.tld/mailbox user@homeserver.domein.tld:/home/backup/

echo "Sync of Configuration"
$SYNC /etc user@homeserver.domein.tld:/home/backup/

echo "Sync of MySQL"
$SYNC /var/lib/mysql user@homeserver.domein.tld:/home/backup/