PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Архивиране и възстановяване на PostgreSQL 9.0

В PostgreSQL, Backup &Recovery са много лесни за потребителя в сравнение с други бази данни. Много от тях няма да се съгласят с това, добре, нека не влизаме в дебат. Що се отнася до архивирането, PostgreSQL не поддържа ИНКРЕМЕНТАЛНО РЕЗЕРВНО КОПИРАНЕ, но има много последователни инструменти за архивиране и заобикаляне на ниво ОС за постигане на тази цел.

Моята графична презентация за PostgreSQL Backup and Recovery дава пълна концептуална идея. Разглеждайки диаграмата, можете да разберете кои архиви могат да се използват за възстановяване или възстановяване.

Логическо архивиране

pg_dump, pg_restore и pg_dumpall помощни програми, използвани за логически архиви. pg_dump и pg_restore ще помогнат при вземането на резервни копия за ниво база данни, ниво на схема и ниво на таблица. Pg_dumpall се използва за дъмп на ниво клъстер.

Поддържат се три формата с pg_dump, Plain SQL формат, Custom Format и Tar Format. Изписванията на потребителски и Tar Format са съвместими с помощната програма pg_restore, докато дъмповете във формат Plain SQL са съвместими с помощната програма psql за възстановяване.

По-долу са дадени примерите за всяко ниво на архивиране и свързаните с тях команди за възстановяване.

Забележка:Задайте настройките по подразбиране за PGDATABASE, PGUSER, PGPASSWORD и PGPORT в .bash_profile (Променливи на средата в Windows)

Изхвърляне и възстановяване на обикновен SQL формат

$ pg_dump -U потребителско име -Fp dbname> име на файл
или
$ pg_dump -U потребителско име dbname -f име на файл
или
$ pg_dump -Fp -U потребителско име dbname -f име на файл

За възстановяване използвайте командата psql

$ psql -U потребителско име -f име на файл dbname
или
postgres=# i SQL-име-файл / /в psql терминал с i опция

Персонализиран формат

$ pg_dump -Fc dbname -f име на файл
$ pg_restore -Fc -U потребителско име -d dbname filename.dmp

Tar формат

$ pg_dump -Ft dbname -f име на файл
$ pg_restore -U потребителско име -d dbname име на файл
или
$ cat tar-file.tar | psql -U потребителско име dbname

Забележка:Изхвърлянията на ниво схема и таблици могат да се извършват по същия начин чрез добавяне на свързани опции.

Думп на ниво клъстер:

$pg_dumpall -p portnumber> име на файл

За възстановяване използвайте командата psql

$ psql -f име на файл

Има много най-добрият начин за вземане на сметища и методологии за възстановяване. По-специално, Саймън Ригс и Хану Кросинг – книгата „PostgreSQL 9 Administration Cookbook – 2010“ е добър начин да започнете с PostgreSQL Backup and Recovery, публикуван от www.2ndQuadrant.com.

Физическо архивиране (Архивиране на файловата система)

Студено архивиране:

При студено архивиране, това е просто архивиране на файловата система на директория /data, когато екземплярът на Postgres не работи, означава, за да се постигне самостоятелно архивиране на директория с данни, сървърът на базата данни трябва да бъде изключен преди копиране. PostgreSQL дава гъвкавост за запазване на pg_xlog и pg_tblspce в различни точки на монтиране чрез мека връзка. Докато копирате директорията /data, включително данните на меката връзка, използвайте командата по-долу.

tar czf backup.tar.gz $PGDATA
или
cp -r $PGDATA /backup/
или
rsync -a $PGDATA /където и да е/данни

Горещо архивиране (онлайн архивиране):

В Hot Backup, клъстерът ще бъде готов и ще работи и базата данни трябва да бъде в режим на архивен дневник. Две системни функции ще уведомят екземпляра за стартиране и спиране на процеса на горещо архивиране (pg_start_backup(),pg_stop_backup()). Преди да продължим с онлайн архивирането, нека обсъдим режима на архивния дневник на базата данни, който е задължителен за онлайн архивиране.

Активиране на WAL архивиране:

Следващите мои публикации ще разкажат за PITR / Tunning WAL и др., в момента разглеждаме архивирането на WAL. В системата на базата данни PostgreSQL действителната база данни „записва“ в допълнителен файл, наречен дневник за предсрочно записване (WAL), на диск. Той съдържа запис на записи, направени в системата на базата данни. В случай на срив базата данни може да бъде поправена/възстановена от тези записи.

Обикновено регистрационните файлове за предварителна запис на редовни интервали (наречени контролни точки) съвпадат с базата данни и след това се изтриват, тъй като вече не се изискват. Можете също да използвате WAL като резервно копие, защото има запис на всички записи, направени в базата данни.

Концепция за WAL архивиране:

Дневникът за предварителна запис се състои от всеки 16 MB, които се наричат ​​сегменти. WAL се намират в директорията pg_xlog и това е поддиректорията на „директорията с данни“. Имената на файловете ще имат числово име във възходящ ред от екземпляр на PostgreSQL. За да извършите архивиране на базата на WAL, се нуждаете от основно архивиране, тоест пълно архивиране на директорията с данни и сегментите на WAL между базовото архивиране и текущата дата.

Конфигурирането на архивиране на WAL сегменти може да бъде избрано чрез задаване на двата конфигурационни параметъра archive_command и archive_mode в postgresql.conf. Превръщането на клъстера в режим на архивиране изисква RESTART.

archive_mode=on/off (булев параметър)
archive_command ='cp –i %p / Archive/Location/ f% '

Забележка: % p за копиране на файла с път, използван като име на файл и % f без запис в директория за целевия файл.

За допълнителна информация относно процеса на архивиране вижте публикацията PostgreSQL 9.0 Памет и процеси.

Онлайн архивиране:

За да направите онлайн резервно копие:

Стъпка 1 :Издайте pg_start_backup('lable') в терминала psql
postgres=# изберете pg_start_backup('fb');
Стъпка 2:Ниво на ОС копирайте директорията $PGDATA във всяко местоположение за архивиране
$ cp -r $PGDATA /anylocation
Стъпка 3:Издаване на pg_stop_backup() в psql терминал.
postgres=# изберете pg_stop_backup();

Забележка: Не е необходимо тези две функции да работят в една и съща връзка с база данни. Режимът на архивиране е глобален и постоянен.

В PostgreSQL няма каталог за съхраняване на времето за начало и спиране на онлайн архивирането. Въпреки това, когато онлайн архивирането е в процес, няколко от файловете са създадени и изтрити.

pg_start_backup(‘label’) и pg_stop_backup са двете системни функции за извършване на онлайн архивиране. С pg_start_backup(‘label’) файл backup_label се създава под $PGDATA директория, а с pg_stop_backup() файл ‘wal-segement-number.backup’, създаден под $PGDATA/pg_xlog. Backup_label ще даде началния час и местоположението на контролната точка на сегмента WAL, също така ще уведоми екземпляра на PostgreSQL, че клъстерът е в BACKUP-MODE. Файлът „wal-segment-number.backup“ в директорията $PGDATA/pg_xlog описва времето за начало и спиране, местоположението на контролната точка с номер на сегмента WAL.

Забележка:След pg_stop_backup(), файлът backup_label се изтрива от екземпляра на PostgreSQL.

Публикувайте вашите коментари, предложения.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкна няколко стойности в таблица на postgres наведнъж?

  2. Инсталиране на pg gem; ГРЕШКА:Неуспешно изграждане на собствено разширение за gem

  3. Spring Data JPA одитът не работи за метода за актуализиране на JpaRepository с анотация @Modifying, защо?

  4. Внедряване на Django в Heroku (грешка Psycopg2)

  5. Компилиране на PL/Proxy с PostgresPlus Advance Server 9.1