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

Публикация № 1075945

Администрирование - Системное

обновление PostgreSQL 10.5 9.6 кластер pg_dumpall pg_psql

21
Указана последовательность действий при обновлении 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 Files\PostgreSQL\9.6.7-1.1C\data в любое место, в нашем случае в D:\temp. Файлы нам понадобятся для внесения изменений в новые файлы настроек от 10.5-24.1C, если таковые у вас есть.

3. Заходим в cmd под администратором и вводим 
C:\Program Files\PostgreSQL\9.6.7-1.1C\bin\pg_dumpall -U postgres > D:\temp\db.out

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

Полученный файл будет сжат. Если у вас совсем мало места, тогда можно через команду | и gzip или 7zip заархивировать файл D:\temp\db.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 Files\PostgreSQL\10.5-24.1C\data и переносим необходимые изменения в новый файл. Не забываем сделать копию изначальных файлов 10.5-24.1C. Если у вас не было изменений в файлах 9.6.7-1.1C, то этот пункт делать не нужно.

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

8. Заходим cmd под администратором и проходим в 
C:\Program Files\PostgreSQL\10.5-24.1C\bin\psql -U postgres -f D:\temp\db.out

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

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

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

C:\Program Files\PostgreSQL\9.6.7-1.1C\bin\pg_dumpall -U postgres -p 5432 > D:\temp\db.out |

C:\Program Files\PostgreSQL\10.5-24.1C\bin\psql -U postgres -p 5433 -f D:\temp\db.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 Files\PostgreSQL\10.5-24.1C\pg_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 Files\PostgreSQL\10.5-24.1C\data и переносим необходимые изменения в новый файл. Не забываем сделать копию изначальных файлов 10.5-24.1C. Если у вас не было изменений в файлах 9.6.7-1.1C, то этот пункт делать не нужно.

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

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

21

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. ogidni 99 14.06.19 11:35 Сейчас в теме
статья полезна, только есть ли смысл переходить на 10?
2. extalionos 71 14.06.19 11:51 Сейчас в теме
(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 судить не могу. Стоит денег)
cleaner_it; +1 Ответить
3. ogidni 99 14.06.19 12:13 Сейчас в теме
Я перевел одну базу на Ubuntu, одну на виндовоз. Та что на винде на 11 - начала потреблять больше ресов. А так все на том же уровне.
Все эти заявления про то что 11 быстрее - на мой взгяд маркетинговый ход.
Так же тесты дома делал на 32 ядреном амд проце с 64 Гб оперативы и Sams SSD 970 pro на тестах Гилева. Под Виндовозом 10 - Разница 1-2 роцента в пределах погрешности между 9 и 11 версией. На серверных платформах так же прироста не заметил.
4. extalionos 71 14.06.19 15:20 Сейчас в теме
(3) То что не стало хуже уже хорошо:)
Оставьте свое сообщение