Обновление PostgreSQL на Windows

Указана последовательность действий при обновлении PostgreSQL на примере Windows. Также описаны некоторые особенности.

Дано: Кластеры PostgreSQL 9.6.7-1.1C и 1С, где "9.6.7-1.1C" — это версия установленного старого кластера, а "10.5-24.1C" — это версия нового кластера.

Задача: обновить 9.6.7-1.1C до 10.5-24.1C. 

Стоит отметить, что для некоторых ситуаций при обновлении, будет критично время простоя кластера, особенно при больших объемах баз. 

1. Для тех, кому время не критично или базы не много весят, рекомендую сделать копии всех баз через конфигуратор 1С. 

2. Копируем файлы настроек доступа к хосту pg_hba.conf и настроек кластер postgresql.conf из C:Program FilesPostgreSQL9.6.7-1.1Cdata в любое место, в нашем случае в D: emp. Файлы нам понадобятся для внесения изменений в новые файлы настроек от 10.5-24.1C, если таковые у вас есть.

3. Заходим в cmd под администратором и вводим 
C:Program FilesPostgreSQL9.6.7-1.1Cinpg_dumpall -U postgres > D: empdb.out

Где db.out — файл дампа всего кластера (всех баз). Во время процесса будет запрошен пароль от пользователя PostgreSQL postgres, который вы вводили при установке 9.6.7-1.1C.

Полученный файл будет сжат. Если у вас совсем мало места, тогда можно через команду | и gzip или 7zip заархивировать файл D: empdb.out.

Рассмотрим 3 варианта обновления кластера

I вариант через pg_dumpall и psql

4. Останавливаем службы сервера 1С и службу от 9.6.7-1.1C

5. Устанавливаем 10.5-24.1C (установка по умолчанию в каталог 10.5-24.1C), пароль postgres оставляем прежним для удобства. Если установка происходит на тот же самый порт, то нет необходимости менять правила брендмауэра Windows. Я заведомо не деинсталирую 9.6.7-1.1C и не удаляю файлы баз PostgreSQL, т.к. я могу в любой момент вернуться к старому кластеру и запустить его без проблем.

Для кого-то критично место на диске, тогда следует на данном этапе деинсталировать кластер 9.6.7-1.1C и удалить файлы баз.

6. Файлы настроек из п. 2 мы сравниваем с аналогичными файлами из в C:Program FilesPostgreSQL10.5-24.1Cdata и переносим необходимые изменения в новый файл. Не забываем сделать копию изначальных файлов 10.5-24.1C. Если у вас не было изменений в файлах 9.6.7-1.1C, то этот пункт делать не нужно.

7. Перезапускаем службу 10.5-24.1C, для применения новых настроек конфигурационных файлов.

8. Заходим cmd под администратором и проходим в 
C:Program FilesPostgreSQL10.5-24.1Cinpsql -U postgres -f D: empdb.out

Для минимизации времени отключения кластера можно сделать следующим образом:

— в п.5, устанавливая 10.5-24.1C мы ставим новый порт 5433 и службы кластеров должны быть запущены

— далее в cmd запускаем:

C:Program FilesPostgreSQL9.6.7-1.1Cinpg_dumpall -U postgres -p 5432 > D: empdb.out |

C:Program FilesPostgreSQL10.5-24.1Cinpsql -U postgres -p 5433 -f D: empdb.out

Возможно, придется настроить брендмауэр для порта 5433 

Во время процесса восстановления периодически нужно вводить пароль от пользователя postgres.

11. Стартуем службу сервера 1С. 

10. После восстановления необходимо сделать переиндексацию в конфигураторе 1С или с помощью команды reindex database <имя базы> или с помощью PGAdmin 4.

Если у вас не работает PGAdmin 4, одно из решений, установить его отдельно с сайта разработчика 

https://www.postgresql.org/ftp/pgadmin/pgadmin4/v4.8/windows/

II вариант через pg_upgrade (миграция)

5. Останавливаем службу 9.6.7-1.1C

6. Устанавливаем 10.5-24.1C, пароль postgres оставляем прежним. 

7. Останавливаем службу 10.5-24.1

8. Заходим cmd под администратором и вводим 
C:Program FilesPostgreSQL10.5-24.1Cpg_upgrade — U postgres —old-datadir "C:/Program Files/PostgreSQL/9.6.7-1.1C/data" —new-datadir "C:/Program Files/PostgreSQL/10.5-24.1C/data" —old-bindir "C:/Program Files/PostgreSQL/9.6.7-1.1C/bin" —new-bindir "C:/Program Files/PostgreSQL/10.5-24.1C/bin"

Во время процесса миграции периодически нужно вводить пароль от пользователя postgres.

9. Стартуем службу 10.5-24.1C

10. Стартуем службу сервера 1С. 

11. После восстановления необходимо сделать переиндексацию в конфигураторе 1С или с помощью команды reindex database <имя базы> или с помощью PGAdmin 4.

III вариант через полную переустановку кластеров PostgreSQL и 1С

4. Обязательное выполнение п. 1 и НЕ обязательное п. 3

5. Удаление 9.6.7-1.1C  и баз из кластера 1С

6. Установка 10.5-24.1C.

7. Файлы настроек из п. 2 мы сравниваем с аналогичными файлами из в C:Program FilesPostgreSQL10.5-24.1Cdata и переносим необходимые изменения в новый файл. Не забываем сделать копию изначальных файлов 10.5-24.1C. Если у вас не было изменений в файлах 9.6.7-1.1C, то этот пункт делать не нужно.

8. Перезапускаем службу 10.5-24.1C, для применения новых настроек конфигурационных файлов.

9. Создание и загрузка баз 1С из dt архивов п.1.

4 Comments

  1. ogidni

    статья полезна, только есть ли смысл переходить на 10?

    Reply
  2. extalionos

    (1) Перевел в этом году несколько баз и Linux и Windows.

    Со стороны 1С проблем после обновления не заменил.

    Замеров производительности не производил, но визуально 10 стала работать шустрее. На Ubuntu значительно быстрее.

    Говоря о дистрибутиве PostgreSQL 10.5 от 1С, сделаны следующие улучшения:

    1. Перед построением плана запроса выполняется упрощение запроса (удаление избыточных соединений и т.д.). План запроса строится по упрощенному запросу.

    2. При вычислении стоимости сортировки учитываются стоимость сортировки одной или нескольких колонок, стоимость самой сортировки, количество операций сравнения полей.

    3. Улучшена оценка стоимости соединения при построении плана запроса в том случае, если в планируемом запросе используется соединение таблиц с условием по нескольким колонкам.

    4. При планировании запроса, содержащего выражение СГРУППИРОВАТЬ ПО, планировщик выбирает наиболее оптимальный индекс из имеющихся (исходя из списка полей в выражении). На основании выбранного индекса планировщик может изменить порядок полей в выражении СГРУППИРОВАТЬ ПО для того, чтобы порядок полей соответствовал выбранному индексу.

    Источник: https://dl04.1c.ru/content/AddCompPostgre/10_5_24_1C/postgreUpdate_ru.htm#934bfa22-ee3d-11e8-a3f7-0050569f678a

    Про PostgreSQL Pro судить не могу. Стоит денег)

    Reply
  3. ogidni

    Я перевел одну базу на Ubuntu, одну на виндовоз. Та что на винде на 11 — начала потреблять больше ресов. А так все на том же уровне.

    Все эти заявления про то что 11 быстрее — на мой взгяд маркетинговый ход.

    Так же тесты дома делал на 32 ядреном амд проце с 64 Гб оперативы и Sams SSD 970 pro на тестах Гилева. Под Виндовозом 10 — Разница 1-2 роцента в пределах погрешности между 9 и 11 версией. На серверных платформах так же прироста не заметил.

    Reply
  4. extalionos

    (3) То что не стало хуже уже хорошо:)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *