Чтобы перенести PostgreSQL на новый VPS, нужно заранее проверить совместимость версий, роли, расширения и способ подключения приложений. `pg_dump` создаёт логическую копию одной базы и обычно подходит для миграции между архитектурами и поддерживаемыми версиями, но глобальные объекты кластера и настройки сервера требуют отдельного учёта. План переноса лучше проверить на тестовом восстановлении до переключения production.
Содержание
- Соберите карту кластера и приложений
- Подберите совместимую версию и подготовьте VPS
- Снимите дамп и не забудьте глобальные объекты
- Восстановите базу и выполните содержательную сверку
- Переключите приложение и защитите новые записи
- Выберите площадку по режиму работы базы
- Проверка целостности после переезда PostgreSQL
Соберите карту кластера и приложений
Начните с инвентаризации баз, ролей, владельцев, схем, расширений, кодировок, 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-настройки могут меняться — сверяйте актуальные данные перед выполнением переноса.