2013-04-25 2 views
0

Что можно ожидать, если после обновления с postgres 8.x до 9.x и запускать pg_upgrade с опцией -link, я «понижаю» до 8.x (что означает, я отключил демон pg-9 и запустил демон pg-8)?Повторные обновления и понижения PostgreSQL 8.x-9.x-8.x-9.x

В частности, предположим, что пока я был в pg-9, я вставил некоторые данные в таблицы? Могу ли я ожидать, что эти данные вернутся к pg-8? Это зависит от того, были ли таблицы, в которые я вставлял эти данные, уже существовал во время моего pg_upgrade? И (назовите меня извращенным), предположим, что я переустановил pg-9, повторно переделал до pg-8 и так много раз. Есть ли какие-либо гарантии, или я беру свои шансы?

Я провел несколько небольших испытаний. Я нахожу, что после первого понижения я вернулся примерно к данным, которые у меня были до того, как я запустил pg_upgrade. Грубо, не совсем. И с каждым циклом обновления-понижения, кажется, получается более «грубо».

Теперь я могу жить с «грубой» частью. Однако я действительно ненавижу, если после слишком много повторного повторного обновления/понижения, у меня закончилась безвозвратно поврежденная БД. Должно быть, это беспокойство?

Наконец-то, я знаю о pg_dump, но по причине времени и хранения я хотел бы избежать этого, если это возможно.

+0

Что вы пытаетесь выполнить путем повторных обновлений и понижений? –

+0

Ну, postgresql - это единый продукт, который я бы хотел отправить. Текущая версия моего продукта поставляется в комплекте с postgres-8, а в следующей версии - postgres-9. Поэтому меня просто интересуют, что будут испытывать мои пользователи, если они будут обновлены до * моей новой версии, но потом, чувствуя себя несчастным по какой-либо причине, они решили перейти на мою более старую версию. И затем, возможно, получив их мужество, они решают обновить. –

+1

В интересах сохранения данных ваших пользователей, вероятно, лучше всего потребовать сброс и перезагрузку в случае понижения. Это громоздко, конечно, но это лучше, чем dataloss. –

ответ

2

Вы должны рассмотреть pg_upgrade как необратимый шаг. Если вы хотите отменить изменения, не используйте --link, чтобы старая база данных оставалась на месте и не изменялась. Если пользователь вернется к старой базе данных, они потеряют изменения, внесенные с момента их обновления.

Вы действительно должны предоставить средство резервного копирования и восстановления, которое пользователь может использовать, чтобы они могли делать резервную копию, обновлять до новой версии и, если несчастливое понижение, затем восстановить резервную копию. Для бонусных очков сделайте ваш инструмент резервного копирования совместимым с созданием резервных копий с обратной совместимостью, поэтому резервная копия из $ newversion может быть восстановлена ​​до $ oldversion.

Смежные вопросы