Как перенести данные между VPS без остановки сервера
Миграция данных между VPS без простоя
🔹 Зачем это нужно
Перенос данных с одного VPS на другой может потребоваться, если:
- вы переходите на новый тариф или меняете хостинг;
- старый сервер работает на устаревшей ОС или не хватает ресурсов;
- нужно изменить локацию (например, выбрать другой дата-центр);
- происходит обновление инфраструктуры без остановки сервисов.
Цель — выполнить миграцию так, чтобы сайт или приложение оставались доступными всё время.
⚙️ 1. Подготовка
- Создайте новый VPS — желательно с той же операционной системой, что и на старом.
- Проверьте доступы:
- возможность подключиться по SSH к обоим серверам;
- наличие root-прав;
- открыт порт 22 для SSH.
- возможность подключиться по SSH к обоим серверам;
- Обновите систему на обоих серверах:
sudo apt update && sudo apt upgrade -y - Убедитесь, что на новом VPS достаточно места для резервных копий и файлов.
📦 2. Передача файлов и баз данных
🔸 Вариант 1: rsync (рекомендуется)
rsync позволяет синхронизировать данные между серверами без остановки работы:
rsync -avz -e ssh /var/www/ root@NEW_SERVER_IP:/var/www/
Ключи:-a — архивный режим, сохраняет права и владельцев;-v — показывает процесс копирования;-z — сжимает данные при передаче.
Перед финальным переключением DNS повторите команду — скопируются только изменённые файлы.
🔸 Вариант 2: tar + scp (архивирование)
На старом сервере:
tar czf backup.tar.gz /var/www/
scp backup.tar.gz root@NEW_SERVER_IP:/root/
На новом сервере:
tar xzf backup.tar.gz -C /
🔸 Вариант 3: Передача базы данных (MySQL / MariaDB)
На старом VPS:
mysqldump -u root -p database_name > backup.sql
scp backup.sql root@NEW_SERVER_IP:/root/
На новом VPS:
mysql -u root -p database_name < /root/backup.sql
🌐 3. Проверка нового сервера
Чтобы протестировать сайт до смены DNS, измените локальный файл /etc/hosts:
NEW_SERVER_IP yourdomain.com
Так вы сможете открыть сайт с нового VPS и убедиться, что всё работает корректно.
🔄 4. Переключение DNS без простоя
- Заранее уменьшите TTL записей DNS до 300 секунд (5 минут).
- После проверки нового сервера обновите A-запись домена на новый IP.
- DNS-обновление занимает обычно 5–30 минут, в течение которых часть пользователей может попадать на старый сервер, а часть — на новый.
Чтобы не потерять новые данные (например, заказы или сообщения), выполните
rsyncповторно после обновления DNS — это синхронизирует изменения.
🧱 5. Завершающие действия
- Проверьте, что резервные копии успешно созданы.
- Удалите временные файлы (
backup.tar.gz,backup.sql). - Обновите SSL-сертификат, если он привязан к IP.
- При необходимости расширьте диск или настройте автоматическое резервное копирование на новом сервере.
🧩 6. Полезные советы
- Для сложных проектов (WordPress, Laravel, Docker) удобно совмещать
rsyncсmysqldumpили использовать резервное копирование Docker Volume. - При длительном переходе можно временно настроить reverse proxy на старом сервере, чтобы перенаправлять трафик на новый IP.
- Для автоматизации используйте Rclone или scp с SSH-ключами, чтобы не вводить пароль вручную.