Як зробити незначне оновлення PostgreSQL для Windows, наприклад, 9.3.0 до 9.3.1?


10

Який рекомендований спосіб здійснити незначне оновлення з PostgreSQL, наприклад, 9.3.0 до 9.3.1 за допомогою встановленого Windows DB встановника Windows Потрібно спочатку видалити або просто встановити інсталяцію?

Поточна установка виконувалася за допомогою postgresql-9.3.0-1-windows-x64.exe. Тепер я хочу оновити, використовуючи postgresql-9.3.1-1-windows-x64.exe.


Відповідно до документації : зупиніть сервер, встановіть нові бінарні файли та перезапустіть. Завжди корисно взяти резервну копію і взагалі мати план B.
dezso

Дякую за посилання @dezso, я прочитав цей розділ 9.3 керівництва, але виявив його трохи розпливчастим, особливо що стосується бінарних файлів налаштування Windows.
buzz3791

@ buzz3791 Питання / заголовок зараз неточні, оскільки 10,0 до 10,1 є незначним оновленням нової схеми версій. Я думаю, що ви повинні зняти e.g. ...деталь.
isapir

Відповіді:


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-rocks-онлайн-користувальницький форум ). Мені вдалося знайти кілька оригінальних публікацій на машині Wayback. Одне мертве посилання, яке я не зміг виправити: «Січень 2010 року - оновлення до 8.4.2 з 8.4.1», http://forums.enterprisedb.com/posts/list/2115.page#7888 .


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іншого способу, але для незначного оновлення цей метод спрацював як шарм.


1
Добре, що я розмістив це тут. Я просто дотримувався інструкцій щодо оновлення 10.1до, 10.2і це чудово працювало.
isapir
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.