Multidesk.be » Forums » Webdevelopment & -scripting » automatische database backup

  • Pagina
  • [1]
  • 2
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door Simon op donderdag 15 januari 2009 om 21:25:06.
Simon's avatar
Multiviteit: 3742
Hoe kan ik zorgen dat mijn webruimte automatisch backups maakt van de database.
Ik werk met PHP en MySQl en de server ondersteunt cronjobs.

Ik vermoed dat ik met die cronjobs op bepaalde tijdstippen iets kan laten uitvoeren, bv. een pagina met een php-script. Maar hoe kan ik zorgen dat ik in dat script een backup maak van de database? Bestaat daar SQL-opdrachten voor?
Of zit ik op een volledig verkeerd spoor?
^ Reactie #1 geschreven door thekid op vrijdag 16 januari 2009 om 00:32:49.
thekid's avatar
Multiviteit: 5273
Moderator
ja, ge kunt nen dump doen van uwen database

ken er nu ook niet direct veel meer van :) (allé via cronjobs dan, hé)

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
Deze tekst werd het laatst bewerkt voor 60.73 % door thekid op vrijdag 16 januari 2009 om 00:33:37.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door Martijn op vrijdag 16 januari 2009 om 08:45:02.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Heel eenvoudig: mysqldump :-).

Ik zal proberen er vandaag een artikeltje (met werkend voorbeeld) over te maken, het gebruik ervan is echt niet zo heel erg moeilijk.
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #3 geschreven door Martijn op vrijdag 16 januari 2009 om 19:04:26.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Simon,

Ik ga het script vandaag helaas niet kunnen voltooien, maar ik zal je het gedeelte dat ik reeds heb geschreven via een Persoonlijk Bericht doorsturen. Ik hoop dit weekend de tekst te kunnen voltooien en dan dien ik hem hier in ;-).

Deze tekst werd het laatst bewerkt voor 30.04 % door Martijn op zaterdag 17 januari 2009 om 12:30:25.
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #4 geschreven door Simon op zondag 18 januari 2009 om 16:50:10.
Simon's avatar
Multiviteit: 3742
Zeer erg bedankt!

Ik heb hem nu, als test, ingesteld om op 17u een backup te maken. We zullen dadelijk zien of dit gelukt is?

Onderaan het artikel stond ook:

Dixit

Zo is het bijvoorbeeld niet altijd even verstandig om mysqldump te schedulen waarbij je de wachtwoorden rechtstreeks meegeeft; iedereen die ps aux uitvoert zal deze namelijk kunnen zien. Een meer elegantere oplossing is bijvoorbeeld het gebruik van een extern bestand om je wachtwoorden in op te slaan, in combinatie met de mysqldump optie -p.


Hoe moet ik dat dan precies doen? Ik zou toch graag hebben dat het wat veilig is. Ik ben niet echt thuis in command-lines enzo.
^ Reactie #5 geschreven door Martijn op zondag 18 januari 2009 om 19:01:23.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
En, is het gelukt? :-)

Het voorbeeld in het artikel dat werkt via een shell bestand is al iets veiliger, daar geef je namelijk geen wachtwoord rechtstreeks mee.
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #6 geschreven door Simon op zondag 18 januari 2009 om 20:37:13.
Simon's avatar
Multiviteit: 3742
Het ziet er niet naar uit dat het gelukt is :s. Volgens mij heb ik iets verkeerds gedaan in het pad naar de map waar het bestand terecht moet komen.

Dit is nu backups.sh (gebruikersnaam, wachtwoord en database_naam zijn natuurlijk met de juiste waarden ingevuld):
CODE
  1.  
  2. HuidigeDatum=`date +%Y-%m-%d`
  3. cd /backups
  4. mysqldump -Q -ugebruikersnaam -pwachtwoord -hlocalhost database_naam | gzip --best -c -f  > database_naam.$HuidigeDatum.gz


Ik had toen de cron ingesteld als in de afbeelding maar gewoon backup/backup.sh. Ik heb nu nog eens opnieuw geprobeerd met dit pad.
Bijlage: 71bf66dc453b66d277da2cde42a34bbf.jpg
^ Reactie #7 geschreven door Martijn op zondag 18 januari 2009 om 20:55:11.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Geef voor de zekerheid op regel 3 eens het volledige pad op.

Als dat niets helpt, voer dan het mysqldump commando (alleen, zonder nakomende gzip en de dump naar een bestand) eens uit aan een prompt. Lukt dat?
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #8 geschreven door Simon op woensdag 21 januari 2009 om 17:49:15.
Simon's avatar
Multiviteit: 3742
Het probleem is dat ik het volledige pad niet weet. De fout ligt waarschijnlijk wel bij het pad naar het shell bestand zelf (zie afbeelding).

Nu heb ik alles eens in een map onder de domeinnaam zelf gezet, dan kan ik er wel naar verwijzen door http://www.domein.be/map/backups.sh in te typen (hoop ik toch). Als dat werkt weet ik meteen dat het niet aan het bestand ligt. Maar dan zou ik wel een manier moeten vinden om het bestand niet onder de domeinnaam te plaatsen, maar onder de root van mijn account op de server. Anders kan iedereen de databasenaam, gebruiker en wachtwoord achterhalen en dat is niet de bedoeling natuurlijk.

Ik heb hem ingesteld op 18u, we zullen zien wat hij doet.
^ Reactie #9 geschreven door Martijn op woensdag 21 januari 2009 om 18:25:21.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Het zou mij verbazen als het op die manier werkt, dat mag normaal gewoon niet ;-).

Heb je geen "private" folder ofzoiets op je account?

Om terug te komen op je "initieel" probleem, kan je niet gewoon het pad opvragen via SSH? Heb je SSH-toegang tot je server? Zoja, gewoon even
CODE
  1. pwd
uitvoeren aan het prompt en je weet meteen wat je moet invullen ;-).

In PHP bestaan er ook genoeg manieren om zoiets te weten te komen (bijvoorbeeld echo dirname(__FILE__);, maar een PHP script maken om zoiets op te vragen lijkt mij vrij hard overkill (en zelfs niet uitvoerbaar wanneer je, zoals aan te raden, in een niet-publiek zichtbare map werkt) in deze situatie.
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #10 geschreven door Simon op woensdag 21 januari 2009 om 19:47:18.
Simon's avatar
Multiviteit: 3742
Ik dacht dat ik het juiste pad gevonden had. Als ik een file upload via de online file manager (dus niet via mijn ftp-client, krijg ik te zien onder welk pad het bestand zich bevindt. Dat is iets van /home/gebruikersnaam/domains/domein.be/bestand ook de pad van de doelmap is gelijkaardig en heb ik aangepast.
Helaas krijg ik weer geen backup in die map.

Ik heb inderdaad SSH-toegang, maar dat heb ik nog nooit gebruikt. Daar is ook een aparte client voor nodig als ik het goed heb?

Ik zou graag proberen om mysqldump enzo uit te voeren via een prompt, maar ik heb geen idee waar ik dat kan doen.
^ Reactie #11 geschreven door SMG op woensdag 21 januari 2009 om 20:06:49.
SMG's avatar
Multiviteit: 12000
Moderator
Als ge Linux of Mac hebt zou de ingebouwde command shell genoeg moeten zijn (voor Mac ben ik niet zeker maar aangezien dat dat ook Unix is)
Bij Windows hebt ge het programma Putty.

In linux is dat:
ssh gebruikersnaam@adres

vb
ssh smggm@madoka.isw.student.khleuven.be
Vervolgens zou gevraagd moeten worden achter wachtwoord en dan zijde binnen.
Deze tekst werd het laatst bewerkt voor 11.89 % door SMG op woensdag 21 januari 2009 om 20:08:06.
^ Reactie #12 geschreven door Simon op woensdag 21 januari 2009 om 20:36:23.
Simon's avatar
Multiviteit: 3742
Toevallig hebben we hier wel een iMac staan :). Zal het direct eens proberen.

**EDIT**
Ik kan aanloggen maar als ik mijn wachtwoord moet ingeven krijg ik
Permission denied, please try again.

Deze tekst werd het laatst bewerkt voor 44.4 % door Simon op woensdag 21 januari 2009 om 20:58:43.
^ Reactie #13 geschreven door Martijn op woensdag 21 januari 2009 om 20:56:52.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Putty downloaden is het eenvoudigste; bestaat zelfs een portable versie van. Gewoon openen, adres ingeven en op enter drukken ;-).

Wat bedoel je overigens met helaas krijg ik weer geen backup in die map? Welke foutmelding krijg je? Krijg je een output van de cronjob?
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #14 geschreven door Simon op woensdag 21 januari 2009 om 21:18:42.
Simon's avatar
Multiviteit: 3742
Ook in putty krijg ik acces denied. Daarvoor heb ik even contact opgenomen met de support.

Ik bedoel daarmee dat de backup niet aangemaakt wordt. Foutmeldingen heb ik nog nergens gezien of teruggevonden? Ik dacht dat ik die niet zou krijgen aangezien een cronjob automatisch uitgevoerd wordt.
^ Reactie #15 geschreven door Martijn op donderdag 22 januari 2009 om 11:02:40.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Access denied? Op wat? Bij het inloggen reeds?

Foutmeldingen kunnen, bij het uitvoeren van een cronjob, doorgestuurd worden naar een e-mailadres.
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #16 geschreven door Simon op donderdag 22 januari 2009 om 21:05:17.
Simon's avatar
Multiviteit: 3742
Ja, bij het inloggen al. Hij vraagt naar mijn gebruikersnaam die ik zonder problemen kan ingeven, maar mijn wanneer ik mijn wachtwoord geef zegt hij telkens "access denied".

Ik heb ingesteld dat ik een email wil ontvangen, maar dit wil niet werken.

Ik heb nu dit (het pad zou juist moeten zijn):
CODE
  1. HuidigeDatum=`date +%Y-%m-%d`
  2. cd /home/bellewae/domains/bellewaerde-walibi.be/backup
  3. mysqldump -Q -ugebruikersnaam -pwachtwoord -hlocalhost database_naam | gzip --best -c -f  > database_naam.$HuidigeDatum.gz
^ Reactie #17 geschreven door Martijn op donderdag 22 januari 2009 om 21:28:45.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
die map backup, bestaat die effectief; en zoja, is die writable? Kan je hier, bijvoorbeeld, aan vanuit je FTP client?

Probeer eens zonder het gzip stuk erbij te voegen; krijg je dan wel files te zien?
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #18 geschreven door Simon op zaterdag 24 januari 2009 om 18:59:15.
Simon's avatar
Multiviteit: 3742
De map bestaat en is zeker writable en ook te bekijken via de FTP client.

Ik heb nog eens gepbrobeerd met dit, maar ik krijg nog steeds geen bestanden te zien. Wat kan ik nu nog meer fout gedaan hebben?
CODE
  1. HuidigeDatum=`date +%Y-%m-%d`
  2. cd /home/bellewae/domains/bellewaerde-walibi.be/backup
  3.  
  4. #mysqldump -Q -unaam_simops -pwachtwoord -hlocalhost database | gzip --best -c -f  > database.$HuidigeDatum.gz
  5.  
  6. mysqldump -Q -unaam -pwachtwoord -hlocalhost database > database.$HuidigeDatum.sql
Deze tekst werd het laatst bewerkt voor 10.22 % door Simon op zaterdag 24 januari 2009 om 18:59:59.
^ Reactie #19 geschreven door Martijn op zaterdag 24 januari 2009 om 22:26:17.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Kan je inloggen via SSH ondertussen?

Dan kunnen we alle commando's eens een voor een uittesten :-).

Ik zal het script zelf morgen ook nog eens testen.
Met vriendelijke groeten,
Martijn Wouters
  • Pagina
  • [1]
  • 2

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen