28. januar 2004 - 23:19Der er
25 kommentarer og 1 løsning
Backup af MySQL-db
Vi har i et stykke tid i god tro kørt backup af MySQL-db med et prog. der blot kopierede database-filerne. Men, selvfølgelig virker det ikke, da disse filer er i brug hele tiden. Så nu vil vi gerne høre hvad der findes af programmer til at foretage en automatisk backup af en MySQL-db?
// Execute mysqldump command. // It will produce a file named $db-$year$month$day-$hour$min.gz // under $DOCUMENT_ROOT/$backupdir system(sprintf( 'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/%s/%s-%s%s%s-%s%s.gz', $host, $user, $pass, $db, getenv('DOCUMENT_ROOT'), $backupdir, $db, $year, $month, $day, $hour, $min )); echo '+DONE'; ?>
If you are not allowed cron access on the web server, you can set up your own cron job to periodically call the above script. If you don't have cron, or a similar functionality on your system, you can still modify the above script to inform the browser to reget the file every xxx hours. A poor man's cron, so to say ;-)
Of course, the $backupdir should at least be protected with a .htaccess file.
And of course, you are not going to backup a really large database this way, if your PHP has some timeout set (as is usually the case with web hosters).
Er der ikke nogle der kan komme med en grundig forklaring på hvordan man sætter sådan noget op hvis det er? Og hvor store db'er er det hensigtsmæssigt at benytte dette til?
Jeg ville gerne køre en automatisk backup, således at jeg ikke selv skal en og køre den, men at den kører hver dag kl. 2 f.eks. Pt. er databasen på ca. 60 MB - og forventer slet ikke 3 cifrede GB eller TB :-)
Så laver du en BAT fil med mysqldump kommandoen og sætter scheduleren til at køre den en gang i døgnet på et bestemt tidspunkt (control panel, scehduled tasks, add etc.).
Dumpen kan både være større og mindre end databasen (der er overhead ved INSERT SQL sætninger sammenlignet med rå data, der er overhead i databasen til index, beskrivelser etc.).
60->3 lyder dog voldsomt.
Men prøv da og check om alle data er der. Evt. ved at indlæse dumpen i en anden database og checke indholdet.
Dette er hvad sql-filen nu indeholder: Usage: c:\mysql\bin\mysqldump [OPTIONS] database [tables] OR c:\mysql\bin\mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR c:\mysql\bin\mysqldump [OPTIONS] --all-databases [OPTIONS] For more options, use c:\mysql\bin\mysqldump --help
Hvordan skal den kode se ud? Er der noget galt i at følgende er det ENESTE indhold i bat-filen: c:\mysql\bin\mysqldump --user=brugernavn --password=mitpass --lock-tables --all-databases > c:\databackup\databasebackup-%date%.sql;
Ah... :-) ikke noget semikolon til sidst... så virker det vidst...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.