Хорошо, я относительно новичок в 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 и запустите сервер.
Я все еще понятия не имею
service postgresql upgrade
работаетНо после нескольких дней работы в 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 после вашего просмотра.
После завершения обновления и восстановления файлов конфигурации служба должна запуститься в обычном режиме.