Arhivarea Postgresql și recuperarea datelor

Arhivarea și restaurarea datelor

Arhivarea și restaurarea datelor ocupă un loc important în activitatea oricărui administrator de baze de date. Niciun sistem nu este imbunatatit de defectiunile hard disk-ului, neglijente ale utilizatorilor sau alte nenorociri potentiale care duc la coruperea datelor din PostgreSQL.







Această secțiune descrie cele două metode generale de arhivare a datelor. În prima versiune, aplicația pg_dump, care este furnizată împreună cu PostgreSQL, generează un set de comenzi SQL pentru o copie de rezervă completă a bazei de date. A doua opțiune se bazează pe arhivarea sistemului de fișiere al serverului.

Aplicația pg_dump rulează în modul linie de comandă și construiește o serie de comenzi SQL. Rularea acestor comenzi în ordinea specificată vă permite să recreați complet baza de date.

Sintaxa aplicației pg_dump este:

pg_dump [parametrii] baza de date

Parametrul database_database specifică numele bazei de date pentru care sunt generate comenzile SQL. Șirul de parametri are același format ca și alte utilitare de gestionare a bazelor de date (de exemplu, createb). În ea, tasta - f este adesea trecută pentru a defini fișierul în care sunt stocate comenzile generate.

Dacă parametrul -f nu este specificat, comenzile SQL generate sunt scrise în fluxul stdout, în loc să scrie în fișier.

Mai jos este lista completă a cheilor de aplicații pg_dump.

În mod implicit, aplicarea pg_dump poate fi rulat de către orice utilizator de sistem, dar utilizatorul se conectează la PostgreSQL, ar trebui să aibă dreptul de proba pentru toate obiectele din baza de date arhivat. Listing 9.20 prezintă un exemplu de utilizare a programului pg_dump de către utilizatorul managerului pentru baza de date a cărții. Opțiunea -C include comanda CREATE DATABASE din arhivă. Această comandă nu este întotdeauna inclusă, deoarece în unele cazuri baza de date este creată în avans într-o configurație non-standard.

Listing 9.20. Utilizând aplicația pg_dump

[jworsley @ booktown -] $ pg_dump -u -C -f booktown.sql booktown

Nume utilizator: manager Parola:

[jworsley @ booktown -] $ este -1 booktown.sql

-rw-rw-r-- 1 jworsley jworsley 46542 13 septembrie 16:42 booktown.sql

pg_dump Anexa sprijină parametrii standard ai compușilor gazdă (chei -h, -u și -p), care permite backup de la distanță de la orice gazdă, care îi este permis să se conecteze la distanță în conformitate cu conținutul fișierului pgjiba.conf (pentru mai multe informații, vezi capitolul 8).

Listarea 9.21 sunt conectați la un server de la distanță la serverul booktown.commandprompt.com pentru a crea un fișier arhivă în format gzip (tasta -F c) numele booktown.sql.tar.gz.

Listing 9.21. Pornire de la distanță pg_dump

] $ pg_dump -u -h booktown.commandprompt.com \

-F cu booktown.sql.tar.gz booktown

[jworsley @ cmd -] $ este -1 booktown.sql.tar.gz

-rw-rw-r-th1nsp: - 1 jworsley jworsley 45909 13 septembrie 17:12 booktown.sql.tar.gz

Dacă fișierul de arhivă ar trebui să conțină obiecte binare mari, utilizați formatul tar (t) sau gzip (c), deoarece formatul textului nu permite acest lucru. În alte cazuri, arhivele textului convențional sunt destul de suficiente.

Arhivele în format tar sunt adesea de două ori mai mari decât prototipurile lor de text, chiar dacă nu conțin obiecte binare. Faptul este că formatul tar include un tabel de conținut ierarhic pentru fișierele .dat. Acest cuprins conține informațiile necesare pentru a extrage formatul de gudron cu comanda pg_restore corespunzătoare; instrucțiunile suplimentare necesită prea mult spațiu pe disc. Deoarece arhiva arhive fișiere fără compresie, a fost furnizat formatul c, care asigură comprimarea automată a fișierelor tar în format gzip.







În PostgreSQL, există și o aplicație numită pg_dumpall, care este un fel de "wrapper" pentru a apela programul pg_dump. Funcția principală a acestei aplicații este de a arhiva simultan întregul cluster de baze de date PostgreSQL în sistem fără a suna pg_dump pentru toate bazele de date în schimb. Sintaxa comenzii pg_dumpaTl, tipărită cu steagul -help:

pg_dumpall [-c] [-h gazdă] [-p port] [-d]

Aplicația pg_dumpall primește aceiași parametri de conectare ca și aplicația pg_dump. Următoarele taste sunt pg_dumpall.

  • -a. Comenzile SQL care creează obiecte globale trebuie să fie precedate de comenzile pentru ștergerea acestor obiecte.
  • -h gazdă, - -host = .ro. O gazdă cu care să stabilească o conexiune în locul gazdei gazdă localhost sau gazdă specificată de variabila de mediu PGHOST. Se utilizează atunci când baza de date arhivată se află pe un alt server.
  • -portul p, --port = nopm. Portul pe care se va conecta la server, în loc de portul implicit (de obicei 5432).
  • -g, - numai globali. Numai obiectele globale sunt arhivate. De obicei, acest mod este utilizat atunci când se recreează utilizatori și grupuri, precum și duplicarea acestora pe alt computer (arhiva este transferată pe un alt computer și restaurată). Dacă instalați opțiunea -d, toți utilizatorii sunt șterși automat din tabela pg_shadow înainte de a executa comenzile CREATE. Fii atent!

Nu executați comanda pg_dumpall cu -. Acest lucru va face ca cheia să fie transmisă aplicației pg_dump pentru fiecare bază de date, iar ieșirea va ocupa mult mai mult spațiu decât credeți. Pentru ajutor despre comanda pg_dumpall, utilizați comutatorul --help.

Notă: în PostgreSQL 7.1.x, capabilitățile scriptului pg_dumpall sunt oarecum limitate față de scriptul obișnuit pg_dump. De exemplu, comutatorul -I nu vă permite să transferați un alt nume de utilizator și o parolă, iar comutatorul -F nu poate specifica un format diferit, cu excepția textului simplu (arhivele sunt create în format text indiferent de formatul selectat). Rezultă că comutatorul -b nu poate fi trecut la pg_dumpall fie pentru că necesită alte formate decât textul.

Deși aplicația pg_dump poate trimite un nume de fișier cu opțiunea -f, arhiva rezultată va fi incompletă, deoarece datele globale ale pg_dumpall sunt toate

în mod egal trimis la stdout stream. Problemele cu cheia sunt rezolvate redirecționând ieșirea din pg_dumpall într-un fișier utilizând shell (>).

Absența unei chei este compensată prin simpla atribuire a variabilei de mediu PGUSER. Și dacă vă conectați la un sistem care necesită autentificare utilizând o parolă și nu doriți să parcurgeți separat parola pentru fiecare bază de date care trebuie arhivată, atribuiți valoarea variabilei PGPASSWORD.

Listarea 9.22 arată un simplu bash comandă pentru a defini un mediu temporar PGUSER variabilă atunci când se solicită PostgreSQL de client Deși necesitatea unor astfel de variabile este rar, este o tehnică utilă, care ar trebui să fie amintit, în unele cazuri specifice - de exemplu, atunci când se lucrează cu un pg_dumpall script. În lista 9.22, variabila PGUSER furnizează un singur fișier de arhivă pentru toate bazele de date.

Listing 9.22. Utilizând comanda pg_dumpall

[jworsley @ booktown -] $ PGUSER = postgres pg_dumpall> toate.sql

Prima parte a comenzii din Lista 9.22 atribuie valoarea postgresă variabilei temporare PGUSER. Variabila este creată pe durata pg_dumpall și încetează să mai existe la terminarea programului.

În general, aplicația pg_dumpall trebuie executată de superuserul PostgreSQL. Acest lucru se datorează faptului că comanda pg_dumpall accesează directoarele de sistem PostgreSQL, deoarece împreună cu obiectele bazei de date arhivează obiectele globale.

Comanda pg_dumpal 1 poate fi rulată de la distanță, deși trebuie să setați valorile tuturor variabilelor de mediu necesare. Procedura este puternică în funcție de configurația gazdei la distanță în fișierul pg_hba.conf.

comandă pg_dumpa11 este utilizat în situațiile în care baza de date nu este deosebit de convenabil pentru copii de rezervă separat sau în prezența unui sistem complex este utilizat ERS și grupuri. Dacă interfera cu restricții asupra producției pg_dumpall date GUVERNAMENTALE (mai ales în cazul în care baza de date utilizează obiecte de mari dimensiuni), pur și simplu rulați comanda pg_dumpal1 vsep -e cheie pentru arhivarea tuturor utilizatorilor și grupurilor, iar apoi, la rândul său program de cauză pg_dump pentru toate) bazele de date , care ar trebui arhivate.







Articole similare

Trimiteți-le prietenilor: