[PHP/MySQL] Backup, alles geprobeerd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okee, eerst maar eens vertellen wat de bedoeling is. Ik heb een website gebouwd voor een bedrijf waar belangrijke informatie staat opgeslagen in de database. De database wijzigt dagelijks en het is belangrijk dat geen enkele informatie verloren gaat. Backuppen dus! Ik zou dagelijks PhpMyAdmin kunnen openen en export kunnen doen. Als dit dagelijks moet, is dat niet echt handig en volgens mij kan tegenwoordig alles geautomatiseerd worden ;)

Ik wil dus via een crontab een phpscript aanroepen die voor mij de backup emailt.

Mogelijkheden die ik geprobeerd heb:
1. mysqldump (datgene wat ik heb geprobeerd staat hieronder vermeld)
2. SELECT * INTO OUTFILE (krijg permission denied)
3. BACKUP TABLE (krijg permission denied)

Wat het vreemde is bij mysqldump. Wanneer ik deze aanroep via een crontab voert hij het wel uit en wordt de output wel opgeslagen in een file, maar wanneer ik het via php doe gebeurt er niks terwijl ik hetzelfde commando geef :S

/usr/bin/mysqldump of mysqldump maakt geen verschil

Ook bij mogelijkheden 2 en 3 heb ik me verbaasd aangezien de CHMOD gewoon goed staat voor de directories!

Ik ben alsurfende op dit forum ook nog deze mogelijkheid tegengekomen:
- CSV Mysql Backup of iets dergelijks, maar daarbij kreeg ik een brokenlink

Mogelijkheden waar ik zelf nog aan heb gedacht, maar waarbij ik gebrek heb aan kennis en het ook niet heb gevonden via google:
- shell script met daarin mysqldump en iets als sendmail
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<? 
$command="mysqldump --user=x --password=x --host=x -e --databases x x x x x > /path/to/backup/directory/test.sql"; 

// system 
print "a"; 
$result=system($command); 
print $result; 

// shell exec 
print "b"; 
$result=shell_exec($command); 
print $result; 

print "e"; 
$result=exec($command); 
print $result; 

require ("require/database.php"); 
mysql_select_db("x"); 
$result = mysql_list_tables("x"); 
    while ($array=mysql_fetch_array($result)) { 
    $query="SELECT * INTO OUTFILE '" . $array[0] . ".sql' FROM " . $array[0]; 
    print $query . "<br>"; 
    $exec_query=mysql_query($query) or die (mysql_error()); 

} 
?> 


Ik ben niet iemand die snel iets post omdat ik het altijd zelf altijd wel uitvinden, leer je ook meer van, maar nu ben ik zal ik maar zeggen ook ten einde raad!

[ Voor 9% gewijzigd door Verwijderd op 20-08-2003 13:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Hoi,

Maak een bestand aan, "backup" oid en voer het volgende in:

"mysqldump hierjedatabasenaam > database.sql --password=hiermijnpassword"

Vervolgens even chmod 700 backup en dan "backup" in een cron zetten en er wordt elke dag een backup van je database gemaakt.

Mvgr,

Jeroen

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Wat zegt je apache log wanneer je de file via het web aanroept. Welke error's krijge je allemaal? Wat zijn de rechten van mysqldump, staan deze op execute all.

Verder weet ik niet waarom je de output van je commando wil afvangen, aangezien er hier niet veel interessante informatie in zit. Oja er zijn in PW meer dan genoeg topics over mysqldump. http://search.gathering.t...=14&data%5Bsearch%5D=Zoek :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Shell script
code:
1
2
3
4
5
#!/bin/sh
/[path2file]/mysqldump --password=**** [databasenaam] > /home/userdir/backup/databasedump
/[path2file]/gzip /home/userdir/backup/databasedump
mutt mail@domain.nl -a /home/userdir/backup/databasedump.gz -s "Backup Habiforum" < /home/userdir/backup/body
rm /home/userdir/backup/databasedump.gz

body is een txt file met de mailbody

Dit script kan je in een cron zetten

[ Voor 8% gewijzigd door mocean op 20-08-2003 14:01 ]

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • eborn
  • Registratie: April 2000
  • Laatst online: 16-09 09:14
Waarschijnlijk roep je mysqldump in de cron van een andere dan de PHP user aan. Oftewel: de cron user zal wel genoeg rechten hebben om mysqldump te runnen en PHP niet. Maar als mysqldump via de crontab werkt, waarom zou je het dan nog via PHP willen doen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ripexx, jij hebt ongemerkt toch de oplossing gegeven voor het probleem.

'Verder weet ik niet waarom je de output van je commando wil afvangen, aangezien er hier niet veel interessante informatie in zit.'

IK kwam erachter dat ik het natuurlijk helemaal niet in een file wilde hebben, dit gebeurde ook helemaal niet, maar dat ik gewoon de output wilde afvangen.

Domme ik, maargoed, bedankt!
Pagina: 1