Как переехать на новый хостинг без простоя сайта
Продвинутое3 минРедакция Innovialabs
Коротко
Заранее снизьте TTL DNS-записей, разверните полную копию сайта на новом сервере, проверьте её через файл hosts, сделайте финальную синхронизацию данных и только потом переключите DNS, держа старый сервер готовым к откату.
Короткий ответ
Переезд без простоя возможен, потому что старый и новый сервер какое-то время работают параллельно. Пользователи продолжают ходить на старый сервер, пока вы готовите и проверяете новый. Затем вы переключаете DNS, и трафик постепенно перетекает. Ключ к успеху — короткий TTL, проверенная копия и чёткий план отката.
План по шагам
1. Инвентаризация
Перед началом составьте список того, что переезжает:
- файлы сайта и загруженные пользователями файлы;
- базы данных;
- cron-задачи, фоновые процессы, очереди;
- версии языка, расширений, веб-сервера;
- SSL-сертификаты;
- почта (если она на том же хостинге) и все DNS-записи: A, AAAA, CNAME, MX, TXT.
Почту и DNS часто забывают, и после переезда перестают приходить письма.
2. Снижение TTL
TTL определяет, сколько резолверы кешируют DNS-ответ. Если он большой, часть пользователей ещё долго будет попадать на старый сервер.
За время, не меньшее текущего TTL (лучше за сутки-двое), снизьте TTL нужных записей до нескольких минут, например до 300 секунд. Проверить текущее значение можно так:
dig +noall +answer example.com A
Число во втором столбце — оставшийся TTL в секундах.
3. Подготовка нового сервера и копирование
Установите то же окружение, что и на старом сервере, затем скопируйте файлы и базу:
rsync -avz --progress user@old-server:/var/www/site/ /var/www/site/
mysqldump -u user -p dbname > dump.sql # на старом сервере
mysql -u user -p dbname < dump.sql # на новом сервере
Для PostgreSQL используются pg_dump и pg_restore. Выпустите SSL-сертификат на новом сервере заранее, либо перенесите существующий.
4. Проверка через файл hosts
DNS ещё указывает на старый сервер, но вы можете открыть сайт на новом. Добавьте в файл hosts своего компьютера строку с IP нового сервера:
203.0.113.10 example.com www.example.com
На Linux и macOS это /etc/hosts, на Windows — C:\Windows\System32\drivers\etc\hosts. Пройдите ключевые сценарии: вход, формы, оплату, загрузку файлов, отправку писем. Затем удалите строку.
5. Финальная синхронизация
Пока вы тестировали, на старом сервере появились новые заказы, комментарии и файлы. Перед переключением:
- Включите режим «только чтение» или короткое окно обслуживания для операций записи, если данные критичны.
- Повторите
rsync(он передаст только изменения) и свежий дамп базы. - Для больших и активных баз рассмотрите репликацию со старой базы на новую — тогда данные синхронизируются непрерывно.
6. Переключение DNS
Измените A/AAAA-записи на IP нового сервера. Из-за короткого TTL основная часть трафика переедет быстро, но старый сервер не выключайте: часть резолверов может держать старые записи дольше. Следите за логами обоих серверов — когда на старый перестанут приходить запросы, переезд завершён.
После стабилизации верните TTL к обычному значению.
7. План отката
Решите заранее, при каких признаках вы откатываетесь (ошибки, падение заказов, проблемы с почтой) и кто принимает решение. Откат — это возврат DNS-записей на старый IP. Он работает, только если старый сервер жив и данные, записанные на новом, можно перенести обратно.
Частые ошибки
- TTL снизили в последний момент, и кеш держит старый IP часами.
- Забыли MX и TXT-записи (SPF, DKIM) — почта ломается.
- Не перенесли cron-задачи и бэкапы.
- Отключили старый хостинг сразу после смены DNS.
- Не проверили права на файлы и пути в конфигурации.