Назад | Перейти на главную страницу

Непреднамеренное обновление Postgresql до 9.2.3

Хорошо, я относительно новичок в Linux. Несколько месяцев назад мне удалось создать веб-сайт, используя версию CentOS, PHP и Postgres 9.1 от Amazon. Я сделал initdb на / pgdata, который был смонтирован на том Amazon, который я создал для этой цели. С тех пор сайт кипел, и мне казалось, что это не так уж и сложно! :)

Но прямо сейчас мой сайт не работает. Вот что случилось ...

Вчера я вошел в систему, чтобы начать некоторые изменения на сайте. Первое, что я увидел, это то, что были доступны некоторые обновления (естественно), поэтому я запустил «yum update». Он сделал кучу вещей и сообщил об успехе. Прохладно!

С изменениями на моем веб-сайте все шло хорошо, пока я не внес изменения в функцию Postgres. У меня ошибка:

ОШИБКА: не удалось загрузить библиотеку «/usr/lib64/pgsql/plpgsql.so»: «/usr/lib64/pgsql/plpgsql.so»: неопределенный символ: SPI_plan_get_cached_plan

(Я использую plpgsql в своих функциях)

Google привел меня в разные места, где мне казалось, что мне просто нужно перезапустить Postgresql. Я пробовал это разными способами. Постгрес остановится, но не запустится снова.

В какой-то момент я получил еще одно (немного более полезное) сообщение об ошибке:

«Каталог данных был инициализирован PostgreSQL версии 9.1, которая несовместима с этой версией 9.2.3».

Что за? В моем обновлении yum была установлена ​​новая несовместимая версия Postgres? Так ли мы живем в мире Linux? Крупные обновления без предупреждений о том, что это влечет за собой, и без моего разрешения? Foowee, в следующий раз я буду поосторожнее. Кстати, что я должен был сделать, если бы у меня снова было время?

Во всяком случае, это привело меня к эти ссылки, и, конечно же, документы postgres. Я застрял на запуске pg_upgrade. Вот моя команда:

pg_upgrade -d / pgdata_temp -D / pgdata -b /usr/lib64/pgsql/postgresql-9.1/bin/ -B / ?? / -v

Как мне узнать, где находится новый каталог bin Postgres (для аргумента / B)? Кажется, нигде нет. И все же, когда я бежал

su - postgres

initdb -D / pgdata -E UTF8

cat / pgdata / PG_VERSION

... раньше я получил "9.2".

Любая помощь будет очень высоко ценится. Может просто откатиться на 9.1? Это моя лучшая стратегия? Тогда как мне избежать обновлений при следующем запуске yum update? Или я рад обновиться, но как мне это сделать и обновить мою существующую базу данных до 9.2.3?

Спасибо!

РЕДАКТИРОВАТЬ: Я решил, что следующим лучшим вариантом будет отказаться от 9.1 и моей базы данных (у меня была копия данных в формате CSV) и перестроить базу данных 9.2 с нуля со сценариями, которые я сохранил в исходной сборке 9.1.

sudo su -
cd / pgdata
rm -fr *. * (удалить все в / pgdata из базы данных 9.1 - сначала я сделал резервную копию)
su - postgres
initdb -D / pgdata -E UTF

Отредактируйте postgresql.conf и pg_hba.conf и запустите сервер.

Я все еще понятия не имею

Но после нескольких дней работы в Google и простоев серверов мне все равно.

Непреднамеренное обновление - ошибка упаковки Amazon. Другие дистрибутивы Linux обычно не нарушают работу PostgreSQL при обновлении.

Чтобы выбраться из этого беспорядка, смотрите эту запись в их Вопросы-Ответы:

Какие шаги нужно предпринять для обновления PostgreSQL 9.1 до 9.2?

PostgreSQL 9.2 предлагает важные новые функции и улучшения производительности, и он был включен в выпуск Amazon Linux AMI 2012.09 по запросу клиентов.

После обновления PostgreSQL с 9.1 до 9.2 служба базы данных больше не запускается. Это происходит потому, что версию формата базы данных 9.1 нельзя сразу использовать с сервером 9.2. Мы предоставили пакет postgresql-upgrade как автоматическую установку вместе с последним выпуском postgresql 9.2. Это позволяет выполнять обновление базы данных на месте с помощью службы postgresql upgrade.

Незаметно для вас запускается pg_upgrade, чтобы перенести вашу базу данных в новый формат. Обратите внимание, что при обновлении файлы конфигурации, такие как pg_hba.conf, будут сброшены в чистое состояние. Ваши старые файлы конфигурации хранятся в / var / lib / pgsql9 / data-old и могут быть скопированы вместо файлов по умолчанию в / var / lib / pgsql9 / data после вашего просмотра.

После завершения обновления и восстановления файлов конфигурации служба должна запуститься в обычном режиме.