Toon posts:

back-uppen database

Pagina: 1
Acties:

Verwijderd

Topicstarter
probleemdefinitie:

ik heb een database m.b.v. sequel server, deze database is via internet bereikbaar. Dus in principe altijd actief. Toch wil ik deze database kunnen back-uppen.

de vraag:
hoe kan ik dit het beste doen?

  • Zwelgje
  • Registratie: November 2000
  • Laatst online: 20-01 19:37
welke database heb je? (ja SQL maar dat zegt niet zoveel)
is ie van MS?

A wise man's life is based around fuck you


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 25-03 16:41

CmdrKeen

Krentenboltosti

Als je geld hebt: Backup Exec o.i.d.; iig 3rd party software die van je lopende db een backup kan maken. Anders zal 'm telkens tijdelijk inactief moeten maken.

Bloed, zweet & koffie


  • teigetjuh
  • Registratie: September 2000
  • Niet online
Je kan een dump maken en die backuppen. Voor een dump kan je db gewoon draaien, dus dat heeft geen impact...

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 02-05 23:49
Indien MySQL :
code:
1
mysqldump -u username -p databasename > file

de -p zorgt ervoor dat hij naar het paswoord vraagt van die user (-u)
File bevat dan de ganse inhoud van die database, inclusief tabelstructuur.
En om achteraf backup terug te zetten :
In MySQL de gewenste database terug aanmaken (als die nog niet bestaat) met :
code:
1
mysqladmin -u root -p create databasename

en vervolgens :
code:
1
mysql -u root -p < file

Let op de < en > !

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

Op maandag 21 januari 2002 19:54 schreef G8KeePeR het volgende:
Indien MySQL :
code:
1
mysqldump -u username -p databasename > file

de -p zorgt ervoor dat hij naar het paswoord vraagt van die user (-u)
File bevat dan de ganse inhoud van die database, inclusief tabelstructuur.
En om achteraf backup terug te zetten :
In MySQL de gewenste database terug aanmaken (als die nog niet bestaat) met :
code:
1
mysqladmin -u root -p create databasename

en vervolgens :
code:
1
mysql -u root -p < file

Let op de < en > !
Is dat ook voor een windows bak met MySQL, en phpmyadmin?

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 02-05 23:49
Op maandag 21 januari 2002 19:59 schreef drLiter het volgende:

[..]

Is dat ook voor een windows bak met MySQL, en phpmyadmin?
Normaalgezien moet dat ook lukken ja :)
Je moet maar eens zoeken waar de exe-filetjes staan van MySQL, mysql.exe (of .com whatever :) ) bestaat zeker (vroeger ook nog op windows gehad) De rest vermoed ik ook...
Eventueel al gewoon eens proberen of je ze niet kan intypen op de command-prompt hé, met een beetje geluk staat de dir in je zoekpad :)
Zonet even gekeken of ik die mysql-filetjes nog ergens staan had, en jawel :) (zitten in BIN dir van mysql)

Even een paar sleutelwoorden voor toekomstige search-users :) : mysql database backup back-up restore dump

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

Ik dank u feestelijk derhalve vriendelijk. :+

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 02-05 23:49
Op maandag 21 januari 2002 20:07 schreef drLiter het volgende:
Ik dank u feestelijk derhalve vriendelijk. :+
Graag gedaan !

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

Hmm, hoe backup ik alle dbases?

Ik wil nl. scrippie maken, dat ie om een bepaalde tijd mijn dbases back-upt, en vervolgens naar een FTP upload...

Dit werkte niet:
code:
1
mysqldump -u root -A > dbases

Hoe anders?

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 02-05 23:49
User EN Pass op commandolijn meegeven is
mysqldump / mysql of wat dan ook --user=username --password=hierpassword

mysqlshow toont alle databases
code:
1
2
3
4
5
6
7
8
9
10
11
USER="username"
PASS="paswoord"
mysqlshow --user=$USER --password=$PASS | {
  while read a dbnaam rest ;
    do 
    if [ $a != "+" -a $a != "Databases" ] ;
     then
     mysqldump --user=$USER --password=$PASS $dbnaam > $dbnaam
    fi
  done
}

Bovenstaand scriptje zou normaal alle databases moeten dumpen naar een filetje met dezelfde naam als de database
Wil je ze allemaal in 1
dan kan het met :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
USER="username"
PASS="paswoord"
FILE="filenaam"
[ -e $FILE ] && rm $FILE # zorgt ervoor dat bestaande file verwijdert wordt
mysqlshow --user=$USER --password=$PASS | {
  while read a dbnaam rest ;
    do 
    if [ $a != "+" -a $a != "Databases" ] ;
     then
     mysqldump --user=$USER --password=$PASS $dbnaam >> $FILE
    fi
  done
}

De test of de file bestaat is meestal wel niet voldoende omdat bestaan van een file natuurlijk niet wil zeggen dat hij ook nog kan verwijderd worden door de persoon, maar bijkomende tests moet je zelf maar doen ;)

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

Hmm, moet je dit in een Linux file flikkeren met #!/bin/sh
erboven? Of is t een php script? :P

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 02-05 23:49
Op dinsdag 22 januari 2002 07:31 schreef [Mike] het volgende:
Hmm, moet je dit in een Linux file flikkeren met #!/bin/sh
erboven? Of is t een php script? :P
Moet idd in een linux-filetje met eventueel #!/bin/bash voor

Als je wil, kan ik eens kijken of het me lukt om iets te schrijven om het uploaden te doen ook. Maar dat is zowieso maar pas voor morgenavond (nu even geen tijd => examens)

BTW, nu we toch bezig zijn, kan jij me misschien even code bezorgen voor zo'n icoon zoals het jouwe ?

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

Alternatieven:

Een tweede database in de lucht brengen en synchroniseren :-)
SQL plugin kopen voor CAI ArcServe, eh, brightstor of seagate's spul
mirroring toepassen.

Verwijderd

Op dinsdag 22 januari 2002 08:36 schreef G8KeePeR het volgende:

[..]

Moet idd in een linux-filetje met eventueel #!/bin/bash voor

Als je wil, kan ik eens kijken of het me lukt om iets te schrijven om het uploaden te doen ook. Maar dat is zowieso maar pas voor morgenavond (nu even geen tijd => examens)

BTW, nu we toch bezig zijn, kan jij me misschien even code bezorgen voor zo'n icoon zoals het jouwe ?
Met dat icon ben ik bezig met de oorspronkelijke maker (The_Surfer) om een MySQL verbinding ed te maken... Het is wel bijna klaar, dus nog ff geduld en dan kondigen we het aan ;)

Verwijderd

Dit gebruik ik voor mijn MySQL backup:
code:
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
# Backup the entire MySQL databases

DATE=`/bin/date +%w`
BASEDIR=/data/backup/mysql_local
FILE=$BASEDIR/db_$DATE
ALIAS=$BASEDIR/latest.sql.gz

rm -f FILE
/usr/bin/mysqldump -c -a -A --quote-names > $FILE
/bin/gzip -f $FILE
ln -sf $FILE.gz $ALIAS

Die opties zorgen ervoor dat je nadien je backup perfect kan restoren, vooral die --quote-names is al handig gebleken.

Als je een remote server wilt backuppen, dan voeg je -h servername toe en zorg je dus dat je access hebt om remote queries te doen.

Je mysql username en password zet je in ~/.my.cnf, in de volgende syntax:
code:
1
2
3
4
5
6
7
8
9
10
11
[mysql]
password    = xxxxx
user        = root

[mysqladmin]
password    = xxxxx
user        = root

[mysqldump]
password    = xxxxx
user        = root

Dan vraagt hij dus nooit je paswoord, maar neemt dat uit die file. Zorg wel dat die file chmod 600 is.

  • Steven
  • Registratie: December 2000
  • Laatst online: 15-04 10:17
* Steven gebruikt het volgende php script als Cron voor zijn backups:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$dag = date("D");
$dagnummer = date("w");
$vandaag = date("m.d.y"); 
$file = "/home/kkc/HTML/dbbu/$dag.sql";
exec("mysqldump --user=xxx --password=xxxxx kkc > $file");

$origineel = fopen($file, "r");
$backup = fread($origineel, filesize($file));
fclose($origineel); 

if ($dagnummer=="0")
{
        $onderwerp="Backup oudlln database van $vandaag";
        $van="Webmaster KKC oudleerlingen";
        $vanmail="xxx@keizerkarelcollege.nl";
        $mail="xxx@hotmail.com";
        mail("$mail", "$onderwerp", "$backup", "From: $van <$vanmail>");
}
?>

Verwijderd

Op dinsdag 22 januari 2002 16:10 schreef Steven_NL het volgende:
/me gebruikt het volgende php script als Cron voor zijn backups:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$dag = date("D");
$dagnummer = date("w");
$vandaag = date("m.d.y"); 
$file = "/home/kkc/HTML/dbbu/$dag.sql";
exec("mysqldump --user=xxx --password=xxxxx kkc > $file");

$origineel = fopen($file, "r");
$backup = fread($origineel, filesize($file));
fclose($origineel); 

if ($dagnummer=="0")
{
        $onderwerp="Backup oudlln database van $vandaag";
        $van="Webmaster KKC oudleerlingen";
        $vanmail="xxx@keizerkarelcollege.nl";
        $mail="xxx@hotmail.com";
        mail("$mail", "$onderwerp", "$backup", "From: $van <$vanmail>");
}
?>
PHP gebruiken voor een cronjob is echt een hele omweg hoor :) Je roept dus een shell commando (mysqldump) aan via een PHP script... dan gebruik je toch best bash en doet alles met shell commandos !

Als je de lijn
code:
1
echo "back has been made: $DATE" | mail user@isp.com

in mijn vorige code erbij zijt, heb je net hetzelfde als jouw PHP versie.

Wat wel een nadeel is: als je PHP gebruikt zit je vast en je max_execution_time in PHP. Als je daarover gaat, stopt je script er resoluut mee, en voor grate databases kan dat wel eens gebeuren. Die tijd staat standaard op 30, maar een goede webmaster zet die op 5 of zelfs op 2.

  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

uploaden met ftp ?? kun je dat niet beter met scp (ssh) doen ?? anders moet je ook weer ergens een bak opzetten met een ftp server ...

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


Verwijderd

Op dinsdag 22 januari 2002 20:23 schreef xychix het volgende:
uploaden met ftp ?? kun je dat niet beter met scp (ssh) doen ?? anders moet je ook weer ergens een bak opzetten met een ftp server ...
Dan gebruik je beter rsync over ssh (met scp dus), die gaat alleen nieuw dingen afhalen. Maar zo rauw de database files copieren zou ik niet doen, gebruik beter die mysqldump.

Verwijderd

Topicstarter
Ik wil iedereen even bedanken voor de replies.

BEDANKT!

  • Steven
  • Registratie: December 2000
  • Laatst online: 15-04 10:17
Op dinsdag 22 januari 2002 16:39 schreef c9melvin het volgende:

[..]

PHP gebruiken voor een cronjob is echt een hele omweg hoor :) Je roept dus een shell commando (mysqldump) aan via een PHP script... dan gebruik je toch best bash en doet alles met shell commandos !

Als je de lijn
code:
1
echo "back has been made: $DATE" | mail user@isp.com

in mijn vorige code erbij zijt, heb je net hetzelfde als jouw PHP versie.

Wat wel een nadeel is: als je PHP gebruikt zit je vast en je max_execution_time in PHP. Als je daarover gaat, stopt je script er resoluut mee, en voor grate databases kan dat wel eens gebeuren. Die tijd staat standaard op 30, maar een goede webmaster zet die op 5 of zelfs op 2.
* Steven fluisterd: Ik ben niet zo goed in Bash...
Pagina: 1