Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
Ужас. База на Psql 7.4.6. Нет резервной копии ... (вернее, есть, но трехнедельной давности:(). Местный админ серверов по этому поводу разводит руками - ну виноватого искать - последнее дело. Писал запрос на обновление одной записи от имени postgres. Отвлекли, и не дописал where id = ... В результате обновил одним значением колонку во всей таблице (40000 записей). Попытка оборвать транзакцию не увенчалась успехом. Чего делать ? Сервер пока остановлен, чтобы не было операций записи. Бухгалтерия в шоке, я тоже :( Как я понимаю, пока не было vacuum в базе хранится предыдущее состояние таблицы. Или нет ? Если можно как-то его достать - помогите, pls ! Горю ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 12:10 |
|
||
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
Вот что выдает утилита pg_controldata : pg_control version number: 72 Catalog version number: 200310211 Database cluster state: shut down pg_control last modified: Tue 29 Nov 2005 11:10:56 AM EET Current log file ID: 1 Next log file segment: 35 Latest checkpoint location: 1/224FB76C Prior checkpoint location: 1/224CDB34 Latest checkpoint's REDO location: 1/224FB76C Latest checkpoint's UNDO location: 0/0 Latest checkpoint's StartUpID: 24 Latest checkpoint's NextXID: 2845407 Latest checkpoint's NextOID: 17315369 Time of latest checkpoint: Tue 29 Nov 2005 11:10:53 AM EET Database block size: 8192 Blocks per segment of large relation: 131072 Maximum length of identifiers: 64 Maximum number of function arguments: 32 Date/time type storage: Floating point Maximum length of locale name: 128 LC_COLLATE: ru_UA LC_CTYPE: ru_UA В каталоге /xlog есть файлы вчерашнего и сегодняшнего дня, в каталоге /clog есть файлы вчерашнего и сегодняшнего дня с соответствующим временем. Как отменить транзакции по состоянию на вчера ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 14:16 |
|
||
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
в 7.4 помойму штатных средств нету, хотя я могу ошибатся ,что то где то по форуму пробегало(мож конечто это про 8.0 было)...поищи здесь... востанови по возможности часть данных из бакапа остальное руками...если в таблице всего 40000 записей то могу предположить что много не могло за 3 недели поменятся. какойто кусок думаю остался неизменным... хотя это только предположение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 15:06 |
|
||
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
если _фантазировать_ исходя из этого , то (сделав есессно _полную копию_ всех файликов, которые можно только помыслить) надо попытаться срубить последние файлики WAL. (тогда при старте постгрес кажется должен восстановиться на предпоследний попавший в WAL момент). Но это именно фантазия. Опыта не имею. (т.ч. хорошо бы это пробовать на нерабочем сервере). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 15:12 |
|
||
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
Рапортую. Все оказалось очень хреново :(. Журналом транзакций воспользоваться нельзя, хотя в файлах xlog явно лежат исходные странички данных, которые модифицировались в той злощастной транзакции - смотришь, облизываешься, но ... По оценкам, мы потратили бы примерно неделю, чтобы написать свою утилиту разбора формата xlog-файлов, чтобы получить исходное состояние таблицы. Лихорадочные поиски готовых таких утилит ничего не дали. Как я понял, система отката реализована только в версии psql 8. Пришлось восстановить данные с архива трехнедельной давности и перенести оттуда нужный столбец, часть свежих данных в этот столбец получили из других таблиц путем несколькочасовых бдений до 12 ночи. А около 500 строк так и остались кривыми. Бухгалтера их еще долго будут разгребать. Ну, мы их пометили для их удобства :) Возможно, что можно копать в сторону формата файла pg_control (он нигде явно не описан), в нем подменять значения checkpoint-ов и перезапускать postges в надежде, что будет восстановление с записанного насильно checkpoint-а. Но это только фантазия, скорее всего - не все так просто. Ну - мы еще исправили значение интервала между checkpoint-ами в сторону увеличения, чтоб хватило времени добежать и клацнуть питанием, в случае чего :-) Ну и приняли меры к резервному копированию. В доке по WAL к версии 7.4 одни обещания, как все круто будет в 8-й версии. И вроде как оно там есть - никто не пробовал ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 19:47 |
|
||
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
8.0.x - 8.1 вполне уже можно использовать как промышленные, имеется возможность он-лайн бэкапа с накатом транзакций на заданное время, автоматическое бэкапирование журналов на другой сервер. Лучше перейти на 8-ку, спокойней будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 22:10 |
|
||
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
мы у себя на "ручные" апдейты в боевую базу перевели на следующую технологию создаем временную(не темповую) таблицу структурой xtable (row_id_key,old_value,new_value); проверяем табличку,далее делаем update table from xtable set data=xtable.new_value where id=xtable.row_id_key; если вдруг спустя сутки обнаружится что это косяк в апдейтах.. или там условие неправильное и надо откатится срочно делаем точно такой же запрос update table from xtable set data=xtable.old_value where id=xtable.row_id_key; вобщем получается долгоиграющая транзакция с возможностью undo/redo это при этом не надо достовать 1 табличку из гиганского бакапа и трахатся с востановлением данных.. но естественно это не панацея т.к. есть случаи когда такое востоновление делать нельзяб,например если поле которое мы обновили меняется достаточно часто и при востановлении таким способом мы рискуем потерять часть валидных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 10:44 |
|
||
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
учусь заочно. на прошлой сессии нам на БД расказывали что postgresql обладает "темпоральностью", т.е. все изменения хранятся в базе и можно узнать значение на любой момент времени? после этого весь вечер ее(темпоральность) искал - не нашел :( может кто знает как ее можно использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 13:12 |
|
||
|
Help !!! Горю ! Надо восстановить один столбец в самой важной таблице !
|
|||
|---|---|---|---|
|
#18+
ZemA wrote: > учусь заочно. > на прошлой сессии нам на БД расказывали что postgresql обладает > "темпоральностью", т.е. все изменения хранятся в базе и можно узнать > значение на любой момент времени? > после этого весь вечер ее(темпоральность) искал - не нашел :( > может кто знает как ее можно использовать? И не найдешь - time travel выброшен где-то к релизу 6.2 :) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 13:35 |
|
||
|
|

start [/forum/search_topic.php?author=cushe&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 609ms |
| total: | 862ms |

| 0 / 0 |
