Sql сметище PostgreSQL, за потребителите на UNIX
SQL Dump PostgreSQL
Идеята на този метод за архивиране е да генерира текстов файл с SQL-команди, прехвърлянето обратно на сървъра, който може да се пресъздаде базата данни в същото състояние, в което е било по времето на отстраняване на сметището. PostgreSQL предвижда за тази цел полезност pg_dump. Основното приложение на тази команда е както следва:
Както може да се види, pg_dump записва резултата на стандартния изход (прибл. На екрана). По-долу ще бъде описано как това може да се използва.
pg_dump - е включена в пакета клиентско приложение на PostgreSQL (все още изключително функционално). Този инструмент може да се извърши архивиране процедура от всеки отдалечен хост, подходящ достъп до базата данни. Но не забравяйте, че pg_dump не работи, без да има право на достъп. На практика това трябва да се чете достъп до всички таблици, сметище, което трябва да се направи, следователно, е почти винаги помощната програма се изпълнява като корен.
За да определите колко сървъра управление на бази данни трябва да се изпълнява употреба pg_dump -h домакин и -p пристанищни опции за командния ред. По подразбиране, домакини действа като сървър, където да показват pg_dump или това, което променливата е настроен PGHOST среда. Също така, стойността по подразбиране се определя от променлива порт PGPORT среда, или в случай на отсъствие на стойността, определена по време на компилация. (За удобство, сървърът обикновено се изготвя със същата стойност по подразбиране.)
Подобно на други клиентски приложения към PostgreSQL pg_dump по подразбиране ще се свърже с базата данни от името на операционната система на текущия потребител. За да промените това, трябва или да укажете опцията за -U или да зададете на околната среда променлива PGUSER. Човек трябва да се помни, че pg_dump клиент свързва използвате поддържан механизми за удостоверяване на сървъра.
Важно предимство на pg_dump над други резервни методи, които ще бъдат описани по-късно, е, че тази дупка, обикновено може да се зареди в нов PostgreSQL версия, а методът на резервно копие на нивото на файловата система и непрекъснато резервно копие е изключително зависим от версията на сървъра , Също pg_dump само метод, който ще работи, когато прехвърлянето на базата данни се извършва между различните архитектури, като от 32-битова и 64-битова версия на сървъра.
Разтоварване създаден с помощта на pg_dump, тя е вътрешно последователна и представлява моментна снимка на базата данни към момента на стартиране на помощната програма. По време на работа, pg_dump не блокира други операции на базата данни. (Изключение са операциите, които трябва да се работи с ограничаване на брави, като повечето форми на ALTER TABLE.)
Важно: Ако вашата схема на база данни въз основа на OIDs (например като външни ключове), а след това трябва да попитате pg_dump ги спаси, като част от данните за всяка маса. За да направите това, използвайте команден ред опцията -o на.
24.1.1. Възстановяване на сметището
Текстовият файл, създаден от pg_dump, за четене на psql програма. Обща команда, за да се възстанови сметището е:
където INFILE - тази на изходния файл, получен след използване pg_dump. име на база данни няма да бъдат създадени от тази команда, така че трябва да го създадете сами с template0 преди изпълнението psql (например командата createdb -Т template0 DBNAME). psql поддържа възможности, подобни на pg_dump да изберете сървър за база данни връзка и потребителското име. Повече информация може да бъде намерена на препратка psql страницата.
Преди да възстановите SQL сметище, всички потребители, които притежават обекти или имат правата за достъп до обекти в базата данни за архивиране трябва вече да съществува. Ако не е, тогава възстановяването няма да бъде възможно да се пресъздаде на обектите с оригинални правата на собственост и / или правомощията. (Понякога това е това, което искате, но обикновено не е така.)
По подразбиране, psql-скрипт ще продължи да работи след грешка SQL. Можете да стартирате psql променлива ON_ERROR_STOP да променят поведението, а след това psql когато SQL грешка ще приключи своята работа с код изход 3:
Във всеки от двата случая се случи частично възстановена база данни. Освен това, можете да зададете възстановяване на всички сметището като една сделка, а след възстановяването ще бъде или изцяло завършени или тя ще се върне в първоначалното си състояние. Този режим може да се настрои чрез задаване на psql -1 затворен-сделката или опцията на командния ред. Използването на този режим, незначителна грешка ще доведе до намаление на цените за възстановяване, който работи в продължение на няколко часа. Въпреки това, той може да е за предпочитане за разлика от ръчно почистване на база данни, след частичен сметище възстановяване.
Важно: Извежда pg_dump комунални услуги са относително template0. Това означава, че който и да е език, процедури и т.н. добавена чрез template1, ще бъде запазена pg_dump полезност. В резултат на това, ако се използва в template1 за намаляване, трябва да създадете празен база данни с помощта на template0, както е показано в примера по-горе.
След възстановяване на резервно копие има смисъл да тече ANALYZE на всяка база данни, така че оптимизатора на заявки е събрал полезни статистически данни.
24.1.2. Използването pg_dumpall
pg_dump магазини данните за една база данни за времето на работа и не се изхвърлят информация за ролите и пространство за таблици (защото те вече не принадлежат към клъстера от една база данни). Подкрепа за по-лесно пестене на цялата съдържателна данни клъстер база данни осигурява pg_dumpall програма. Това прави резервно копие на всяка база данни в даден клъстер, а също така спестява данните, свързани с клъстера, като например определяне на ролите и пространства за таблици. Обичайно приложение на тази команда е както следва:
Получената сметището може да се възстанови с помощта psql:
(Всъщност, можете да укажете името на съществуваща база данни, но ако мишката се провежда в празна група след Postgres обикновено трябва да се използва база данни.) Когато възстановявате сметището pg_dumpall винаги изискват супер, защото че е необходимо да се възстанови информация за ролите и tablespaces. Ако се използва пространството за таблици, за да се уверите, че масата за път в сметището са подходящи за нови инсталации.
pg_dumpall време заработи команди, за да пресъздаде роли празни пространства таблици и бази данни, и след това призовава pg_dump за всяка база данни. От това следва, че макар всяка база данни ще бъде вътрешно последователни, моментни снимки на различни бази данни не могат да бъдат направени точно по същото време.
24.1.3. Работа големи бази данни
Всяка операционна система има ограничение на максималния размер на файл, който може да доведе до проблеми при създаването на големи pg_dump полезност на изходните файлове. За щастие, pg_dump може да изведе на стандартния изход, което го прави възможно да се използват стандартни инструменти Unix да се реши този потенциален проблем.
Има няколко възможни начина:
Използвайте сгъстен сметище. Възможност за използване на всяка програма за пресоване, например, софтуерна:
Възстановен, както следва:
Използвайте разделяне. Разделената команда позволява да се раздели на изхода в малък размер на файла разрешено за тази файлова система. Така например, създава изходния част на първата мегабайт:
Възстановен, както следва:
Използвайте персонализиран формат pg_dump сметище. Ако PostgreSQL е съставена на система с инсталирана библиотека компресия Zlib, потребителски формат записва сметище данни ще бъдат компресирани, когато пишете във файла местоназначение. Това е подобно на начина на използване на GZIP, но той има допълнителното предимство, че маси могат да бъдат възстановени избирателно. Със следната команда за създаване на база данни с помощта на сметище обичай изходен формат:
Персонализирана сметище формат няма да може да се възстанови, тъй като сценарият за psql, вместо pg_restore трябва да се използва инструмент:
За много големи бази данни, трябва да се съчетаят сплит с един от другите методи.