PDA

Bekijk Volledige Versie : MYSQL Backup Script + FTP



YourWebSolution
14/02/10, 14:54
Heren,

Wellicht is dit nog wel eens makkelijk, onderstaande is zelf in elkaar gezet.
Onderstaand script maakt een backup van alle databases, en upload deze via FTP naar een andere server. Backups worden 3 dagen lokaal bewaard.

Hiervoor heb ik een apparte mysql user aangemaakt, met global privileges:
- Select
- Show View
- Show Databases
- Lock Tables

Mocht iemand er iets aan hebben, veel plezier ermee! :thumbup:

mysqluser=
mysqlpass=
mysql_backup=/export/backups/mysql
mysqldump=/usr/bin/mysqldump
mysql=/usr/bin/mysql
gzip=/usr/bin/gzip
ftp_host=
ftp_user=
ftp_password=
ftp_remote=/backup/

# MYSQL Database Backup
databases=`echo show databases |$mysql -u$mysqluser -p$mysqlpass | tail -n +2`
for database in $databases; do
filename=$mysql_backup/`date +%Y-%m-%d`-$database.sql.gz
$mysqldump --user=$mysqluser --password=$mysqlpass --opt $database |$gzip >$filename | ncftpput -u $ftp_user -p $ftp_password $ftp_host $ftp_remote $filename
done

#DATA Cleanup
rm -f `find $mysql_backup -type f -mtime +2 -print`

exit 0

mikeh
14/02/10, 22:05
Niet echt handig met grote databases imho, en zowieso is het netter om je paden in /etc/default/$name te zetten en deze te sourcen. En ook een check of je als user $bla (of debian-sys-maint als je debian gebruikt) in kunt loggen op mysql (iets 1 en 0's als exits) en of de ftp server wel available is voor die user/passwd etc etc..... Persoonlijk zou ik ssh gebruiken voor dataoverdracht.

Je zou eens naar offsite-backup moeten kijken :-)

Alaaf.

t.bloo
15/02/10, 20:46
mysql ... | tail -n +2

creatief... het kan eventueel ook rechtstreeks


mysql ... --skip-column-names

YourWebSolution
16/02/10, 08:48
Niet echt handig met grote databases imho, en zowieso is het netter om je paden in /etc/default/$name te zetten en deze te sourcen. En ook een check of je als user $bla (of debian-sys-maint als je debian gebruikt) in kunt loggen op mysql (iets 1 en 0's als exits) en of de ftp server wel available is voor die user/passwd etc etc..... Persoonlijk zou ik ssh gebruiken voor dataoverdracht.

Je zou eens naar offsite-backup moeten kijken :-)

Alaaf.

Voor het doel dat ik hier mee voor ogen heb is dit prima! De backup word via het interne netwerk opgeslagen, in deze situatie is ssh niet direct nodig, maar zou wel kunnen natuurlijk.
De grootste database die ik op dit moment draai is nog geen 25MB, hierin voorzie ik ook nog geen problemen.
Ik de algemene voorwaaren staat expliciet dat de klant zelf verantwoordelijk is, zie dit in dit geval als een extra service..


creatief... het kan eventueel ook rechtstreeks


mysql ... --skip-column-names

Met een stukje creativiteit komen we een heel eind zullen we maar zeggen...
dit scriptje is aangepast vanuit een mysql3 omgeving, hierin moest wel gewerkt worden met tail... Eigenlijk nooit gekeken voor een andere oplossing:rolleyes:

mikeh
19/02/10, 22:01
Ik de algemene voorwaaren staat expliciet dat de klant zelf verantwoordelijk is, zie dit in dit geval als een extra service..


Wat heeft dit met de functionaliteit van je script te maken ? :bored:

WH-Tim
20/02/10, 00:14
Wat heeft dit met de functionaliteit van je script te maken ? :bored:

Heel erg veel. Want als het niets oplevert ga je er ook geen uren werk in steken. Zo gaat dat nou eenmaal als je hard genoeg groeit met je bedrijf.