Vastus (17.12.2023 10:17): 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
- Logige PuTTY või mõne muu sarnase programmiga apex2.ttu.ee serverisse.
- 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_2023_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.
- Logige WinSCP või muu sarnase failide haldamiseks mõeldud programmiga apex2.ttu.ee serverisse. Kasutajanimi ja parool on sama, mis PuTTY abil sisselogimisel.
- Sisselogimise järel satute oma kodukataloogi: /home/minu_kasutajanimi Loodud varukoopia fail on selles kataloogis.
- 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.
- Tehke varukoopiate hoidmiseks enda arvutis eraldi kataloog.
- 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_2023_11_07.sql scott
Andmebaasi taastamine loogilisest varukoopiast
- Eeldused:
- Serveris pole sellise nimega andmebaasi, mille CREATE DATABASE lause on varukoopia faili alguses.
- Loogilise varukoopia fail on serverarvutis Teie kodukataloogis: /home/minu_kasutajanimi
- Logige PuTTY või mõne muu sarnase programmiga apex2.ttu.ee serverisse.
- 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_2023_11_07.sql template1
Vaadake
SIIT videot loogilise varukoopia tegemise ning andmebaasi taastamise kohta.