Avatar billede dbmanager Nybegynder
11. august 2004 - 20:21 Der er 9 kommentarer og
1 løsning

Backup af MySQL, tager ikke alle databaserne

Hej Eksperter

Jeg har fået et lidt sjovt problem med en MySQL-server.
Hver nat nat kører vi en backupmed:
c:\mysql\bin\mysqldump --all-databases --u=root -ppassword > c:\mysql\data\backup.sql

Når man så checker indholdet af backup.sql, så indeholder den ikke alle databaserne, men kun del af den. Som om den ikke gider mere, når den når til f.eks. v

Outputfilen er på ca. 225 MB, godt nok en sjat, men alligevel.

Nogen forklaring/løsning?

Er der en måde, hvorpå jeg kan lave en eksport for hver database i sin egen fil, uden at liste alle databaserne vha. hver sin backup-kommando?
Avatar billede arne_v Ekspert
11. august 2004 - 20:39 #1
Det tror jeg ikke.

Men vil det være så svært at lave et script med en mysqldump per database ?
Avatar billede arne_v Ekspert
11. august 2004 - 20:54 #2
Du kan evt. autogenerere det script ved at lade et andet script lave
en SHOW DATABASES og outputte mysqldump linierne.
Avatar billede arne_v Ekspert
14. august 2004 - 14:07 #3
OK ?
Avatar billede dbmanager Nybegynder
14. august 2004 - 14:22 #4
Ja, for så vidt, men hvordan laver man sådan et script?
Avatar billede arne_v Ekspert
14. august 2004 - 15:09 #5
Nu ved jef jo ikke hvad du scripter i !

Men her er en PHP udgave:

<?php
header("Content-Type: text/plain");
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
$rs = mysql_query("SHOW DATABASES") or die(mysql_error());
while ($row = mysql_fetch_array($rs)) {
    print "mysqldump " . $row["0"] . " > " . $row["0"] . ".sql\n";
}
mysql_free_result($rs);
mysql_close($con);
?>
Avatar billede arne_v Ekspert
14. august 2004 - 15:09 #6
Du skal naturligvis tilrette connect og evt. mysqldump options.
Avatar billede arne_v Ekspert
22. august 2004 - 11:55 #7
OK ?
Avatar billede dbmanager Nybegynder
26. august 2004 - 10:21 #8
Takker for hjælpen.

Jeg har nu fået den til at lave en komplet bat-fil på skærmen, men hvordan får jeg den til at gemme det i en fil, som jeg så kan udføre vha. scheduleren?
Avatar billede arne_v Ekspert
26. august 2004 - 10:29 #9
Jeg har hørt at man kan køre et PHP script command line også - noget a la:

php foobar.php

men hvis det ikke kan lade sig gøre så brug en utility  som f.eks. wget til
at hente fra URL'en.
Avatar billede dbmanager Nybegynder
26. august 2004 - 11:15 #10
Jeg fandt ud af, at bruge fopen og fwrite til at danne en .bat-fil, og så kalde php-scriptet vha.:

d:\php\php.exe -q d:\website\danbackupfil.php

Jeg har så indsat det i scheduleren til at køre 5 min før jeg starter den dannede batfil.

Det kører bare som i olie

Takker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester