powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Горячее резервное копирывание
21 сообщений из 21, страница 1 из 1
Горячее резервное копирывание
    #33282595
s_elected
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ еще одна проблема
Как мы все знаем есть PG_DUMP
это полное или частичное резервное копирывание

А как в PG орнганизовать горячее резервное копирывание
так чтобы целостность данных у дампа не рушилась и т.д?

Т.е. мы сдампили таблицу 1 она изменилась
а потом мы дампим таблицу 2 которая зависит ключами от таблицы 1

В оракле эта проблема решается использованием RMAN

А в PG ?
Креативу нет предела ;-)
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33282626
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pg_dump работает одной транзакцией, и видит целостные данные на момент её начала.
... It makes consistent backups even if the database is being used concurrently.

Ну и ещё On-line backup - если база очень большая.
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33284876
s_elected
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ффффpg_dump работает одной транзакцией, и видит целостные данные на момент её начала.
... It makes consistent backups even if the database is being used concurrently.

Ну и ещё On-line backup - если база очень большая.

Ам ну хорошо одной транзакцией....
Так все равно он увидит новые записи в зависимой таблице при Selecte ....

Или я что то не понимаю ?
Он что снимок делает ? Или как ? Разъясните пожалуйста.
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33284907
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно снимок. MVCC всегда работает. При уровне изоляции serializable (в котором pg_dump работает) новые строки не видны.
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33355792
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фффф ещё On-line backup - если база очень большая.
если задача - иметь "горячую копию" на другом сервере (при необходимости - стартовать резервный), то как я понял по ссылке, читая через 2 на 3-й, востановление начнется после старта резервного сервера с настроенным recovery.conf , и закончится переименованием его в recovery.done. Т.е. подъем резервного сервера займет полное время подъема аналогичного dump-а.
Можно ли ускорить процесс (т.е. держать резервный сервер непрерывно в режиме "recovery mode" и поднимать приращения wal по мере их поступления?)


ОФФ. что произойдет, если стартовать постгрес с зазеркаленным (каким-то макаром) "по горячему" дисками (при идентичных путях к data) другого постгреса?
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33356187
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321
Можно ли ускорить процесс (т.е. держать резервный сервер непрерывно в режиме "recovery mode" и поднимать приращения wal по мере их поступления?)

restore_command = 'cp /mnt/server/archivedir/%f %p'

which will copy previously archived WAL segments from the directory /mnt/server/archivedir. You could of course use something much more complicated, perhaps even a shell script that requests the operator to mount an appropriate tape.

It is important that the command return nonzero exit status on failure. The command will be asked for log files that are not present in the archive; it must return nonzero when so asked. This is not an error condition. Be aware also that the base name of the %p path will be different from %f;

Вроде ничто не мешает - вместо cp пишешь скрипт который возвращает не 0 - тогда Postgres будет висеть в режиме рекавери, а этот скрипт внешней командой после аварии основного сервера заставить вернуть 0 - БД будет считаться накаченой - останется только запустить
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33356892
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сиба.
(говорю же "читаю через2 на 3-й" потом сам наткнулся на: авторIf we continuously feed the series of WAL files to another machine that has been loaded with the same base backup file, we have a "hot standby" system: at any point we can bring up the second machine and it will have a nearly-current copy of the database.)


но по поводу "зеркалирования" никто не высказался.
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33357494
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321ОФФ. что произойдет, если стартовать постгрес с зазеркаленным (каким-то макаром) "по горячему" дисками (при идентичных путях к data) другого постгреса?

Насколько я понимаю, простое tar -czvf file_bck.tgz /..../data на работающем сервере допустимо, т е растарив этот архив и запустив постгри на другом узле - мы получим состояние БД с закоммичеными транзакциями до последнего чекпоинта.
Т е можно в cron, скажем, поставить архивирование на работающем сервере с передачей архива и растариванием на другом узле. После падения первого - на втором просто запускаем постгри и получаем консистентное состояние БД на последний чекпоинт с закомиччеными транзакциями.
Время чекпоинта конфигурируется
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33357521
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно так же физическое зеркалирование диска будет работать, проблема только в том, чтобы "авария" не произошла в момент еще незаконченного зеркалирования - т е посередине процесса. Если же диски используются в отдельной стойке - типа, скажем, MSA - то нужно просто замонтировать эти диски на другом узле и запустить постгри - как я писал будет откат всех незакоммиченных транзакций на последний чекпоинт. Проблема еще может быть с правами на каталог с БД видимо, но и то не факт.
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33357745
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landyпроблема только в том, чтобы "авария" не произошла в момент еще незаконченного зеркалированият.е. надо иметь 2 зеркала? Или точнее - зеркало раб. диска и зеркало с зеркала. С разведенными по времени процессами.

но не понял уверенности в 2031006 и 2031045 в косистентности данных. ведь и зеркалирование и затаривание проистекают некое время. Что обеспечит "моментальность" снимка?
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33357953
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу 2031045 - падает узел с постгри, стойка рабочая. При старте Postgres просматривает сначала существующие WAL начиная с последнего чекпоинта на предмет redo/undo и только после этого говорит что он готов к работе(этот механизм используют очень многие БД). По поводу затаривания - механизм используется тот же - про это где-то в доке написано, искать некогда. Будет время - запощу сюда по этому поводу
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33357978
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т е для надежности и скорости работы важно каталог с WAL положить на отдельный быстрый диск, т к эти файлы по чекпоинту обновляются в первую очередь. И еще - не нужно выключать fsync или какой там механизм используется, т к в противном случае запись в WAL будет идти быстро, но нет гарантии, что данные из буфера ОС(не БД) будут сброшены, т е сброс данных физически из буферов системы идет по fsync
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33359101
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно pgcluster посмотреть. Он правда редко обновляется и HyperThreading не любит.
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33359542
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Funny_FalconpgclusterСиба, смотрю.
Funny_FalconHyperThreading не любит.ф чем это проявляецца? И чем чревато?

Да, а што с нагрузками от самого pgcluster? когда тормоза, обусловленные его присутствием (т.е. необходимостью непрерывной репликации с синхронизацией завершения транзакций) окупаюцца? Или это не к Вам?
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33360721
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to landy:
С чего Вы решили что "tar -czvf file_bck.tgz /..../data" на работающем постгресе должно работать? Погасите сервер, тогда и можно паковать каталог, а так в ЛУЧШЕМ случае потеряете данные, на самом деле поведение неопределено!
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33361181
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем доку вот тут
22.3.2. Making a Base Backup

The procedure for making a base backup is relatively simple:

1.
Ensure that WAL archiving is enabled and working.
.....
3. Perform the backup, using any convenient file-system-backup tool such as tar or cpio. It is neither necessary nor desirable to stop normal operation of the database while you do this.
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33361187
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т е в первую очередь конечно тарим WAL потом кластер с данными, чтобы лог гарантированно содержал транзакции возможно добавленных данных. В этом случае мы должны потерять данные после последнего чекпоинта в WAL. Это относится к горячему зеркалированию, но это я не проверял да и метод мягко говоря не тривиальный. Лучше конечно на мой взгляд иметь hot stand by и накатыватьего по архивированным логам
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33361219
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, для проверки сделал следующее(на SuSE 9.3)


1. создал БД bench
2. запустил из контриб - pgbench -s 100 -i bench - создание и заполнение таблиц
andy@nbook: ./pgbench -s 100 -i bench
creating tables...
10000 tuples done.
20000 tuples done.
30000 tuples done.
40000 tuples done.
50000 tuples done.
...
3. подождал немного(где-то до 500000) запустил tar -czvf d3.tgz DATA при работающем сервере и pgbench
...
ATA/global/16756
DATA/global/16758
DATA/global/pgstat.stat
DATA/global/pg_pwd
DATA/global/pg_control
DATA/pg_hba.conf
DATA/PG_VERSION
DATA/pg_clog/
DATA/pg_clog/0000
DATA/pg_xlog/
DATA/pg_xlog/000000010000000000000010
DATA/pg_xlog/000000010000000000000011
DATA/pg_xlog/000000010000000000000012
DATA/pg_xlog/00000001000000000000000C
DATA/pg_xlog/00000001000000000000000D
DATA/pg_xlog/00000001000000000000000E
DATA/pg_xlog/00000001000000000000000F
DATA/pg_xlog/archive_status/
DATA/postgresql.conf
DATA/pg_tblspc/
DATA/postmaster.opts

4. прервал pgbench посмотрел что в accounts
1150000 tuples done.

andy@nbook: psql template1
Welcome to psql 8.0.3, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

template1=# \c bench
You are now connected to database "bench".
bench=# select count(*) from accounts;
count
---------
1150000
(1 row)
5. Остановил сервер, растарил d3.tgz в другой каталог и запустил сервер по новой
andy@nbook:~/DATA1> postmaster -i -D DATA
LOG: database system was interrupted at 2005-11-03 20:28:57 MSK
LOG: checkpoint record is at 0/F05FC00
LOG: redo record is at 0/F002010; undo record is at 0/0; shutdown FALSE
LOG: next transaction ID: 16648; next OID: 1301435
LOG: database system was not properly shut down; automatic recovery in progress
LOG: redo starts at 0/F002010
LOG: unexpected pageaddr 0/9000000 in log file 0, segment 16, offset 0
LOG: redo done at 0/FFFFF24
LOG: database system is ready

Имеем
andy@nbook:~> psql -l
List of databases
Name | Owner | Encoding
-----------+-------+----------
bench | andy | UNICODE
compiere | andy | UNICODE
template0 | andy | UNICODE
template1 | andy | UNICODE
(4 rows)

andy@nbook:~> psql bench
Welcome to psql 8.0.3, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

bench=# select count(*) from accounts;
count
--------
713780
(1 row)

bench=#
Рабочая БД , консистентная - только нет данных после последнего чекпоинта на момент выполнения архива. Как на виндах это работает - хз, может файлы и лочатся не знаю, но на линухе работает
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33363489
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landyЧитаем...т.е. ключевым тут конечно является
1. Ensure that WAL archiving is enabled and working.
ибо без него затаривание никакой косистентности видимо не гарантирует. С ним - поскольку наличие в таре всех приращений WAL от старта до какого-то включительно гарантировано, гарантировано(?) и восстановление данных на этот момент.
(кстати, а могла бы быть проблема в вакууме или автовакууме? или данных WAL достаточно для восстановления консистентности самих по себе?)


ЗЫ. в случае зеркалирования вопрос таки открыт. Видимо WAL позволяет восстановить консистентное состояние и для "немоменталього" снимка. Но вот если не использовать WAL, то есть ли возможность иметь "моментальный" снимок (посредством какого либо зеркалирования)? И будет ли он "консистентным" (т.е. разберется ли постгресс без WAL, какие данные были данными незавершенных на момент "снимка" транзакций, и на самом ли деле коммит всех данных транзакции совершается одномоментно (т.е. изменением одного и того же бита данных носителя), или есть исключения?
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33364275
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Ensure that WAL archiving is enabled and working.

Архивирование необязательно должно быть разрешено и настроено. Без WAL Postgres не будет работать. По умолчанию используется (кажется 5) WAL сегментов по 16 Мб каждый, переключаемые по кругу(если архивирование не настроено). Начсет зеркалирования - часть данных может быть в кэше БД, а часть уже сброшена на диск, как тогда определить что же было записано, а что нет - WAL пишется в первую очередь и является точкой отсчета, на основании которой можно проконтролировать страницы БД.
...
Рейтинг: 0 / 0
Горячее резервное копирывание
    #33364550
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landyБез WAL Postgres не будет работать. По умолчанию используется (кажется 5) WAL сегментов по 16 Мб каждый, переключаемые по кругу(если архивирование не настроено).Т.е. WAL (?журнал транзакций?)пользуецца всегда. В т.ч. как механизм восстановления после падений? А использование в инкрементальном бэкапе - опция? (Finally, WAL makes it possible to support on-line backup and point-in-time recovery)

Спасибо. Атож недоссук доку подробно воскурить
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Горячее резервное копирывание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]