postgresql benă sql, pentru utilizatorii UNIX
PostgreSQL Dump SQL
Ideea acestei metode de rezervă este de a genera un fișier text cu SQL-comenzi, transferul înapoi la serverul pe care este posibil să se recreeze baza de date în aceeași stare în care a fost la momentul scoaterii din groapa de gunoi. PostgreSQL prevede în acest scop pg_dump utilitate. Utilizarea principală a acestei comenzi este după cum urmează:
După cum se poate observa, pg_dump scrie rezultatul de ieșire standard (aprox. Ecran). Mai jos se va descrie modul în care acest lucru poate fi utilizat.
pg_dump - este inclus în pachetul de aplicație client PostgreSQL (încă extrem de funcțional). Acest instrument poate efectua procedura de backup de la orice gazdă de la distanță, cu acces adecvat la baza de date. Dar, amintiți-vă că pg_dump nu funcționează fără accesul corespunzător. În practică, acest lucru ar trebui să fie citit acces la toate mesele, groapa de care trebuie să fie făcut, prin urmare, este aproape întotdeauna utilitatea ruleaza ca root.
Pentru a determina modul în care un server de gestionare a bazei de date trebuie să fie difuzate utilizarea pg_dump gazdă -h și opțiuni de linie de comandă -p portuare. În mod implicit, acționează ca un server gazdă pe care să ruleze pg_dump sau ce variabila este setat mediul PGHOST. În mod similar, valoarea implicită este determinată de un mediu de port PGPORT variabilă sau, în caz de absență, valoarea specificată în timpul compilării. (Convenabil, serverul este de obicei compilat cu aceeași valoare prestabilită.)
Ca și alte aplicații client la PostgreSQL pg_dump se va conecta în mod implicit la baza de date, în numele sistemului de operare al utilizatorului curent. Pentru a schimba acest lucru, trebuie fie să specificați opțiunea -U sau pentru a seta mediul PGUSER variabila. Trebuie să ne amintim că clientul pg_dump se conectează utilizând un server de mecanisme de autentificare suportate.
Un avantaj important al pg_dump față de alte metode de backup, care vor fi descrise mai târziu, este faptul că această groapa este, de obicei, poate fi încărcată într-o nouă versiune PostgreSQL, în timp ce metoda de backup la nivelul sistemului de fișiere și de rezervă continuă este extrem de dependentă de versiunea serverului . De asemenea, pg_dump singura metodă care va funcționa atunci când un transfer de bază de date se realizează între arhitecturi diferite, cum ar fi de la 32 de biți la server pe 64 de biți.
Dump creat folosind pg_dump, este consecvent pe plan intern și reprezintă un instantaneu al bazei de date la momentul pornirea utilitarului. În timpul funcționării, pg_dump nu blochează alte operațiuni pe baza de date. (O excepție sunt operațiunile care trebuie să lucreze cu încuietori de limitare, cum ar fi cele mai multe forme de ALTER TABLE.)
Important: În cazul în care schema de baze de date bazate pe OIDs (de exemplu, ca chei străine), atunci trebuie să cereți pg_dump să le salvați ca parte a datelor pentru fiecare tabel. Pentru a face acest lucru, utilizați linia de comandă-o opțiune.
24.1.1. Restaurarea groapa de gunoi
Fișierul text creat de pg_dump, pentru citirea psql programului. comandă generală pentru a restabili o groapa este:
în cazul în care INFILE - acest fișier de ieșire obținute după utilizarea pg_dump. Nume_bază_de_date bazei de date nu va fi creată de această comandă, deci trebuie să-l creați-vă cu template0 înainte de punerea în aplicare a psql (de exemplu, comanda createdb -T template0 DBNAME). psql sprijină opțiuni similare pg_dump pentru a selecta o conexiune la server de baze de date și nume de utilizator. Mai multe informații pot fi găsite la pagina de referință psql.
Înainte de a restaura un depozit SQL, toți utilizatorii care dețin obiecte sau au dreptul de a accesa obiectele din baza de date de rezervă trebuie să existe deja. Dacă nu este, atunci recuperarea nu va fi posibil pentru a recrea obiectele cu drepturile și / sau competențele originale de proprietate. (Uneori, acest lucru este ceea ce vrei, dar de obicei nu este.)
În mod implicit, psql-script va continua să ruleze după o eroare SQL. Puteți rula psql ON_ERROR_STOP variabilă pentru a schimba comportamentul, atunci când psql o eroare SQL va termina activitatea sa cu un cod de ieșire 3:
În fiecare din cele două cazuri se intample partial restaurate de baze de date. Alternativ, puteți seta restaurarea tuturor haldei ca o singură tranzacție, atunci recuperarea va fi fie complet finalizate sau va reveni la starea inițială. Acest mod poate fi setat prin setarea psql -1 -single-tranzacție sau opțiunea de linie de comandă. Folosind acest mod, o greșeală minoră va duce la o recuperare derulare înapoi, care se desfășoară timp de mai multe ore. Cu toate acestea, poate fi de preferat, spre deosebire de baze de date de curățare manuală după groapa de recuperare parțială.
Important: Dumps utilități pg_dump sunt relativ template0. Acest lucru înseamnă că orice limbi, proceduri, etc. adăugat prin template1 va fi salvat pg_dump de utilitate. Ca urmare, dacă este folosit în template1 de reducere, trebuie să creați o bază de date goală folosind template0, așa cum se arată în exemplul de mai sus.
După restaurarea unei copii de rezervă are sens pentru a rula Analyze fiecare bază de date, astfel încât optimizatorul de interogare a colectat statistici utile.
24.1.2. Utilizarea pg_dumpall
pg_dump stochează datele pentru o singură bază de date pentru timpul de lucru și nu arunca informații despre rolurile și spațiu tabelă (deoarece acestea nu mai aparțin cluster decât o singură bază de date). Suport pentru salvarea ușor întregul grup de date de baze de date de conținut oferă programul pg_dumpall. Se face o copie de rezervă de fiecare bază de date într-un anumit grup, și salvează, de asemenea, datele referitoare la cluster-ul, cum ar fi definirea rolurilor și a spațiilor de tabelă. O utilizare obișnuită a acestei comenzi este după cum urmează:
Halda rezultată poate fi restaurate folosind psql:
(De fapt, puteți specifica numele unei baze de date existente, dar în cazul în care descărcarea are loc într-un cluster gol, atunci Postgres ar trebui să fie utilizate, în general, baze de date.) Când restabiliți un pg_dumpall groapa întotdeauna nevoie de superutilizator, deoarece este necesar să se recupereze informații despre rolurile și TABLESPACES. Dacă spațiul tabelă este utilizat pentru a se asigura că masa de cale în groapa de gunoi sunt potrivite pentru instalații noi.
pg_dumpall în timpul probleme de operare comenzi pentru a recrea roluri tabele și baze de date spații goale, și apoi solicită pg_dump pentru fiecare bază de date. Din aceasta rezultă că, deși fiecare bază de date va fi consistente intern, instantanee ale diferitelor baze de date nu pot fi făcute exact în același timp.
24.1.3. Manipularea bazelor de date mari
Fiecare sistem de operare are o limită privind dimensiunea maximă a fișierului, care poate provoca probleme la crearea pg_dump fișiere mari de ieșire de utilitate. Din fericire, pg_dump poate scrie la ieșirea standard, ceea ce face posibilă utilizarea instrumente standard Unix pentru a rezolva această problemă potențială.
Există mai multe metode posibile:
Utilizați haldei comprimat. Posibilitatea de a utiliza orice utilitate pentru comprimare, de exemplu, gzip:
Restored după cum urmează:
Utilizați divizat. Split Comanda permite să împartă ieșire într-un fișier de dimensiune mică a permis pentru acest sistem de fișiere. De exemplu, creați porțiunea de ieșire a 1 megabyte:
Restored după cum urmează:
Utilizați haldei personalizat în format pg_dump. Dacă PostgreSQL a fost compilat pe un sistem cu o bibliotecă de compresie instalat Zlib, formatul personalizat de depozit de date înregistrate vor fi comprimate la scrierea în fișierul de destinație. Acest lucru este similar cu metoda de utilizare GZIP, dar are avantajul că tabelele pot fi restaurate selectiv. Următoarea comandă pentru a crea o bază de date de imagine utilizând un format de ieșire personalizat:
Formatul haldei personalizat nu va putea recupera, ca script-ul pentru psql, în schimb pg_restore trebuie să fie utilizat instrument:
Pentru baze de date foarte mari, trebuie sa combini split cu una dintre celelalte metode.