Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, как просмотреть удаленные записи в таблице. Или может можно как то вернуть состояние базы на определенное время назад (до выполнения операции удаления). По теории то вроде все можно, но я в Postgres новичек и не знаю как это сделать практически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 01:56 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
удаленные записи - удалены. Это вам не dbf... Интересно было бы увидеть эту теорию, по которой можно, может я чего не знаю.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 14:01 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Вариант только делать поле состояния записи и им рулить я так буду делать ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 14:04 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
pamirудаленные записи - удалены. Это вам не dbf... Интересно было бы увидеть эту теорию, по которой можно, может я чего не знаю.... mojet avtor imel v vidu ROLLBACK? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 14:16 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
СергейК pamirудаленные записи - удалены. Это вам не dbf... Интересно было бы увидеть эту теорию, по которой можно, может я чего не знаю.... mojet avtor imel v vidu ROLLBACK?ну, если он это имел ввиду, надо было конкретизировать.... Ждем автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 15:09 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Транзакция точно заврешилась. Но я читал на форумах что можно 1) вернуть базу в состояние на какой то момент времени если есть файлы в data\pg_xlog и не выполнялся VACUUM 2)Логично предположить что это как том можно выгрести запросом (я полагаю через системные колонки), но знаний не хватает что бы сделать это практически ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 15:38 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Первый вывод я сделал и стандартного халпа 23.3.3. Recovering with an On-line Backup (у меня релиз 8.1.5). Но я делаю вроде как написано, но почуму то восстановление на определенный момент времени не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 16:21 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Судя по всему, то, о чём идёт речь, близко по смыслу фиче "time travel", родная поддержка которой была давным-давно удалена из Постгреса (обсуждения легко найти в архивах рассылки -hackers). Сейчас можно рекомендовать реализовывать подобные штуки на уровне приложения: см., например, статью на Varlena: http://www.varlena.com/GeneralBits/122.php . Другой способ -- воспользоваться модулем hstore (решение нигде не описано, но извернуться можно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 20:14 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
vovaspec2000Первый вывод я сделал и стандартного халпа 23.3.3. Recovering with an On-line Backup (у меня релиз 8.1.5). Но я делаю вроде как написано, но почуму то восстановление на определенный момент времени не происходит. А, о :-) Теперь ясно, о чём идёт речь -- о PITR. Если есть возможность, советую перейти к использованию ветки 8.2, т.к. в 8.1 эта функциональность была сыровата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2007, 20:18 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Nikolay Samokhvalov Сейчас можно рекомендовать реализовывать подобные штуки на уровне приложения: см., например, статью на Varlena: http://www.varlena.com/GeneralBits/122.php . Другой способ -- воспользоваться модулем hstore (решение нигде не описано, но извернуться можно). Нужно ли заранее что то готовить для реализации этой штуки? Если да то у меня ситуация похуже, я заранее ничего непоготовил и у меня пропало 10000 записей. Из бекапа я смогу востановить часть, но не все и эта часть, которая потеряна очень важная информация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2007, 13:48 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Nikolay Samokhvalov Теперь ясно, о чём идёт речь -- о PITR. Если есть возможность, советую перейти к использованию ветки 8.2, т.к. в 8.1 эта функциональность была сыровата. Я это делать практически в стандартном хелпе не очень понятно что куда ложить. У меня есть все транзакционные блоки за день в котором пропала инфа. И я обязятельно перейду на 8.2, но к сожалению у меня эта ситуация возникла в версии 8.1.5. Может все таки есть какой то шанс что оно не очень плохо работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2007, 13:52 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Для того, чтобы использовать PITR, нужно иметь base backup и серию архивных WAL-файлов, синхронизированную с ним, чего вы не имеете, насколько я понимаю. Поэтому о PITR-е в данном случае можно забыть. Другое дело, что да, в PostgreSQL есть возможность до VACUUM-а (ну и при отключенном автовакууме, разумеется) извлечь все версии всех измененных рядов, поскольку туплы в постгресе не удаляются, а просто метятся xid-ом транзакции, которая их убила. Так что ни в коем случае не делайте сейчас VACUUM и сразу сделайте backup всей директории PGDATA! Для того, чтобы понять, что произошло с данными и попытаться их вытащить можно поиграться с проектом xlogviewer, его можно найти на PgFoundry. Кажется, есть еще другие подобные средства помимо HEX-редактора, если вспомню -- напишу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2007, 16:59 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
izДля того, чтобы понять, что произошло с данными и попытаться их вытащить можно поиграться с проектом xlogviewer, его можно найти на PgFoundry. Попробую усановить xlogviewer, на другом компе под Линухом (у меня база в PostgreSQL под Виндой). А если в таблице эти записи метятся версиями транзакций, то почему нельзья простым запросом их вытащить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 02:07 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
izДля того, чтобы использовать PITR, нужно иметь base backup и серию архивных WAL-файлов, синхронизированную с ним, чего вы не имеете, насколько я понимаю. Поэтому о PITR-е в данном случае можно забыть. Хм. ИМХО не совсем верно, серия архивных WALов нужна только если нужно откатиться дальше чем есть в текущих WAL'ах. На небольшую транзакцию назад можно откатиться и так. 1. Ессно перед любыми действиями - полный физический бекап (копия) директории с данными. 2. Все таки сделать откат. http://www.postgresql.org/docs/8.1/interactive/backup-online.html 23.3.3.1. Recovery Settings Вроде у меня получалось на 8.1 такое делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 10:35 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
vovaspec2000 А если в таблице эти записи метятся версиями транзакций, то почему нельзья простым запросом их вытащить? потому что это внутреннее представление, а не SQL-представление. то есть в ваших таблицах не появляются дополнительные колонки, чтобы вы могли написать SELECT ... WHERE xid_end < delete_xact_id, вся работа с версиями спрятана внутри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 10:36 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Похоже нужно перенести под Линух, причем на файловом уровне. У кого то есть опыт? Какие есть особенности, если это реально, вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 17:01 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
vovaspec2000Похоже нужно перенести под Линух, причем на файловом уровне. У кого то есть опыт? Какие есть особенности, если это реально, вообще. Шо? Зачем??? Для PITR - атлично вінь32 падходит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 17:31 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Я делаю конфигурационный файл: restore_command = 'copy d:\temp\%f "%p"' # Windows #recovery_target_time= '2007-06-07 14:40:00' # Time В "d:\temp" ложу файлы из папки pg_xlog, a pg_xlog - очищаю. Запускаю службу, смотрю логи: 2007-06-08 16:16:48 LOG: database system was shut down at 2007-06-08 16:16:47 FLE Daylight Time 2007-06-08 16:16:48 LOG: starting archive recovery 2007-06-08 16:16:48 LOG: restore_command = "copy d:\temp\%f "%p"" 2007-06-08 16:16:48 LOG: recovery_target_time = 2007-06-07 14:00:00+03 2007-06-08 16:16:49 LOG: restored log file "00000001000000000000009F" from archive 2007-06-08 16:16:49 LOG: invalid resource manager ID in primary checkpoint record 2007-06-08 16:16:49 LOG: using previous checkpoint record at 0/9FB3E910 2007-06-08 16:16:49 LOG: redo record is at 0/9FB3E910; undo record is at 0/0; shutdown TRUE 2007-06-08 16:16:49 LOG: next transaction ID: 3017927; next OID: 155259 2007-06-08 16:16:49 LOG: next MultiXactId: 1; next MultiXactOffset: 0 2007-06-08 16:16:49 LOG: automatic recovery in progress 2007-06-08 16:16:49 LOG: redo starts at 0/9FB3E958 2007-06-08 16:16:49 LOG: record with zero length at 0/9FB3EA58 2007-06-08 16:16:49 LOG: redo done at 0/9FB3EA10 2007-06-08 16:16:49 LOG: restored log file "00000001000000000000009F" from archive 2007-06-08 16:16:49 LOG: archive recovery complete 2007-06-08 16:16:49 LOG: database system is ready 2007-06-08 16:16:49 LOG: transaction ID wrap limit is 2147484148, limited by database "postgres" 2007-06-08 16:18:44 LOG: received fast shutdown request 2007-06-08 16:18:44 LOG: shutting down 2007-06-08 16:18:44 LOG: database system is shut down 2007-06-08 16:18:44 LOG: logger shutting down Он при любом параметре времени, обращается к файлу "00000001000000000000009F", хотя их за день 5 шт по 16 метров. Может я что-то не так далаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 19:55 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
Вы правильно сделали базовый бэкап командой SELECT pg_start_backup('label') на базе, которая сгенирировала логи, которые вы пытаетесь сейчас восстановить? Опишите _полную_ последовательность действий, которую вы делаете при попытке сделать point in time recovery, иначе сложно понять ваши проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2007, 15:49 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
izВы правильно сделали базовый бэкап командой SELECT pg_start_backup('label') на базе, которая сгенирировала логи, которые вы пытаетесь сейчас восстановить? Я логи не делал самостоятельно. Насколько я понял система их делает сама - это содержимое папки pg_xlog. Когда я обнаружил удаление записей таблицы я проверил папку - за текущий день есть 5 файлов по 16 метров. izОпишите _полную_ последовательность действий, которую вы делаете при попытке сделать point in time recovery, иначе сложно понять ваши проблемы. 1) Беру текущую базу (с удуленными записями) 2) Пишу конфигурационный файлик для восстановления, напр. (recovery_target_time= '2007-06-07 14:40:00' restore_command = 'copy d:\temp\%f "%p"' # Windows) 3) В папку d:\temp\ перемещаю файлы из "\data\pg_xlog" 4)Запускаю службу Постгреса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2007, 15:58 |
|
||
|
Просмотр удаленных записей таблицы
|
|||
|---|---|---|---|
|
#18+
vovaspec2000 izВы правильно сделали базовый бэкап командой SELECT pg_start_backup('label') на базе, которая сгенирировала логи, которые вы пытаетесь сейчас восстановить? Я логи не делал самостоятельно. Насколько я понял система их делает сама - это содержимое папки pg_xlog. Когда я обнаружил удаление записей таблицы я проверил папку - за текущий день есть 5 файлов по 16 метров. izОпишите _полную_ последовательность действий, которую вы делаете при попытке сделать point in time recovery, иначе сложно понять ваши проблемы. 1) Беру текущую базу (с удуленными записями) 2) Пишу конфигурационный файлик для восстановления, напр. (recovery_target_time= '2007-06-07 14:40:00' restore_command = 'copy d:\temp\%f "%p"' # Windows) 3) В папку d:\temp\ перемещаю файлы из "\data\pg_xlog" 4)Запускаю службу Постгреса. Вы плохо читаете предыдущие сообщения. То, что вы сейчас делаете -- PITR, point in time recovery, -- может быть сделан _только_ при условии, что у вас существует базовый бекап -- то есть бекап той базы, на которой был сделан злополучный DELETE. Этот бекап нужно было делать предусмотрительно до DELETE с помощью специальной команды pg_start_backup('label'). Вы его не имеете, так что все, что вы сейчас пытаетесь сделать -- бесполезно и ни к какому результату не приведет. Как я уже говорил выше, вас может спасти только xlogviewer и схожие проекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2007, 16:06 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34599656&tid=2005347]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 392ms |

| 0 / 0 |
