Avatar billede blackunicorn Nybegynder
04. november 2014 - 17:15 Der er 7 kommentarer og
1 løsning

Database backup

Jeg har lavet et lille script jeg kan køre som cronjob.
Det skal lave en backup af databasen og dumpe filen.

Det generer filen, men når jeg åbner den er den tom.
Er der nogen der har et bud på hvad der går galt ?

<?php

require_once("connect.php");

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$backupFile = 'database_backup_'.date("YmdHis").'.sql';
$command = "mysqldump $dbname --password=$password --user=$username --single-transaction >".$backupFile;
system($command);

$conn->close();
?>
Avatar billede arne_v Ekspert
04. november 2014 - 17:22 #1
Hvorfor ikke koere mysqldump direkte som cronjob?
Avatar billede blackunicorn Nybegynder
04. november 2014 - 18:37 #2
Fordi jeg ikke har den mulighed for det på den webserver jeg benytter.

Gigahost.dk

Se screendump her

https://www.dropbox.com/s/tlyqm2vr86kp7rs/cron.png?dl=0
Avatar billede arne_v Ekspert
05. november 2014 - 01:55 #3
OK.

Det er jo svaert at sige udfra de foreliggende oplysninger.

Men start med at lave:

echo $command;

og se om den ser rigtig ud.

Derefter skal der nok fokuseres paa hvor output filen forsoeges lagt og om der er skrive adgang der.
Avatar billede olsensweb.dk Ekspert
05. november 2014 - 15:43 #4
http://www.webmasterworld.com/php/3055017.htm
[citat]
OK - problem solved -

Seems the "$path_to_mysqldump" has to be in there too.

This code works fine now on my local machine :

$fish= "$path_to_mysqldump\\mysqldump.exe --u $db_user --ignore-table=$db.$config $db > $filename ";

exec($fish);
You would need --p=$passwd after User (if it was set)
[/citat]


sådan skal jeg gøre på min localhost
backup.php

<?php
exec('C:\util\xampp\mysql\bin\mysqldump.exe --databases postnummer --user=root  > C:\temp\.mychat.sql');
?>

env: XAMPP V3.2.1, OS=win7 32 bit
Avatar billede repox Seniormester
06. november 2014 - 09:03 #5
Det er ikke sikkert at du har adgang med www brugeren til at eksekvere mysqldump.

Umiddelbart forstår jeg ikke hvorfor du åbner en forbindelse med med PHP inden du eksekverer?

Anyhuu, du kan - som nævnt - forsøge med absolutte stier til mysqldump. Gigahost kører Linux, så det er sikkert Debian eller Ubuntu og for begge systemer gælder det at hvis det er en standardpakke installation af MySQL, så er mysqldump at finde på /usr/bin/mysqldump

Så det du kan gøre er at prøve at skrive:

<?php

$res = `/usr/bin/mysqldump-u brugernavn -pkodeord -h servernavn databasenavn > /sti/til/dump.sql ;

Og eventuelt se hvad resultatet af $res er.`
Avatar billede leif Seniormester
06. november 2014 - 17:01 #6
Hvis du ikke har adgang til mysqldump som jeg vil tro du ikke har, så kig på: http://davidwalsh.name/backup-mysql-database-php (ikke testet)
Avatar billede blackunicorn Nybegynder
08. november 2014 - 08:24 #7
Tak for linket leif, det virker perfekt :)
Skriv et svar så skal du få point.

Og selvfølgelig også tak til jer andre for jeres hjælp :)
Avatar billede leif Seniormester
12. november 2014 - 17:12 #8
Svar.
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

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