[GUIDE] Mysql, databasbackup via crontab

Almänna diskussioner, tips m.m. om virtualisering
Stefan
Inlägg: 179
Blev medlem: 25 jul 2007, 15:03

[GUIDE] Mysql, databasbackup via crontab

Inläggav Stefan » 08 apr 2008, 09:22

Det är en del som frågat hur man smidigt skapar filbackup på alla sina databaser, så här kommer en liten guide över hur man kan göra just detta.

1. Skapa katalog där du sparar dina backuper.

Kod: Markera allt

mkdir /usr/local/mysql_backup

2. Efter detta, skapa själva skriptet som skall köras varje natt.

Kod: Markera allt

nano -w /usr/local/mysql_backup/mysqlbackup

och i filen kopiera in följande

Kod: Markera allt

mysqldump -u root -p'lösenord' --all-databases > /usr/local/mysql_backup/mysqlbackup.sql

OBS! lösenordet skall stå direkt efter -p utan ' ' t.ex. mysqldump -u root -pspineless --all-databases

3. Gör filen körbar:

Kod: Markera allt

chmod 755 /usr/local/mysql_backup/mysqlbackup

4. och till sist lägg till skriptet i crontab.

Kod: Markera allt

crontab -e

lägg till:

Kod: Markera allt

59  23  *  *  *  /usr/local/mysql_backup/mysqlbackup

(körs då varje dag 23:59)
Mvh
Stefan, Servertekniker - support@glesys.se - http://glesys.se/
GleSYS Internet Services AB | Box 134 | 311 22 Falkenberg

Sven
Inlägg: 88
Blev medlem: 25 jul 2007, 14:11

Re: [GUIDE] Mysql, filbackup via crontab

Inläggav Sven » 28 sep 2008, 07:02

Ett litet mer avancerat skript som gör en backup per schema.
Det är bra om man har många scheman och bara vill återställa en av dom.

Spara filen som /usr/local/bin/mysqlbackup.sh

Anropa det med:

/usr/local/bin/mysqlbackup.sh root lösenord /root/mysqldumps/

Kod: Markera allt

#!/bin/sh
if [ -z $3 ]; then
        echo "Wrong syntax..."
        exit
fi
echo Dumping MySQL database to $3.
umask 077
rm $3/*
mkdir $3 &>/dev/null
cd $3
for i in `echo "SHOW DATABASES" |/usr/bin/mysql -s -u $1 -p$2`; do
        /usr/bin/mysqldump -f -u $1 -p$2 $i >$i.sql
        if [ $? -ne 0 ] ; then
                echo ERROR: Fail when dumping $i
        fi
done
du -sh $3
echo Databasedump done!

Nicke
Inlägg: 7
Blev medlem: 20 jun 2009, 19:09

Re: [GUIDE] Mysql, databasbackup via crontab

Inläggav Nicke » 20 jun 2009, 19:13

Jag skrev om det avancerade scriptet lite:

Kod: Markera allt

#!/bin/sh
if [ -z $3 ]; then
        echo "Wrong syntax..."
        exit
fi
echo Checking and dumping MySQL database to $3.
umask 077
rm $3/* &>/dev/null
mkdir $3 &>/dev/null
cd $3
echo Running mysqlcheck...
mysqlcheck -Araos -u $1 -p$2
echo Mysqlcheck done!
echo Dumping database...
for i in `echo "SHOW DATABASES" |/usr/bin/mysql -s -u $1 -p$2`; do
        /usr/bin/mysqldump -f -u $1 -p$2 $i -c | bzip2 -cq9 > $i.sql.bz2
        if [ $? -ne 0 ] ; then
                echo ERROR: Fail when dumping $i
        fi
done
du -sh $3
echo Databasedump done!


Innan dumpning så körs några kontroller på dbn via "mysqlcheck -Araos":
A = alla databaser
r = reparera
a = analysera
o = optimera
s = silent (ingen output)

Varje .sql-fil packas till en .bz2-fil med bzip2.
Storleksskillnaden blir större på stora tabeller (med tex binärdata) förstås. :)

Sven
Inlägg: 88
Blev medlem: 25 jul 2007, 14:11

Re: [GUIDE] Mysql, databasbackup via crontab

Inläggav Sven » 01 jul 2009, 05:41

Lysande Nicke!! :)
Mvh
Sven, Internet Engineer - support@glesys.se - http://glesys.se/
GleSYS Internet Services AB | Box 134 | 311 22 Falkenberg

oscar
Inlägg: 1
Blev medlem: 10 sep 2007, 16:17

Re: [GUIDE] Mysql, databasbackup via crontab

Inläggav oscar » 23 sep 2009, 20:04

Jag har för mig att jag läst att det inte är rekommenderat att använda > för mysqldump, då Unicode/UTF-8 kan gå förlorad. Istället skulle man använda --result-file, någon som vet något mer om detta?

wdlinkoping
Inlägg: 24
Blev medlem: 26 mar 2010, 15:00

Re: [GUIDE] Mysql, databasbackup via crontab

Inläggav wdlinkoping » 08 mar 2011, 15:14

Hej,

Jag skulle behöve köra en mysql dump på alla databaser varje timma och helst få så att den packas ihop med ex, datum-tid.gz

hur är detta möjligt?

Vänligen,
Pontus Abrahamsson

Användarvisningsbild
Jonas
Inlägg: 117
Blev medlem: 17 aug 2009, 16:41
Ort: Stockholm

Re: [GUIDE] Mysql, databasbackup via crontab

Inläggav Jonas » 08 mar 2011, 15:47

Jag har moddat skriptet ovan. Helt otestat, men bär fungera:



#!/bin/sh
if [ -z $3 ]; then
echo "Wrong syntax..."
exit
fi
echo Checking and dumping MySQL database to $3.
umask 077
rm $3/* &>/dev/null
mkdir $3 &>/dev/null
cd $3
echo Running mysqlcheck...
mysqlcheck -Araos -u $1 -p$2
echo Mysqlcheck done!
echo Dumping database...
for i in `echo "SHOW DATABASES" |/usr/bin/mysql -s -u $1 -p$2`; do
/usr/bin/mysqldump -f -u $1 -p$2 $i -c | bzip2 -cq9 > $i-`date "+%Y-%d-%m_%H%m%S"`.sql.bz2
if [ $? -ne 0 ] ; then
echo ERROR: Fail when dumping $i
fi
done
du -sh $3
echo Databasedump done!

Jag la till:

`date "+%Y-%d-%m_%H%m%S"`

För att döpa filenera till klockslag. Kör skriptet från crontab varje timma.
Glöm inte att skriva en rensrutin då din disk kommer växa i all oändlighet annars.
Mvh
Jonas, Internet Engineer - support@glesys.se - http://glesys.se/
GleSYS Internet Services AB | Box 134 | 311 22 Falkenberg

Stefan
Inlägg: 179
Blev medlem: 25 jul 2007, 15:03

Re: [GUIDE] Mysql, databasbackup via crontab

Inläggav Stefan » 30 aug 2011, 12:15

Nicke skrev:Jag skrev om det avancerade scriptet lite:

Kod: Markera allt

#!/bin/sh
if [ -z $3 ]; then
        echo "Wrong syntax..."
        exit
fi
echo Checking and dumping MySQL database to $3.
umask 077
rm $3/* &>/dev/null
mkdir $3 &>/dev/null
cd $3
echo Running mysqlcheck...
mysqlcheck -Araos -u $1 -p$2
echo Mysqlcheck done!
echo Dumping database...
for i in `echo "SHOW DATABASES" |/usr/bin/mysql -s -u $1 -p$2`; do
        /usr/bin/mysqldump --single-transaction -f -u $1 -p$2 $i -c | bzip2 -cq9 > $i.sql.bz2
        if [ $? -ne 0 ] ; then
                echo ERROR: Fail when dumping $i
        fi
done
du -sh $3
echo Databasedump done!


Innan dumpning så körs några kontroller på dbn via "mysqlcheck -Araos":
A = alla databaser
r = reparera
a = analysera
o = optimera
s = silent (ingen output)

Varje .sql-fil packas till en .bz2-fil med bzip2.
Storleksskillnaden blir större på stora tabeller (med tex binärdata) förstås. :)


Jag editerade ovan kod med --single-transaction nyare operativsystem får ibland felmeddelande om det inte används
Mvh
Stefan, Servertekniker - support@glesys.se - http://glesys.se/
GleSYS Internet Services AB | Box 134 | 311 22 Falkenberg

Michael
Inlägg: 1
Blev medlem: 19 dec 2011, 16:11

Re: [GUIDE] Mysql, databasbackup via crontab

Inläggav Michael » 19 dec 2011, 16:17

Tänkte bara tipsa om detta projekt som är ett färdigt mysqldump script. Har kört det i några år, fungerar väldigt bra: http://sourceforge.net/projects/automysqlbackup/

Väljer man 'all' databaser så sorterar den upp databas för databas i mappar.
Sedan dag för dag, vecka för vecka, månad för månad etc. Dvs väldigt bra sortering.


Återgå till "Allmänt"

Vilka är online

Användare som besöker denna kategori: 1 och 0 gäst