Varmuuskopiointi cron job

Started by Sparky, 06.11.19 - klo:10:13

Previous topic - Next topic

Sparky

Tervehdys,

Olisiko mahdollista saada ohjelmaan tietokannan varmuuskopiointi  tietyin välein cron jobina, esim. 2vk välein tai kuukausittain tai vaikka käyttäjän määrittelemän ajan välein ?

Mulla(kin) kun tuo muisti on hyvä mutta yhtä pitkä kuin kanan lento, niin tietokantaa ei aina muista varmuuskopioida.

Siinä voisi kenties nimetä palvelimelle halutun kansion, jonka ohjelma luo jos sitä ei vielä ole, mihin ohjelma varmuuskopioi tietokannan, ja nimeää tiedostot samalla nimellä joka ne nytkin varmuuskopioinnissa tulee, se olisi varmasti hiton kätevä toiminto.

Käyttäjä voi sitten halutessaan ftp:llä poistaa haluamiaan, tai lisänä voisi tietenkin olla sekin, että ohjelma listaa tallennetut varmuuskopiot ja antaa mahdollisuuden poistaa niitä esim. pidettävien varmuuskopioiden määrän taikka iän perusteella.


ele

Ei kait tällaista kannata mlinvoiceen ympätä? Mulla palvelin ajaa kerran yössä cronilla kaikkien tietokantojen backup-scriptin:


$ cat /home/foobar/bin/tietokannat_backup
#!/bin/sh
SRCDIR="/tmp/mysql"              # Location of Important Data Directory (Source of backup).
DESDIR="/home/foobar/backups"     # Destination of backup file.

mkdir -p $SRCDIR
mysqldump -u dbuser -p dbpasswd --opt --all-databases > $SRCDIR/tietokannat_`date +%Y%m%d_%H%M%S`.sql
tar -cvzf $DESDIR/alldb_`date +%Y%m%d_%H%M%S`.tar.gz -C $SRCDIR .
rm -r $SRCDIR
$

Pakkaamaton dumppi on mulla noin 500 megaa, eli vähän turhan iso yhdeksi tiedostoksi, mutta aina tuolta on löytynyt se mitä on tarvinnut palauttaa. Stackoverflowsta tms löytyy lukuisia vaihtoehtoja jos paketin sisälle haluaa erilliset tiedostot kullekin tietokannalle, esim: https://stackoverflow.com/questions/9497869/export-and-import-all-mysql-databases-at-one-time.

taleman

Minulla on Debian GNU/Linuxissa asennettuna automysqlbackup (apt-get install automysqlbackup). Se ottaa kaikista koneen tietokannoista varmuuskopiodumpin kerran yössä. Se myös huomaa kun uusi tietokanta ilmestyy, eli ei pääse unohtumaan varmuuskopio.

Saatavilla varmaan kaikille Linuxeille ja Unixeille. https://sourceforge.net/projects/automysqlbackup/

Minäkin olen sitä mieltä ettei tämmöistä toiminnallisuutta kannata MLInvoiceen lisätä.

kzmx

Täällä taas erinäkemys.

Mitä sitten kun me joilla on webhotelli käytössä, eikä webhotelliin pysty asentamaan mitään itse?

Toisaalta webhotellin hallintapneelissa on cronille asetukset jne.

Mutta eikö tuota saa mysqlän kautta ajoitettua jo jotenkin?


ele

Onko semmoisiakin webhotelleja joihin ei pääse shellillä kiinni?

Jos sulla on hallintapaneelissa cron, niin esim. tämän listan kakkoskohta vois toimia: https://www.jotform.com/blog/how-to-backup-mysql-database/

MLInvoiceen tällaista toiminnallisuutta on aika vaikea rakentaa kun koodia ajetaan vaan tarpeen vaatiessa, ts. mitään jatkuvaa prosessia ei ole olemassa. Itse tietokanta on sit tietty jatkuvasti pyörimässä, mutta hämmästyisin suuresti jos siihen olisi luotu joku yleiskäyttöinen cron-kopio. Unix-filosofiaan kuuluu se että yksi työkalu tekee yhden asian hyvin ja näitä palikoita yhdistelemällä saadaan sitten haluttu lopputulos.

kzmx

Quote from: ele on 16.11.19 - klo:11:31
Onko semmoisiakin webhotelleja joihin ei pääse shellillä kiinni?


On tietääkseni mutta vähenemään päin.
Osaan phptä, html koodia ja käyttää linuxia mutta on siinä tietty vaikeus välillä, mutta mysql komennot on googlen varassa, tietokannoista osaan hakea kyllä manuaalisesti selaamalla asioita.


Joskus tein omien kotisivujeni varmuuskopiointiin, phpllä varmuuskopiointi scriptin, joka ajoi shell komennon silloin kun tämän varmuuskopiointi.php avasi selaimessa, tiedosto oli serverillä.

Tätä kirjoitettaessa tuli mieleen, että kuormittaisiko se järjestelmää liikaa, jos aina kirjautumisen yhteydessä tekisi varmuuskopion ja säilyttäisi viikon ikäisiä backuppeja?

Joo, kaukaa haettua mutta ehkä pointtina loppukäyttäjän varmuuskopiointien asettaminen ja helppous.
Eikö apachen käyttäjä pysty käynnistämään cronia tai tallentamaan siihen ajoituksia, sekä muokkaamaan niitä?

Itsellä ainakin php palauttaa
<?php
echo 'Current script owner: ' get_current_user();
?>


Koodilla webhotellin käyttäjänimen, mutta sitten onko php.inissä määritetty että phpllä olisi shell komentojen käyttöoikeus.. riippuu siitä.

Mutta tuo haittaa vain julkisissa webhotelleissa, paikalliset verkkopalvelimet ovat asia erikseen, niihin saa execute oikeuden päälle.

ele

Cron on prosessi joka on koneella käynnissä jatkuvasti, eli käyttäjän ei sitä tarvitse itse käynnistää. Asetuksissa sitten määrätään onko käyttäjällä oikeutta asettaa cron-ajoja. Jos sulla on hallintapanelissa cron-mahdollisuus, niin luulisi niitä pystyvän asettamaankin.

Nykykoneiden tehoilla on aika yks hailee otetaanko backup kirjautumisen yhteydessä vai ei - lähinnä kysymys on siitä onko sitä järkevää tehdä siinä yhteydessä. Ja jos luotetaan pelkästään siihen että joku kirjautuu sisään ja käynnistää backup-tapahtuman, niin yli viikon vanhojen backuppien luominen tai tuhoaminen ei onnistu tapauksessa jossa kukaan ei kirjaudu sisään. Ehkä suurimpana ongelmana pitäisin kuitenkin sitä että backupin tekemisellä ja kirjautumisella ei ole mitään loogista yhteyttä. Jos halutaan pitää kirjaa siitä mitä muutoksia kirjautumisien välillä on tapahtunut, niin eiköhän siihen ole paljon parempiakin ratkaisuja. Jos taas ollaan kiinnostuneita siitä että backupissa on aina ajankohtainen versio kannasta, niin laitetaan vaikka minuutin välein dumppi talteen ja poistetaan niitä siitten sopivasti harventaen mitä vanhemmiksi ne käyvät.

Jos koet että tuollainen varmuuskopiointi.php-tyyppinen ratkaisu olisi parempi, niin näinkin simppeli koodi näyttäisi toimivan:
<?php 
require_once 'sqlfuncs.php';

initDbConnection();
createDbDump();
?>

Tuon createDbDumpin tekoon on selvästi nähty vaivaa, mutta tosipaikan tullen luottaisin kyllä enemmän ihan virallisen dumpin kautta tehtyy backupiin.

taleman

Eikö webbihotellifirma ota tietokannoista varmuuskopiota joka yö? Jos ei myöskään itse pysty ajoittamaan varmuuskopionteja kannattaisi vaihtaa parempaan webbihotelliin.

Jos se webbihotellifirma asentaisi automysqlbackup-sovelluksen, olisi ne tietokantadumpit otettuina ja tallessa.

kzmx

Kyllä ne saattavat ottaa joka yö tietokannoista varmuuskopiot mutta niiden palauttaminen asiakkaalle maksaa tai toisin sanoin saattaa maksaa ja todennäköisesti maksaa.

Ere Maijala

Laitan toivelistalle cronattavan varmuuskopioinnin. Ei lupauksia toteutuksesta kylläkään.. ele:n esimerkki on hyvä alku, mutta toimivassa systeemissä pitäisi olla jonkinlainen kierrätys ja muita säätömahdollisuuksia.