Как переехать с PostgreSQL на новый VPS: роли, расширения и проверка дампа

Blog image

Чтобы перенести PostgreSQL на новый VPS, нужно заранее проверить совместимость версий, роли, расширения и способ подключения приложений. `pg_dump` создаёт логическую копию одной базы и обычно подходит для миграции между архитектурами и поддерживаемыми версиями, но глобальные объекты кластера и настройки сервера требуют отдельного учёта. План переноса лучше проверить на тестовом восстановлении до переключения production.

Соберите карту кластера и приложений

Начните с инвентаризации баз, ролей, владельцев, схем, расширений, кодировок, collation, локали и внешних подключений. Узнайте, какие приложения используют базу, какие учётные данные сохранены в секрет-хранилище и есть ли фоновые workers, аналитические запросы или внешние реплики. Важна не только версия PostgreSQL, но и список установленных расширений: на новом образе они должны быть доступны до восстановления, иначе импорт может остановиться на создании расширения.

Зафиксируйте приблизительный размер базы и скорость изменения данных в обычный день. Это поможет выбрать окно миграции и понять, хватит ли логического дампа или потребуется другой метод. Отдельно проверьте базы с большими объектами, нестандартными tablespace и большим числом индексов. Не публикуйте пароль и строку подключения в плане переноса; укажите только место, где администратор сможет безопасно обновить секрет после проверки нового сервера.

  • Снимите список баз, ролей и установленных расширений.
  • Выясните, кто пишет в каждую базу.
  • Отметьте таблицы и объекты с нестандартным размещением.
  • Запишите версии клиентских библиотек и PostgreSQL.

Провайдеры VPS/VDS для сравнения

При переносе PostgreSQL часто мешает несовпадение версий, ролей и расширений: база восстановлена, но приложение не запускается или часть запросов работает иначе. Чтобы не выяснять это после переключения, подготовьте тестовое окружение заранее. Мы советуем сравнить площадки для целевого VPS; проверьте нужные версии, расширения, диск и возможность восстановить дамп.

Место Провайдер
1 Timeweb
2 Selectel
3 EdgeCenter
4 VDSina
5 SpaceWeb
6 AdminVPS
7 Sprintbox
8 Hostland
9 HandyHost
10 FirstVDS

Для подробного разбора провайдеров и условий смотрите общий рейтинг VPS/VDS. Перед заказом сверяйте характеристики и ограничения тарифа на сайте провайдера.

Подберите совместимую версию и подготовьте VPS

Определите целевую major-версию PostgreSQL и проверьте допустимый путь миграции по документации этой версии. Логический экспорт часто удобен при переходе на более новую major-версию, тогда как копирование файлов каталога данных обычно требует строгого совпадения версии и окружения. Не считайте, что переносить каталог данных вручную безопасно только потому, что обе машины работают на Linux.

На новом сервере заранее установите нужные расширения и создайте место для базы, журналов и временного файла дампа. Проверьте разрешение имен и сетевой доступ только от нужных приложений. Тестовое восстановление покажет реальный размер, время импорта и нагрузку на CPU и диск. Тариф VPS должен выдерживать не только штатные запросы, но и восстановление индексов, иначе миграция может затянуться или завершиться ошибкой нехватки ресурсов.

  • Проверьте документацию конкретных исходной и целевой версий.
  • Создайте расширения до импорта, если процедура этого требует.
  • Сверьте свободное место с размером базы и индексами.
  • Не открывайте PostgreSQL на публичный адрес без необходимости.

Снимите дамп и не забудьте глобальные объекты

Официальная документация PostgreSQL указывает, что `pg_dump` создаёт согласованную копию одной базы, не блокируя параллельных читателей и писателей. Для формата архива можно использовать `pg_restore`, выбирая объекты и порядок восстановления. Но `pg_dump` не включает весь кластер: роли и другие глобальные объекты требуют отдельного экспорта, например средствами `pg_dumpall` или вручную по принятой процедуре.

На тестовом контуре отработайте полную команду экспорта и импорта, включая параметры кодировки и пользователя. Проверяйте статус завершения, журнал и размер архива. Если база продолжает меняться, решите, как зафиксировать последнюю запись: временно приостановить приложение, выполнить финальный дамп либо настроить поддерживаемую репликацию. Выбор зависит от объёма и допустимого простоя; нельзя обещать одинаковое окно для базы на несколько гигабайт и для базы на сотни гигабайт.

  • Отдельно сохраните роли и глобальные объекты.
  • Проверьте восстановление расширений, функций и прав.
  • Посчитайте время полного пробного restore.
  • Сравните хеш архива после доставки на новый VPS.

Восстановите базу и выполните содержательную сверку

После импорта проверьте количество схем и таблиц, владельцев, ограничения, представления и статус последовательностей. База может формально загрузиться, но приложение не сможет записывать из-за неверного владельца или отсутствующего grant. Выполните `ANALYZE` или штатный анализ статистики после восстановления по рекомендации для вашей версии, чтобы планировщик запросов располагал актуальными оценками.

Для бизнес-данных выберите несколько содержательных проверок: число оплаченных заказов за период, максимальный номер записи, суммы по статусам, записи с внешними идентификаторами и наличие свежих событий. Убедитесь, что проверки действительно сравнивают одну и ту же временную точку. Затем подключите тестовую копию приложения, пройдите типовые запросы и посмотрите журнал PostgreSQL. Один только список таблиц не подтверждает, что бизнес-функции исправны.

  • Сверьте владельцев объектов и права приложения.
  • Сравните контрольные агрегаты с исходным сервером.
  • Проверьте последовательности и внешние ключи.
  • Запустите несколько реальных read/write-сценариев на тестовой копии.

Переключите приложение и защитите новые записи

Перед переключением перечислите все места, где хранится адрес PostgreSQL: приложение, фоновые задачи, аналитика, консольные скрипты и служебные панели. Дождитесь завершения активных транзакций и остановите записи согласно плану. После обновления конфигурации перезапустите только те процессы, которые должны перечитать секрет. Проверьте подключение по сетевому маршруту, сертификат, если включён TLS для соединения, и журнал ошибок каждой компоненты.

Оставьте исходную базу доступной только для чтения или иным контролируемым способом исключите параллельные записи. Если на новом сервере успели появиться изменения, нельзя просто переключить приложение назад и ожидать, что они автоматически окажутся на старом кластере. Запишите время cutover, версию приложения и контрольные значения. Возврат должен включать перенос дельты или явную паузу записи, иначе два набора данных начнут расходиться.

  • Обновите все точки подключения, а не только веб-приложение.
  • Проверьте pooler и фоновые обработчики отдельно.
  • Сравните свежие записи после cutover.
  • Оставьте старую базу без независимой записи.

Выберите площадку по режиму работы базы

Для PostgreSQL сравнивайте VPS/VDS по оперативной памяти, типу диска, стабильности записи, лимиту хранилища, сетевой задержке от приложения и способу вынести резервную копию за пределы самого VPS. Проверьте, поддерживает ли панель нужную версию и расширения либо потребуется самостоятельная настройка. Если база критична для магазина, заранее выясните, как получить консольный доступ при проблеме с сетью и как запросить восстановление копии.

Порядок провайдеров в таблице повторяет <a href="https://impossible-studio.com/vps-vds/vps-vds-dlya-proekta-s-vebhukami-kak-ne-teryat-vhodyashhie-sobytiya-i-obrabatyvat-ih-bez-zaderzhek/">рейтинг VPS/VDS для проекта с вебхуками</a>. Это список площадок для дальнейшего сравнения в контексте базы, а не готовое заключение, что один и тот же тариф подходит всем. Сверьте версии, доступные ресурсы, цену продления, возможность выгрузки резервов и условия поддержки до оплаты аренды VDS.

  • Сравните диск и память с реальной базой после восстановления.
  • Проверьте наличие нужной major-версии и расширений.
  • Уточните, как выгружаются и восстанавливаются копии.
  • Измерьте задержку между приложением и будущей базой.

Проверка целостности после переезда PostgreSQL

После восстановления сравните перечень баз, схем, ролей и расширений с инвентаризацией источника. Проверьте владельцев объектов и права приложения: успешный импорт не гарантирует, что сервис сможет читать и изменять нужные таблицы. Запустите типовые запросы проекта, а для критичных сущностей сравните агрегаты — например, количество активных записей по статусам — вместо публикации строк с данными клиентов.

Проверьте приложение как обычный пользователь: вход, создание или обновление записи, отчёт и фоновая задача. Посмотрите логи на ошибки соединения и недостающие функции. Если на старом VPS продолжали принимать записи во время первой копии, запланируйте отдельную финальную синхронизацию либо временно остановите запись в согласованное окно. Для возврата заранее определите, как перенести изменения, появившиеся уже после cutover; простое переключение адреса базы может потерять их.

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

Частые вопросы

Перенесёт ли pg_dump роли пользователей?

Обычный дамп одной базы не заменяет экспорт глобальных объектов кластера. Роли и связанные с ними права подготовьте отдельно и проверьте их на целевом сервере.

Можно ли восстановить базу на другой версии PostgreSQL?

Это зависит от версии и формата. Сверьте официальные правила для своих версий и проведите тестовое восстановление до окна переключения.

Когда обновлять адрес базы в приложении?

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

Документация и полезные источники

Материал проверен 12 ноября 2026 года. Условия провайдеров, версии программ и DNS-настройки могут меняться — сверяйте актуальные данные перед выполнением переноса.