zero-downtime-migration — міграція сервера й домену без втрати трафіку
Огляд
Безшовне перенесення навантажених сайтів, інтернет-магазинів і корпоративних веб-сервісів — WordPress, OpenCart, Laravel та самописних систем — на новий сервер, VPS/VDS або на новий основний домен (ребрендинг, перехід на .ua чи .com.ua). Головне інженерне завдання — нуль простою: бізнес працює, корпоративна пошта працює, а вага в пошуку зберігається без циклічних редиректів.
Ризики й як їх знято
| Ризик | Як вирішується |
|---|---|
| Зміна DNS розходиться від кількох годин до доби, тож частина аудиторії не бачить сайт, а замовлення губляться | TTL знижується до 300 с за добу до релізу, робиться фінальна дельта-синхронізація, і лише тоді перемикаються A-записи |
Ламаються серіалізовані дані: опції й мета-поля WordPress зберігають домени у серіалізованому вигляді, а звичайний SQL REPLACE псує віджети, теми й налаштування плагінів |
Інструменти, що враховують серіалізацію, — wp-cli search-replace або кастомні скрипти для OpenCart і Laravel |
Циклічні редиректи (ERR_TOO_MANY_REDIRECTS), коли одночасно міняються протокол, www і домен |
Одна перевірена конфігурація редиректів (.htaccess чи Nginx) і карта 301, що зберігає старе посилання |
| Поштові скриньки втрачають історію чи потрапляють у спам | Пошта переноситься з історією; записи MX, SPF, DKIM і DMARC перевіряються й валідуються |
Як це відбувається
Поточний production (A)
│ rsync / SCP + mysqldump
▼
Новий сервер / staging (B)
├─ Nginx + PHP-FPM (OPcache) + MySQL / MariaDB
├─ безпечна заміна доменів через WP-CLI / Search-Replace-DB
├─ SSL (Let's Encrypt / Cloudflare)
└─ повне тестування через запис у hosts
│ TTL до 300 с + дельта-синхронізація
▼
Плавне перемикання DNS — нуль простою
- Цільове середовище й бекапи. Повний «холодний» бекап джерела (файлова система й дамп MySQL). Новий сервер налаштовується: Ubuntu 22.04 / 24.04, Nginx, PHP 8.2+, MariaDB / MySQL 8, ліміти пам’яті, тайм-аути й OPcache.
- База даних і заміна URL. База переноситься інструментами, що враховують серіалізацію, а в конфігураційних файлах (
wp-config.php,config.php,.env) виправляються шляхи. - Тестування на staging без зміни DNS. Увесь сайт — кошик, форми, адмін-панель та інтеграції — перевіряється через локальний запис
hostsна новий IP. - Перемикання й фінальна дельта. TTL знижується за 24 години, фінальна дельта (замовлення й файли, що з’явилися за час тестування) синхронізується, оновлюються A-записи, за зміни домену вмикається карта 301, а поштові записи валідуються.
Дивіться також: opencart-catalog-migration, tilda-migration, site-security-cleanup.
Стек
Linux (Ubuntu / Debian) · Nginx · Apache · OpenLiteSpeed · PHP 8.2+ · MySQL 8 / MariaDB · Redis · Docker · rsync · WP-CLI · Search-Replace-DB · certbot (Let's Encrypt) · Cloudflare API · SPF / DKIM / DMARC