Top.Mail.Ru
OSEN-НИЙ SAAALEСкидка 50% на виртуальный хостинг и VDS
до 30.11.2025 Подробнее
Выберите продукт

Миграция сайта на новый хостинг без простоя: пошаговый чек‑лист

Подробное руководство для админов: как перенести сайт на новый хостинг без простоя. Разберём аудит окружения, снижение DNS TTL, безопасные бэкапы, rsync и mysqldump, тест через hosts, переключение DNS и план отката. Подойдёт для CMS и кастомных приложений.
Миграция сайта на новый хостинг без простоя: пошаговый чек‑лист

Нулевая недоступность при смене провайдера остаётся классической задачей для админов и девопсов. Эта статья — практичный чек‑лист миграции сайта на новый хостинг без простоя: от подготовки окружения и снижения DNS TTL до финального переключения и пост‑проверок. Внутри — рабочие команды rsync и mysqldump, порядок действий, контрольные точки и частые ошибки. Формат подходит для популярных CMS (WordPress, Bitrix, Joomla, OpenCart) и кастомных PHP/Node.js‑приложений.

Цели и подход: что считаем «без простоя»

Под «без простоя» будем понимать отсутствие заметной недоступности для большинства пользователей в момент переключения. Полностью избежать паузы при записи данных сложно без репликации БД на уровне СУБД, но минимизировать окно до минут при корректной подготовке вполне реально. Ключевые принципы: заранее уменьшить DNS TTL, сначала выполнить черновую синхронизацию файлов, протестировать новый стенд через hosts, затем сделать краткую «заморозку» изменений (или частичную read‑only), дельта‑синхронизацию и переключить DNS.

Инвентаризация и подготовка

Начинайте с инвентаризации. Ваша задача — понять, какие компоненты задействованы сейчас и что должно быть доступно на новом хостинге: версия PHP и handler (FPM/LSAPI), активные расширения (intl, mbstring, gd, imagick, zip), лимиты (memory_limit, upload_max_filesize, post_max_size, max_execution_time), версии СУБД (MySQL/MariaDB/PostgreSQL), веб‑сервер (Nginx/Apache), планировщики (cron или wp-cron), фоновые очереди, расширения кэша (Redis/Memcached), хранилища сессий, интеграции (платёжные шлюзы, SMS, SMTP), доменные записи (A/AAAA, CNAME, MX, SPF, DKIM, DMARC), CDN и WAF, SSL/сертификаты.

Соберите минимальные требования проекта и воспроизведите их на новом хостинге: создайте пользователей и базы, включите нужные PHP‑модули, подготовьте виртуальные хосты, проверьте корректность прав на файлы и каталоги, создайте пустую директорию для деплоя и логов. Если переезд на новый виртуальный хостинг или на VDS — заранее убедитесь, что конфигурации соответствуют текущему продакшену.

Снижаем DNS TTL заранее

Минимизировать задержки при переключении помогает управление DNS TTL. За 24–72 часа до миграции уменьшите TTL для A/AAAA/CNAME записей основного домена и критичных поддоменов до 60–300 секунд. Это даст возможность быстро «переучить» кэширующие резолверы в день Х. Учтите, что некоторые публичные резолверы и мобильные сети могут игнорировать заниженный TTL, поэтому полностью мгновенной смены не обещайте — оставьте старый хостинг работающим минимум 24–48 часов после переключения. Если зоной управляете через регистрацию доменов, проверьте, что права на изменения и NS‑делегирование у вас под рукой.

Важно: если у вас включён CDN, проверьте, где именно меняется TTL — у CDN или в вашем авторитативном DNS. Для доменов с DNSSEC убедитесь, что ключи и подписи не пострадают при переключении зон.

План миграции и критерии успеха

Определите окно: когда на сайте минимальный трафик и меньше всего транзакций. Сформулируйте чек‑лист критериев успешного переключения: сайт открывается по HTTPS, административная панель доступна, формы и загрузки работают, фоновые задачи исполняются, логи чистые, скорость не ниже прежней, SEO‑страницы и карта сайта доступны.

Обязательно составьте план отката: как быстро вернуть трафик на старый хостинг (обратное изменение DNS и/или временный CNAME), где лежат резервные копии, кто по ролям отвечает за БД, веб‑сервер, почту и домен.

Синхронизация rsync и бэкап БД в терминале при миграции

Бэкапы: без них никуда

Перед началом сделайте полный backup файлов и базы. Это must‑have даже если план идеален. Храните резервные копии отдельно от рабочих серверов, подписывайте датой и проверяйте, что архивы читаются.

Экспорт БД через mysqldump

Для MySQL/MariaDB используйте mysqldump с параметрами, обеспечивающими консистентность и полноту. Для InnoDB достаточно --single-transaction без блокировок таблиц, для MyISAM потребуется --lock-tables. Добавьте выгрузку триггеров и процедур.

mysqldump \
  -h db-old.example \
  -u dbuser -p'SECRET' \
  --single-transaction \
  --routines --triggers --events \
  --default-character-set=utf8mb4 \
  --set-gtid-purged=OFF \
  mydatabase | gzip > /backups/db-$(date +%F-%H%M).sql.gz

Проверьте итоговый размер архива и наличие в дампе критичных таблиц. При больших БД используйте сжатие и утилиты вроде pv для мониторинга скорости, а также убедитесь, что на новом хостинге выставлены подходящие max_allowed_packet и innodb_log_file_size.

Файлы — первая синхронизация rsync

Сначала синхронизируйте файлы «на горячую», пока сайт работает. Исключайте временные каталоги, кэши и логи — так ускорите копирование и не загрязните новый стенд.

rsync -azvh --progress \
  --delete-delay \
  --exclude='.git' --exclude='cache/' --exclude='tmp/' --exclude='logs/' \
  -e 'ssh -o Compression=yes' \
  user@old-host:/var/www/site/ /var/www/site/

--delete-delay безопаснее, чем мгновенное удаление, и позволяет сначала перенести новые файлы. Если на старом сервере задействованы ACL или нестандартные права, добавьте -A/-X для сохранения атрибутов и расширенных прав.

Подготовка окружения на новом хостинге

Создайте пустую базу и пользователя с минимально необходимыми правами. В веб‑сервере опишите виртуальный хост с корректным server_name, включите HTTPS и настройте редиректы www/non‑www. Проверьте PHP‑параметры: memory_limit не меньше прежнего, upload_max_filesize и post_max_size достаточны для загрузок, opcache включён, date.timezone корректен. Если поднимаете всё на VDS, заранее выберите панель администрирования и сравните функциональность — полезна шпаргалка по панелям: что выбрать в 2025.

Если проект собирается (Composer/NPM), выполните сборку на новом сервере, не трогая боевую директорию. Для Composer используйте --no-dev и --optimize-autoloader, для фронта — кэшируйте зависимости. Важно добиться идентичности версий (PHP, Node, расширения), иначе возможны «плавающие» баги.

Виртуальный хостинг FastFox
Виртуальный хостинг для сайтов
Универсальное решение для создания и размещения сайтов любой сложности в Интернете от 95₽ / мес

Импорт БД на новом сервере

Разверните дамп, убедившись, что кодировка базы совпадает со старой. Для больших дампов включите сжатый импорт через zcat или gunzip -c.

gunzip -c /backups/db-last.sql.gz | \
  mysql -h 127.0.0.1 -u dbuser -p'SECRET' mydatabase

Следом проверьте наличие процедур и событий, сопоставьте привилегии пользователя и убедитесь, что параметры sql_mode и time_zone не отличаются от старой инсталляции критично для приложения.

Правка конфигов приложения

Подготовьте конфиги под новое окружение: данные подключения к базе, пути, SMTP. Для WordPress изменяются параметры в wp-config.php (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST), для приложений на Laravel — переменные .env, для Bitrix — dbconn.php. Не храните секреты в репозитории — используйте переменные окружения и защищённые хранилища.

Тестирование через hosts: смотрим сайт на новом IP

Прежде чем трогать DNS, протестируйте сайт, «подменив» резолвинг только на своей машине. Добавьте строку с новым IP и доменом в /etc/hosts (Linux/macOS) или C:\\Windows\\System32\\drivers\\etc\\hosts (Windows), затем обновите кэш DNS у клиента и браузера. Так вы увидите сайт с нового хостинга, тогда как пользователи останутся на старом.

# пример для *nix
sudo sh -c 'echo "203.0.113.10 example.com www.example.com" >> /etc/hosts'

Пройдитесь по ключевым сценариям: вход в админку, отправка форм, загрузка файлов, построение миниатюр, оформление заказа, оплаты в песочнице, генерация карты сайта, обработка крон‑задач. Проверьте ошибки в логах PHP и веб‑сервера, а также метрики производительности. Убедитесь, что SSL‑сертификат корректен и цепочка полная, а редиректы HTTP→HTTPS на месте и не образуют циклов.

Правка hosts для проверки сайта на новом IP

Если проект зависит от внешних callback‑ов (платёжные шлюзы, OAuth), чтобы не «стрельнуть» в прод, используйте тестовые ключи или временный поддомен, на который переключите только сами себя через hosts.

Финальное окно: заморозка, дельта‑синхронизация, переключение

Чтобы исключить потерю данных, в момент Х на короткое время «заморозьте» изменяемые сущности: закройте административную часть или переведите проект в краткий режим обслуживания, запретите новые публикации и комментарии. В интернет‑магазинах старайтесь выбрать окно с минимальными заказами.

Дельта‑rsync и свежий дамп БД

Сделайте повторный rsync — он подтянет изменившиеся файлы. Затем снимите свежий дамп БД и импортируйте его на новый сервер, заменив предыдущий. Это сведёт рассинхронизацию к секундам.

rsync -azvh --delete-delay \
  --exclude='.git' --exclude='cache/' --exclude='tmp/' --exclude='logs/' \
  user@old-host:/var/www/site/ /var/www/site/

mysqldump -h db-old -u dbuser -p'SECRET' \
  --single-transaction --routines --triggers --events \
  mydatabase | gzip > /backups/db-final.sql.gz

gunzip -c /backups/db-final.sql.gz | mysql -u dbuser -p'SECRET' mydatabase

После импорта быстро проверьте критичные таблицы и обновите кэш/перегенерацию, если это требуется вашей CMS. Для WordPress полезно сбросить пермалинки и пересоздать кэш миниатюр, для Bitrix — прогреть композитный кэш.

Переключаем DNS

Когда новый сайт готов, меняйте A/AAAA (или CNAME) записи на новый IP. Благодаря заранее заниженному TTL трафик начнёт перетекать в течение нескольких минут. Контролируйте реальную делегацию: используйте dig/nslookup с указанием авторитативных NS и публичных резолверов, проверяйте, что ответы возвращают новый адрес.

dig +short A example.com @8.8.8.8
 dig +short A example.com @1.1.1.1
 dig +trace example.com

Старый сервер не выключайте минимум 24–48 часов — часть пользователей ещё может видеть старый IP из‑за кэшей в сетях операторов. Если у вас IPv6, не забудьте обновить AAAA.

Пост‑проверки: что посмотреть сразу после переключения

Сразу контролируйте логи новых инстансов: ошибки PHP, медленные запросы MySQL, коды ответа веб‑сервера. Проверьте время отклика главной, страницу поиска, карточки товара, корзину, личный кабинет. Снимите профилирование под нагрузкой, убедитесь, что CPU/IO/сеть в норме.

Проверьте SSL: срок действия, SNI, промежуточные сертификаты. Удостоверьтесь, что включены современные протоколы и шифры, а редиректы не ведут на старый домен. Подробно про 301, HSTS и цепочку сертификатов — в материале о миграции домена и HTTPS. Если нужен выпуск или продление — смотрите SSL-сертификаты.

DNS и почта

Если почтовая инфраструктура тоже переехала, актуализируйте записи MX, SPF, DKIM, DMARC. Проверьте обратную PTR для исходящей почты и согласованность HELO/EHLO. Измерьте доставляемость через внешние тесты, чтобы не получить блокировки у провайдеров.

Производительность и тонкая настройка

Сразу задайте оптимальные лимиты PHP и веб‑сервера. Для Nginx проверьте client_max_body_size, буферы, сжатие, кэш статики; для PHP‑FPM — параметры пула (pm, pm.max_children, pm.max_requests). Включите и настройте opcache, проверьте JIT при необходимости. Для БД — размеры буферов InnoDB, журналов, кэш запросов (если актуален), лимиты соединений.

Если приложение активно пишет на диск (кэш, сессии, загрузки), убедитесь, что у каталога есть быстрый storage и корректные права, а каталог временных файлов не забивает корень ФС. Продумайте резервирование: автоматические ежедневные бэкапы файлов и БД, offsite‑копии и периодическую проверку восстановления.

Типичные проблемы и быстрые решения

Белый экран или 500 после переезда обычно вызваны несовместимой версией PHP или отсутствующими расширениями. Сравните phpinfo() на старом и новом сервере, подтяните нужные модули. Сбои загрузки файлов — проверьте upload_max_filesize, post_max_size, client_max_body_size и права на каталог загрузок. Медленные страницы — посмотрите медленные запросы (slow_query_log), индексы, кэширование. Проблемы с кодировкой — убедитесь, что база и соединение используют utf8mb4.

Отсутствуют картинки или 404 на статике — проверьте root и try_files в конфиге Nginx/Apache, а также что все симлинки и права перенесены. Цикл редиректов HTTP↔HTTPS — посмотрите правила в .htaccess или конфиге Nginx, не дублируйте редиректы на разных уровнях. Некорректная работа крона — убедитесь, что задания перенесены и имеют правильные пути/переменные окружения.

Особенности CMS: пару нюансов

WordPress: проверьте wp-config.php, соли, права на wp-content/uploads, перегенерацию миниатюр, постоянные ссылки. Если домен менялся, выполните поиск‑замену URL в БД аккуратно, учитывая сериализацию. Bitrix: убедитесь в совместимости с версией PHP, настройте opcache, проверьте dbconn.php и права на bitrix/tmp, прогрейте композит. Joomla/OpenCart: обратите внимание на configuration.php/config.php и пути к логам/кэшу.

Автоматизация и безопасность

Соберите сценарии миграции в один исполняемый скрипт: экспорт БД, rsync, импорт, очистка кэша, smoke‑тесты. Используйте SSH‑ключи с ограничениями, агент и мультиплексирование для ускорения. Логи и артефакты складывайте в отдельную директорию, чтобы при повторном прогоне можно было быстро сравнить результаты. Храните пароли и токены в менеджерах секретов, включите двухфакторную аутентификацию, ограничьте доступ по IP, минимизируйте привилегии сервисных пользователей.

План отката

Если что‑то пошло не так: не паниковать. До истечения «старого» TTL можно быстро вернуть трафик обратно, поменяв DNS на прежний IP. Параллельно раскатайте резервные копии в тестовое окружение и локализуйте причину. В идеале у вас есть набор команд «отката»: восстановление файлов, дампа БД, возврат старых конфигов. Документируйте инцидент: что сломалось, как починили, как предотвратить повторение.

Итоги

Миграция сайта без простоя — это дисциплина, а не магия. Заранее уменьшили dns ttl, сделали проверенные backup, перенесли файлы rsync, выгрузили БД через mysqldump, протестировали через hosts, провели дельта‑синк, переключили DNS и мониторите. Следуя этому чек‑листу, вы сведёте риски к минимуму, а пользователи даже не заметят переезда.

Поделиться статьей

Вам будет интересно

Как выбрать тариф VDS: CPU vs RAM, NVMe, трафик, SLA и KVM

Как выбрать тариф VDS: CPU vs RAM, NVMe, трафик, SLA и KVM

Подробный разбор выбора тарифа VDS для админов и девопсов: как сбалансировать CPU и RAM, когда NVMe обязателен и какие IOPS важнее ...
Панели управления для VDS в 2025: HestiaCP, aaPanel и CyberPanel — что выбрать

Панели управления для VDS в 2025: HestiaCP, aaPanel и CyberPanel — что выбрать

Какая панель на VDS выбрать в 2025? Сводим HestiaCP, aaPanel и CyberPanel лоб в лоб: стек (Nginx/Apache/OpenLiteSpeed), ресурсы и ...
Что такое хэш, как он работает и почему его нельзя расшифровать

Что такое хэш, как он работает и почему его нельзя расшифровать

Разбираем хеширование: как оно устроено, чем отличается от шифрования и почему хэш нельзя вернуть в исходные данные. Плюс — безопа ...