В данной инструкции описана последовательность действий при обновлении PostgreSQL на примере Windows, а также рассмотрены ключевые особенности и лучшие практики.
Дано:
-
Старый кластер: PostgreSQL
9.6.7-1.1C -
Новый кластер: PostgreSQL
10.5-24.1C
Задача: Обновить кластер 9.6.7-1.1C до 10.5-24.1C.
Важно! Для многих систем критично время простоя кластера, особенно при работе с большими объемами баз данных. Выбирайте вариант обновления, исходя из ваших требований ко времени простоя.
Подготовительные шаги (общие для всех вариантов)
-
Резервное копирование баз 1С. Для максимальной надежности создайте резервные копии всех баз данных через конфигуратор 1С (файлы
.dt). Это ваш главный "запасной парашют". -
Копирование файлов конфигурации. Сохраните файлы
pg_hba.confиpostgresql.confиз каталога данных старого кластера (C:\Program Files\PostgreSQL\9.6.7-1.1C\data) в надежное место (например,D:\temp). Они понадобятся, если вы вносили в них изменения и хотите перенести их в новую версию. -
Создание полного дампа кластера. Откройте командную строку (cmd) с правами администратора и выполните команду:
"C:\Program Files\PostgreSQL\9.6.7-1.1C\bin\pg_dumpall.exe" -U postgres > D:\temp\db.outВ процессе будет запрошен пароль суперпользователя
postgres. Этот дамп является дополнительной страховкой и используется в Варианте I.
Вариант I: Обновление через pg_dumpall и psql (надежный, но медленный)
Этот метод заключается в полной выгрузке данных и последующей их загрузке в новый, чистый кластер.
-
Остановка служб. Остановите службу сервера 1С и службу старого кластера PostgreSQL (
postgresql-x64-9.6). -
Установка нового кластера. Установите PostgreSQL
10.5-24.1C. Для удобства используйте тот же пароль для пользователяpostgresи тот же порт (по умолчанию5432), что и в старой версии. -
Перенос настроек. Сравните сохраненные файлы конфигурации (из шага 2) с новыми файлами в
C:\Program Files\PostgreSQL\10.5-24.1C\data. Аккуратно перенесите только необходимые вам изменения. -
Применение настроек. Перезапустите службу нового кластера (
postgresql-x64-10) для применения изменений. -
Восстановление данных из дампа. В командной строке с правами администратора выполните:
"C:\Program Files\PostgreSQL\10.5-24.1C\bin\psql.exe" -U postgres -f D:\temp\db.outПериодически может потребоваться ввод пароля.
-
Запуск служб. Запустите службу сервера 1С.
-
Обслуживание баз. После восстановления обязательно выполните переиндексацию баз данных (через конфигуратор 1С или командой
REINDEX DATABASE <имя_базы>;).
Оптимизация для минимизации времени простоя
Этот способ позволяет передавать данные напрямую из старого кластера в новый, значительно сокращая простой.
-
Установка. Установите новый кластер
10.5-24.1Cна другой порт, например,5433. Обе службы (старая и новая) должны быть запущены. -
Перенос данных. Выполните в
cmdследующую команду, которая напрямую передает данные без создания промежуточного файла:"C:\Program Files\PostgreSQL\9.6.7-1.1C\bin\pg_dumpall.exe" -U postgres -p 5432 | "C:\Program Files\PostgreSQL\10.5-24.1C\bin\psql.exe" -U postgres -p 5433 -
Завершение. После завершения процесса остановите старый кластер, измените порт нового кластера на стандартный (
5432), перезапустите его и службы 1С.
Вариант II: Обновление через pg_upgrade (быстрый, предпочтительный)
Этот метод выполняет бинарное обновление данных на месте, что значительно быстрее, чем дамп/восстановление.
-
Установка нового кластера. Установите PostgreSQL
10.5-24.1C, используя тот же пароль дляpostgres. -
Остановка служб. Остановите службу обоих кластеров: старого (
9.6.7-1.1C) и нового (10.5-24.1C). -
Инициализация переменных. Для удобства в
cmdзадайте пути:set OLD_BIN="C:\Program Files\PostgreSQL\9.6.7-1.1C\bin" set NEW_BIN="C:\Program Files\PostgreSQL\10.5-24.1C\bin" set OLD_DATA="C:\Program Files\PostgreSQL\9.6.7-1.1C\data" set NEW_DATA="C:\Program Files\PostgreSQL\10.5-24.1C\data" -
(Рекомендуется) Проверка перед обновлением. Запустите
pg_upgradeв режиме проверки. Это не изменит данные, но покажет возможные проблемы.%NEW_BIN%\pg_upgrade.exe --check -U postgres --old-datadir=%OLD_DATA% --new-datadir=%NEW_DATA% --old-bindir=%OLD_BIN% --new-bindir=%NEW_BIN% -
Выполнение обновления. Если проверка прошла успешно, запустите процесс обновления:
%NEW_BIN%\pg_upgrade.exe -U postgres --old-datadir=%OLD_DATA% --new-datadir=%NEW_DATA% --old-bindir=%OLD_BIN% --new-bindir=%NEW_BIN% -
Запуск нового кластера. Стартуйте службу
10.5-24.1C. -
(Обязательно) Сбор статистики. После обновления
pg_upgradeсоздает в рабочем каталоге файлanalyze_new_cluster.bat. Обязательно запустите его, чтобы оптимизатор запросов нового кластера работал корректно. -
Запуск 1С. Стартуйте службу сервера 1С.
Вариант III: Полная переустановка
Этот метод подходит, если вы хотите начать "с чистого листа" или другие методы не сработали.
-
Резервное копирование. Убедитесь, что у вас есть
.dtфайлы всех баз (шаг 1). -
Удаление. Полностью удалите старый кластер PostgreSQL (
9.6.7-1.1C). -
Установка. Установите новый кластер
10.5-24.1C. -
Настройка. При необходимости перенесите нужные вам параметры в файлы конфигурации нового кластера (шаг 2).
-
Создание и загрузка баз. Создайте новые, пустые базы данных и загрузите в них данные из
.dtархивов, созданных на шаге 1.
Замечание о PGAdmin 4
Если после обновления у вас возникли проблемы с PGAdmin, рекомендуется установить последнюю версию с официального сайта. Это обеспечит совместимость и безопасность.
Официальная страница загрузки: https://www.pgadmin.org/download/
Вступайте в нашу телеграмм-группу Инфостарт