Plone portalų atsarginių kopijų kūrimas  (0)

Dokumente aprašoma, kaip sukurti Plone portalų atsargines kopijas (angl. backup). Pateikiami du būdai - naudojant specialų Zope įrankį repozo.py, bei naudojant Linux sistemos skriptus.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Kaip ir visos svarbios informacijos atveju, Plone portalų atsarginės kopijos turi būti kuriamos reguliariai; daugelis žmonių atsargines kopijas daro kasdien. Jūsų konkretūs poreikiai apsprendžia atsarginių kopijų kūrimo grafiką arba dažnumą. Jeigu portale įrašinėjami dideli kiekiai duomenų, tokiu atveju tikriausia reikia dažniau daryti atsargines kopijas. Kai svetainėje pateikiamas mažesnis informacijos kiekis, tada gali būti tinkamas ir retesnis atsarginių kopijų darymas, pavyzdžiui, kartą per savaitę.

Standartinio Plone portalo atveju būtina išsaugoti tik vieną failą: Zope duomenų bazę, kurioje saugomas visas Plone portalo turinys. Šio failo adresą galima rasti pasinaudojant Zope valdymo sąsaja (Zope Management Interface – ZMI). Control panel meniu skyriuje pasirinkus Database Management meniu punktą, ekrane parodomas kelias iki Data.fs. Atsarginėms kopijoms kurti jūs galite naudoti savo pačių parašytus skriptus arba specialų Zope įrankį.

 

1 backup būdas: shell skriptai

 

Pavyzdinis Linux bash skriptas parodytas 1 listinge.

 

1 listingas. Bash skriptas atsarginėms Data.fs kopijoms kurti

#!/bin/bash
# skriptas, skirtas kopijuoti, archyvuoti gzip formatu ir
# perkelti Zope
# duomenų bazes į nuotolinius serverius
# sugalvojame atsarginės kopijos pavadinimą
# fn=atsarginė_kopija.fs
# atsarginė kopija daroma vietiniame diske; kelią iki duomenų
# bazės vartotojai turėtų pasikeisti pagal savo
# nuosavus nustatymus
cp /var/lib/zope/instance/portalo_pavadinimas/var/
Data.fs/tmp/$fn
# dumomenų bazės failas archyvuojamas gzip formatu
gzip /tmp/$fn
# funkcijos scp pagalba archyvas kopijuojamas į
# nuotolinį serverį ir
# tada ištrinama nereikalinga kopija darbiniame serveryje
# vartotojai turi pakeisti nuotolinio serverio parametrus
# pagal savo poreikius
scp /tmp/$fn.gz backup@atsargines.kopijos.lt:~/backup
rm /tmp/$fn.gz

 

Šiame listinge pateiktas bash skripto pavyzdys, bet iš principo backup operacijoms atlikti galima naudoti tiek bash, tiek sh ar ksh bei kitas skriptų kalbas.

Archyvavimas bei atsarginės kopijos archyvo persiuntimas į nuotolinį serverį iš principo nėra būtinos operacijos, tačiau jos gerokai palengvina gyvenimą tais atvejais, kai egzistuoja serverio aparatinės įrangos (maitinimo šaltinio, kietojo disko, motininės plokštės ir t.t.) gedimo galimybė. O kadangi gedimo galimybė egzistuoja visada, tai nuotolinis perrašymas į kitą serverį yra visai logiškas sprendimas. Kitas variantas yra automatiškai įrašinėti atsargines kopijas į perrašomus diskus ar kitokias laikmenas, tačiau tokių variantų šiame straipsnyje neaptarinėsime.

Failams perkelti į nuotolinį galima naudoti įvairias funkcijas – lftp, rcp, rsync, wget, scp, sftp ir kitus panašius įrankius. Paminėsime tik tai, kad lftp, rcp, rsync, wget įrankiai priskiriami mažo saugumo kategorijai, o scp ir sftp – didelio saugumo kategorijai. Iš to galima daryti išvadą, kad linux turi daug daugiau galimybių perkelti duomenis iš vienos vietos į kitą negu kad dauguma žmonių apskritai įsivaizduoja egzistuojant. Vis dėlto, tokios įvairovės nereikia išsigąsti. Pagrindinis dalykas yra žinoti, kokios yra jūsų galimybės, tada pasirinkti kelis įrankius, kuriuos jūs tikrai norėtumėte įvaldyti. Dėl likusių įrankių – užtenka tik žinoti, kad tokie egzistuoja, tam atvejui jei susidurtumėte su tokia situacija, kurioje kitas įrankis būtų daug efektyvesnis sprendžiant failų perkėlimo problemas. Daugiau bendro pobūdžio informacijos pateikiama adresu http://www.linuxplanet.com/linuxplanet/tutorials/4809/9/. scp funkcijos panaudojimas atsarginėms kopijoms perkelti į nuotolinius serverius bus aprašytas atskirame straipsnyje.

 

2 backup būdas: repozo.py

 

Antrasis būdas atsarginėms kopijoms kurti yra Python skriptas repozo.py, kuris yra Zope objektų duomenų bazės (ZODB) sudėtinis elementas, skirtas tiek Zope, tiek Plone portalų atsarginėms kopijoms kurti. Šį skriptą galima rasti internete adresu http://cvs.zope.org/ZODB3/Tools/repozo.py. Technologijos.lt kolektyvas šį skriptą išbandė tik Linux terpėje, tačiau internetinių šaltinių duomenimis jis puikiai veikia ir Windows aplinkoje. Skripto pagalba galima atlikti tokias operacijas, kaip pilnutinių atsarginių kopijų (angl. full backups) kūrimas, dalinių kopijų (angl. incremental backups) kūrimas bei duomenų bazių atstatymai.

Šis Python skriptas paleidžiamas iš komandinės eilutės, todėl pirmiausia Plone portalo manage skyriuje būtina susirasti svarbiausius parametrus:

1. SOFTWARE_HOME – vieta, kur reikia patalpinti standartini backup script‘ą (repozo.py)

2. ZOPE_HOME/bin – vieta, iš kurios reikia perkopijuoti standartinį backup skript‘ą (repozo.py) – jei skripto čia nėra, jį galima tiesiog parsisiųsti aukščiau nurodytu adresu.

3. CLIENT_HOME/Data.fs – duomenų bazės failas, kuris bus kopijuojamas (analogiškas parametras kaip ir pirmojo aprašyto backup būdo atveju (1 pav.).

 ZMI langas

1 pav. Zope Database Management vartotojo sąsaja

 

Toliau repozo.py reikia perkopijuoti iš ZOPE_HOME/bin arba nurodyto internetinio šaltinio į SOFTWARE_HOME kintamuoju pažymėtą katalogą.

Įkėlus skriptą į reikiamą vietą, komandinėje eilutėje (nuėjus į SOFTWARE_HOME) įvykdoma tokia (arba analogiška, pagal savus poreikius sugeneruota) komanda:


 
python repozo.py -B -F -v -r /backup -f 
/var/lib/zope2.7/instance/portalas/var/Data.fs

 

čia:       -B – backup (-R – recover); pagrindiniai backup parametrai:

                        -F – full (-Q – quick, teoriškai galimi netolygumai (angl. inconsistencies);

                        -f – kopijuojamas failas;

                        -r – atsarginių kopijų saugojimo katalogas (angl. repository);

                        -z – kopijos archyvavimas gzip metodu;

                        -v – į ekraną išvedami tekstiniai pranešimai apie atliekamas operacijas.

            -R – recover (duomenų bazės atkūrimas); recover parametrai:

                        -d – atstatomos kopijos data, datos formatas yyyy-mm-dd[-hh[-mm[-ss]]]

                        -o – atstatomo failo pavadinimas ir jo adresas.

 

Pagal nutylėjimą (nenurodžius –F rakto) daromas dalinis (inkrementinis) backup‘as.

Kiekvieną kartą  supakavus Plone duomenų bazę, būtina padaryti naują full backup‘ą.

Atstatant duomenų bazę pavyzdinė komanda galėtų būti:

python repozo.py -R -v -r /backup -o 
/var/lib/zope2.7/instance/portalas/var/Data.fs

Backup patartina daryti tada, kai portale ištaisytos visos klaidos.

Atstačius portalą (angl. instance) iš rezervinės kopijos, reikia perkrauti atitinkamą instance (arba tiesiog perkrauti serverį).

Daugiau informacijos rasite adresu http://docs.neuroinf.de/PloneBook/ch14.rst.

 

Papildomi patarimai

 

Būtina prisiminti, kad log failai (sisteminiai Zope/Plone žurnalai) saugomi konkretaus portalo log kataloge. Kiekvienam portalui priskiriami atskiri Z2.log ir event.log failai. Jų katalogai gali būti atskirai nurodomi zope.conf faile; į Z2.log atitinkamai įrašomos visos ateinančios užklausos, o event.log registruojamos visos klaidos. Šiuos sisteminius žurnalus taip pat patartina reguliariai išsisaugoti, kartu su proxy serverio (Apache, Internet Information Servines (IIS) ar bet kokio kito) log failais. Taip pat atskirai būtina reguliariai išsaugoti bet kokį modifikuotą kodą, šablonus bei sukurtus produktus, kurie nesaugomi ZODB. Šiems papildomiems failams išsaugoti gali būti naudojami standartiniai Linux ar Windows atsarginių kopijų darymo įrankiai. Linux sistemai atsarginių kopijų darymas bus aprašytas atskirame straipsnyje.

Papildomos kopijos būtinos bet kuriai svetainės informacijai, kitoms duomenų bazėms, kurios nesaugomos ZODB. Šias backup operacijas reikia atskirai numatyti bendrame atsarginiu kopijų darymo plane, priklausomai nuo to, kaip dažnai ši informacija keičiasi. Tokio pobūdžio informacija gali būti duomenys reliacinėse duomenų bazėse bei informacija vietinėje failų sistemoje. Visą šia informaciją paprastai sukuria svetainės administratorius, ir ji neegzistuoja standartinėje Plone portalo versijoje. Jei jūs atnaujinate Zope ar Plone, būtų visai išmintinga išsisaugoti visus failus, susijusius su šia sistema – tokiu atveju, jei atnaujinimas nepavyktų dėl kokios nors nenumatytos priežasties, būtų galima pilnutinai atstatyti portalo turinį.

 

Priedai

 

Backup skripto (repozo.py) help failo turinys (komandinėje eilutėje šiam sąrašui iškviesti naudojama komanda repozo.py -h):

------------------------------------------

repozo.py -- incremental and full backups of a Data.fs file.

 

Usage: repozo.py [options]

Where:

    Exactly one of -B or -R must be specified:

 

    -B / --backup

        Backup current ZODB file.

 

    -R / --recover

        Restore a ZODB file from a backup.

 

    -v / --verbose

        Verbose mode.

 

    -h / --help

        Print this text and exit.

 

    -r dir

    --repository=dir

        Repository directory containing the backup files.  This argument

        is required.  The directory must already exist.  You should not

        edit the files in this directory, or add your own files to it.

 

Options for -B/--backup:

    -f file

    --file=file

        Source Data.fs file.  This argument is required.

 

    -F / --full

        Force a full backup.  By default, an incremental backup is made

        if possible (e.g., if a pack has occurred since the last

        incremental backup, a full backup is necessary).

 

    -Q / --quick

        Verify via md5 checksum only the last incremental written.  This

        significantly reduces the disk i/o at the (theoretical) cost of

        inconsistency.  This is a probabilistic way of determining whether

        a full backup is necessary.

 

    -z / --gzip

        Compress with gzip the backup files.  Uses the default zlib

        compression level.  By default, gzip compression is not used.

 

Options for -R/--recover:

    -D str

    --date=str

        Recover state as of this date.  Specify UTC (not local) time.

            yyyy-mm-dd[-hh[-mm[-ss]]]

        By default, current time is used.

 

    -o filename

    --output=filename

        Write recovered ZODB to given file.  By default, the file is

        written to stdout.

 

Either --backup or --recover is required

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(0)
(0)
(0)

Komentarai (0)

Susijusios žymos: