12. februar 2007 - 17:24Der er
15 kommentarer og 1 løsning
Mysql - automatisk backup
Kære eksperter,
Jeg vil gerne høre, hvorledes I tager backup af jeres databaser.
Mit webhotel henviser blot til, at jeg selv skal gøre det.
Jeg har taget backups manuelt via phpmyadmin indtil nu, men det er ikke altid man lige får det gjort, og det tager også tid.
Er der nogen måde, jeg kan sætte det op, så jeg får en automatisk backup (f.eks. kl. 3 om natten). Jeg har lige lært om cronjobs, og har det i brug ... ikke så svært ;-)
Måske kunne man bruge det, men så skal man jo også lave en php-kode, der laver selve dumpet.
Og hvordan med at opbevare backup'en? Skal den sendes afsted i en mail, eller hvordan gør I?
det kan være svært at gøre automatisk, hvis du ikke har lov til at oprette cron-jobs eller lignende på serveren (hvad du formentlig ikke har).
hvis det skal gøres automatisk, skal du have en anden server (eller pc), som kalder din php-backupkode (phpmyadmin direkte måske endda), hvor du har adgang til at opsætte jobs.
sth's løsning forudsætter det er en windows maskine, hvor du har adgang til at køre scriptet i Planlagte opgaver...
fsconsult.dk> jeg har adgang til cron-jobs (fra anden server), jeg havde forestillet mig, at dette kunne være løsningen. Er det "bare" at lave en tekst-fil med en masse sql-sætninger? Tænker på visse problemer: - brug af ' og " og \ ... osv - nogle af tabellerne er meget store og kan alligevel ikke indlæses i en tabel på én gang - i al fald ik via phpmyadmin (og der opstår nok også en timeout inden filen er helt dannet - det gør phpmyadmin :( ) - tekstfilerne skal zippes (kan php det?)
sth> det var en mulighed, men jeg ønsker ikke at køre backup'en fra min egen pc, da det skal foregå helt automatisk (og min pc står ikke åben konstant, kun når den bruges)
de fleste webhoteller (og mysql default), tillader ikke adgang til mysql fra andet end den server det er installeret på, men ville selvfølgelig være lettere hvis dit webhotel har åbnet for mysql adgang fra anden server.
i første omgang har du vel kun brug for at tage backup'en, og ikke indlæse dem igen over nettet? hvis du ikke kan få kalde phpmyadmin og downloade backup'en inden det timer ud, så kan det blive noget tricky at tage backup. jeg ville undersøge om du kan kalde mysql udefra, og så bruge mysqldump hvis det er muligt (selvom sandsynligheden nok ikke er stor)
fsconsult.dk> det er vel ikke så nødvendigt at have adgang fra anden server, når blot jeg bruger et cronjob, som peger på en php-backup-fil på mit webhotels server?
morw> jeg ved ikke lige så meget om mysqldump og hvordan det kaldes via php. Det ser ud til at jeg skal bruge en server()-funktion i php, når jeg lige hurtigt tager en søg på Google, men det må jeg prøve mig frem med:)
lone> hvis du skal bruge mysqldump fra en anden server, SÅ skal du have direkte adgang til mysql på serveren, men hvis du kalder et php-script på webhotellet, som laver backupen (uden det timer ud), så har du ganske rigtigt ikke brug for det.
mysqldump er et program du kan køre fra en shell promt hvis du har ssh adgang til en server.
Prøv at logge ind via ssh og skriv telnet din-mysqlserver.ip 3306
Hvis der er hul igennem har dit webhotel åbent for mysql udefra.
Derefter sætter du så bare mysqldump op i et cronjob - ingen grund til at blande php ind i det.
Hvis der ikke er hul igennem udefra kan du alt efter hvordan dit webhotel har sat safemode op, prøve at kalde mysqldump direkte gennem exec() i php og sørge for at outputtet bliver gemt i web-roden og så herfter bruge wget fra en remote server til at hente det over.
Ok, jeg må ærlig talt sige, at jeg ikke aner, hvad du snakker om. Jeg skal have det i et sprog, så enhver kan forstå det. Kender ikke til meget ud over php.
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.