Kodulehed
[379] - Andmebaasid II (ITI0207) (sügis 2020)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid.
Värvilised mummud tähistavad hinnangulist kataloogide lugemise vajadust. Roheline - suurim, kollane - keskmine, punane või mummuta - väikseim
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / PostgreSQL

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne:
PostgreSQL andmebaasi varukoopia tegemisel pgAdmini programmiga esineb mul viga:
pg_dump: server version: 13.0; pg_dump version: 12.4
pg_dump: aborting because of server version mismatch

Mida teha?

Vastus: See viga võib esineda ka tulevastes versioonides. Üldine põhjus on selles, et kasutatav pgAdmini versioon ei vasta kõige uuemale PostgreSQLi versioonile. Tüüpiliselt tuleb PostgreSQList välja uus põhiversioon igal sügisel (tavaliselt septembri lõpus või oktoobris).

Üheks lahenduseks on installeerida pAdmini kõige viimane versioon, mis peab olema tulnud välja peale PostgreSQL uut versiooni ning suudab juba arvestada uue PostgreSQL versiooniga.

Alternatiivselt saab loogilise varukoopia teha phpPgAdmin kaudu, valides andmebaasi ja klõpsates menüüs Export. Kui valida andmete esituse formaadiks "SQL", siis on tulemuseks INSERT laused. Paraku on need halvasti kirjutatud selles mõttes, et INSERT klauslis ei ole veergude nimesid. Teiste sõnadega sellised laused on tundlikud veergude järjekorra muutmise suhtes. Selliseid lauseid tuleks käsitsi täiendada.

Veel üheks lahenduseks on kasutada varukoopia tegemiseks serveris olevat pg_dump utiliiti, käivitades selle shelli promptist. Järgnevalt kirjutan, kuidas seda teha.

Loogilise varukoopia tegemine

  1. Logige PuTTY või mõne muu sarnase programmiga apex.ttu.ee serverisse.
  2. Käivitage shelli promptist käsk, mille üldkuju on:
    pg_dump -C -f varukoopia_faili_nimi.sql andmebaasi_nimi_millest_tahan_varukoopiat

    Näiteks varukoopia andmebaasist scott: pg_dump -C -f scott_2020_11_07.sql scott
    • C tähendab, et varukoopia failis on CREATE DATABASE lause. See tähendab, et varukoopiast andmebaasi taastamiseks ei tohi serveris sellise nimega andmebaasi olla - see luuakse taastamise alguses automaatselt.
    • Soovitan kasutada varukoopia faili nimes andmebaasi nime ja varukoopia tegemise kuupäeva, et oleks selge, millest ja mis aja seisuga on varukoopia loodud ning et uus varukoopia vana üle ei kirjutaks.
    • Fail sisaldab andmebaasi scott põhjal genereeritud SQL lauseid. Failis sisalduvad SQL laused andmebaasiobjektide loomiseks, õiguste jagamiseks ja andmete laadimiseks andmebaasi.
    • See käsk tuleb käivitada shelli promptis (satute sinna kohe peale sisselogimist; see sama koht kus käivitate psql programmi), mitte psqlis. pg_dump nagu ka psql on PostgreSQLiga kaasa tulevad (abi)programmid.
  3. Logige WinSCP või muu sarnase failide haldamiseks mõeldud programmiga apex.ttu.ee serverisse. Kasutajanimi ja parool on sama, mis PuTTY abil sisselogimisel.
  4. Sisselogimise järel satute oma kodukataloogi: /home/minu_kasutajanimi Loodud varukoopia fail on selles kataloogis.
  5. Tõmmake see fail enda arvutisse, sest kui näiteks serverarvutis ketas rikneb, siis ei ole riknenud kettale jäänud ja kättesaamatuks muutunud failidest hiljem taastamise juures abi.
  6. Tehke varukoopiate hoidmiseks enda arvutis eraldi kataloog.
  7. Varukoopia failis on andmete tabelisse lisamiseks vaikimisi COPY laused. See on andmete taastamiseks kõige kiirem lahendus. Kui soovite (näiteks dokumendi jaoks) saada andmete tabelisse lisamiseks INSERT lauseid, siis tuleb varukoopia tegemise käsku täiendada. Järgnev on konkreetse andmebaasi (scott) varundamise käsu näide:
    pg_dump -C --column-inserts -f scott_2020_11_07.sql scott

Andmebaasi taastamine loogilisest varukoopiast

  1. Eeldused:
    • Serveris pole sellise nimega andmebaasi, mille CREATE DATABASE lause on varukoopia faili alguses.
    • Loogilise varukoopia fail on serverarvutis Teie kodukataloogis: /home/minu_kasutajanimi
  2. Logige PuTTY või mõne muu sarnase programmiga apex.ttu.ee serverisse.
  3. Käivitage shelli promptist käsk, mille üldkuju on:
    psql -U minu_kasutajanimi -f varukoopia_faili_nimi.sql template1

    Näiteks kasutaja erki taastab andmebaasi scott käsuga: psql -U erki -f scott_2020_11_07.sql template1

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!