Как перенести кластер баз 1С на PostgreSQL на 6 мажорных версий выше
Перенос кластера баз данных 1С на PostgreSQL с версии, например, 9.x на 15.x или 16.x - задача нетривиальная. Прямой апгрейд через pg_upgrade возможен, но требует промежуточных шагов, так как пропускать более двух мажорных версий не рекомендуется. В этой статье разберём два основных метода: pg_upgrade и dump/restore, а также дадим практические рекомендации для СУБД под 1С.
Метод 1: pg_upgrade с пошаговым обновлением
Утилита pg_upgrade позволяет обновить бинарные файлы PostgreSQL без полного дампа. Но для перехода через 6 версий потребуется последовательно устанавливать промежуточные релизы.
План действий для pg_upgrade
- Установите новую версию PostgreSQL (например, 16.x) и все промежуточные версии (11, 12, 13, 14, 15).
- Остановите кластер 1С и сделайте резервную копию каталога данных (через
pg_dumpallили файловую копию). - Выполните
pg_upgradeот текущей версии до следующей промежуточной. Повторяйте для каждой пары версий. - После каждого шага проверяйте целостность данных и запускайте
vacuumdb --all. - После финального обновления переустановите расширения (например,
pg_stat_statements), перечитайте конфигурацию и запуститеANALYZE.
Важно: Для 1С критично сохранить настройки кодировки (UTF8) и локаль. Убедитесь, что в postgresql.conf указана правильная локаль (обычно ru_RU.UTF-8).
Метод 2: dump/restore от новой версии
Этот способ надёжнее, так как полностью пересоздаёт базу данных с учётом новой внутренней структуры. Он особенно рекомендуется, если вы не уверены в совместимости расширений или если база 1С содержит пользовательские типы.
Пошаговая инструкция dump/restore
- Установите целевую версию PostgreSQL (например, 16.x) на новый сервер или в отдельный каталог.
- Сделайте дамп старой базы с помощью
pg_dump -Fc dbname > backup.dump(формат custom - сжимает и сохраняет права). - Создайте пустую базу в новой версии:
createdb -T template0 dbname(обязательно с той же кодировкой). - Восстановите дамп:
pg_restore -d dbname --jobs=4 backup.dump. Параметр--jobsускоряет процесс на многоядерных системах. - Запустите
ANALYZEи обновите статистику:vacuumdb --analyze --all.
Частые ошибки и их решение
При миграции PostgreSQL для 1С часто возникают проблемы: несовместимость расширений (например, uuid-ossp заменён на pgcrypto в новых версиях), ошибки локали (если база создана с lc_collate=C, а новая версия ожидает ru_RU.UTF-8), большое время простоя - для крупных баз (100+ ГБ) dump/restore может длиться часы. Рекомендуется тестировать миграцию на копии данных.
Рекомендации для кластеров 1С
Перед обновлением обязательно: 1) согласуйте с техподдержкой 1С версию платформы, совместимую с новым PostgreSQL; 2) отключите фоновые задания и регламентные операции; 3) используйте транзакционный дамп (--no-blobs не нужен, так как 1С использует большие объекты). После миграции проверьте работу типовых отчётов и обработок.
Заключение
Выбор между pg_upgrade и dump/restore зависит от размера базы и доступного времени. Для кластеров 1С с объёмом данных до 100 ГБ и возможностью простоя в несколько часов dump/restore - более безопасный вариант. Если же нужно минимальное время недоступности, используйте pg_upgrade с обязательным тестированием на каждой промежуточной версии. В любом случае, создавайте резервные копии и проверяйте целостность данных после каждого шага.