Как сделать небольшое обновление PostgreSQL в Windows, например, с 9.3.0 до 9.3.1?

10

Каков рекомендуемый способ выполнить незначительное обновление PostgreSQL, например, с 9.3.0 до 9.3.1, используя встроенный установщик Windows Enterprise DB? Должен ли я удалить сначала или просто установить поверх существующей установки?

Текущая установка была выполнена с помощью postgresql-9.3.0-1-windows-x64.exe. Теперь я хочу обновить с помощью postgresql-9.3.1-1-windows-x64.exe.

buzz3791
источник
Согласно документации : остановите сервер, установите новые двоичные файлы и перезапустите. Это всегда хорошая идея, чтобы сделать резервную копию, и, как правило, иметь план Б.
Дезсо
Спасибо за ссылку @dezso, я прочитал этот раздел руководства по 9.3, но нашел его немного расплывчатым, особенно в отношении двоичных файлов установки Windows.
buzz3791
@ buzz3791 Вопрос / заголовок теперь неточный, потому что 10.0 до 10.1 - это незначительное обновление с новой схемой управления версиями. Я думаю, что вы должны удалить e.g. ...часть.
Исапир

Ответы:

8

В Windows работает просто остановка службы postgresql, а затем запуск postgresql-9.3.1-1-windows-x64.exe поверх существующего 9.3.0. Нет необходимости удаления. Конечно, резервное копирование рекомендуется.

Ясная, явная документация по процедуре обновления в Windows отсутствует. Обратите внимание, что ссылка на документацию, предоставленная @dezso, была перемещена в текущем руководстве по адресу : https://www.postgresql.org/docs/current/static/upgrading.html.

Примечания к выпуску PostgreSQL, как правило, содержат советы по миграции в Приложении E. Например,

Лучшим источником информации об установщике Windows были форумы Enterprise DB. Вот некоторые посты, которые я нашел, чтобы ответить на вопрос ...

Обратите внимание, что информация об обновлении перемещается от выпуска к выпуску. Например,

Обратите внимание, что по состоянию на июнь 2017 года EnterpriseDB заменили свои дискуссионные форумы сообщества, затрагивающие ссылки в этом ответе ( https://web.archive.org/web/20171021012954/https://www.enterprisedb.com/news/enterprisedb-announces- new-postgres-rock-online-user-forum ). Мне удалось выследить некоторые оригинальные посты на Wayback Machine. Одна неработающая ссылка, которую мне не удалось исправить: «Январь 2010 - Обновление до 8.4.2 с 8.4.1», http://forums.enterprisedb.com/posts/list/2115.page#7888 .

buzz3791
источник
4

Для записи, запустив установщик Windows из Enterprise DB (по умолчанию, связанный с сайтом Postgres ), по крайней мере, начиная с текущей версии Postgres 9.4, вам не нужно останавливать postgresqlслужбу. Установщик сделает это за вас. Вам все еще нужно восстановить соединения, если они есть (большинство клиентов делают это автоматически).

Лучше всего обратиться к текущему руководству (используя текущую версию Postgres):

http://www.postgresql.org/docs/current/interactive/upgrading.html

Эрвин Брандштеттер
источник
3

Я только что обновил Postgres 10.0 до 10.1, и это было очень быстрое и простое обновление.

Я загрузил двоичные файлы с https://www.enterprisedb.com/download-postgresql-binaries и разархивировал их C:\postgres, затем переименовал каталог, pgsqlчтобы pgsql-10.1сохранить старые версии, пока они не будут сочтены ненужными.

Я скопировал файлы DLL msvcp120.dllи msvcr120.dllв C:\postgres\pgsql-10.1\binпотому , что я предпочитаю , чтобы простой установки над «Installer» , который , вероятно , добавляет гораздо больше наворотов , чем это необходимо.

Затем я использовал этот простой пакетный скрипт, который я написал в прошлом:

set MAJOR_VERSION=10
set MINOR_VERSION=1

set SERVICE_NAME=pgsql-%MAJOR_VERSION%.%MINOR_VERSION%

set PGHOME=C:\postgres\%SERVICE_NAME%
set PGDATA=C:\postgres\pgdata%MAJOR_VERSION%

%PGHOME%\bin\pg_ctl.exe register -N %SERVICE_NAME% -U LocalSystem -S auto --pgdata=%PGDATA%

::: to unregister old service:
::%PGHOME%\bin\pg_ctl.exe unregister -N %SERVICE_NAME%

Я побежал SELECT version();в PSQL, чтобы подтвердить старую версию:

postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.0, compiled by Visual C++ build 1800, 64-bit

Затем я запустил пакетный скрипт, над которым была установлена ​​служба с именем postgres-10.1.

Я остановил старый сервис и установил его Startup Typeна Disabled, и запустил новый сервис.

Запуск SELECT version();снова в PSQL подтвердили обновление (пришлось запустить его в два раза из - за соединения в процессе прерывания , когда я остановил старый сервер):

postgres=# select version();
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.1, compiled by Visual C++ build 1800, 64-bit

Имейте в виду, что обновление основной версии требует обновления каталога данных с помощью pg_upgradeкакого-либо другого метода, но при незначительном обновлении этот метод работает как обаяние.

isapir
источник
1
Хорошо, что я разместил это здесь. Я просто следовал инструкциям по обновлению с 10.1до, 10.2и он работал отлично.
Исапир