Всем привет.
Есть сайт site.ru, который хостится на сервере 1.1.1.1. Есть сервер 2.2.2.2, более мощный, со всеми обновленными либами (php, mysql и т.п.) и на последней версии фреймворка. Как аккуратно переползти с 1.1.1.1 на 2.2.2.2 так, чтобы пользователи не заметили? Или куда читать?
Сайт не высоконагруженный, но падение или технический перерыв заметят сразу.
v3shin, Ну если нужно просто перенести без каких либо доработок, то просто копируете базу данных со старого хостинга на новый, подключаетесь на старом хостинге к бд от нового хостинга, с этого момента у вас на новом хостинге будет актуальная бд. Переносите все файлы сайта на новый хостинг, тут уже чтобы не было сюрпризов можно сделать тестовый домен и убедиться что все работает, после чего переносите файлы с тестового домена на основной. Теперь можете менять днс и уже не важно как долго они будут переносится потому что у вас оба хостинга к одной бд подключены, то есть переход с одного сайта на другой никто не заметит. Но в идеале подключится сначала к CloudFlare, тогда смена днс займет не больше 10 минут
Виталий Першин, доработок полно: новая версия фреймворка и часть кода переписана под новую версию php. БД тоже другая потому что версия более новая. Плюсом, на 1.1.1.1 постоянно ведется разработка и на 2.2.2.2 приходится постоянно подтягивать код в новую ветку git'а и проверять его работоспособность.
v3shin, ну тогда замораживайте разработку (изменения), копируете данные на новый сервер, исправляете все проблемы, ещё раз всё проверяете, ну и переключаете трафик на новый сервер, облегчённо вздыхаете.
Такие операции без даунтайма невозможны. Можно лишь свести время простоя к минимуму...
Сайт не высоконагруженный, но падение или технический перерыв заметят сразу.
Значит, спланируйте переезд, отработайте на модели, просчитайте требуемое время простоя, и за месяц начните всем сообщать, когда сервер будет остановлен для техработ и на какой срок. Подождут, не сдохнут.
AUser0, включение и настройка репликации - это уже даунтайм, причём немаленький. Ибо сейчас у товарища этих благ не имеется.
И товарищ желает вывести старую ноду совсем - значит, ему сразу надо делать мастер-мастер репликацию... ибо вывод из схемы единственного мастера без даунтайма тоже не получится.
Akina, рестарт MySQL-я с новыми настройками - секундное дело. Синхронизированный слэйв при выключенном мастере обладает всеми данными, хранившимися на мастере, один-в-один. Только выключить привязку к мастеру, что бы за данными не ломился, и всё!
AUser0, я имел в виду, что товарищу сначала надо тупо сотворить репликацию. Остановить имеющийся сервер, снять снапшот данных, настроить сервер как мастера, запустить, а снапшот перенести на второй сервер, где настроить и запустить его как слейв. А это даунтайм, и не на пару секунд.
Потом-то да, всё как из пушки..
Akina, не-не-не, percona-чего-то там всё засинхронизирует, прямо по живому и пустому, без снапшотов. Этот тулчеин для того и писали, незаменимая весчь! Можно чуть ускорить, dump с работающего мастера вливается на слейв, и синхронизируется percon-оной. Прямо по работающему всему.
Обычно поднимают балансировщик и делают так что сначала все ходят на 1.1.1.1.
Потом делают перевод новых сессий в новое место в пропорции 20:80.
И так далее пока все сессии не переползут.
v3shin, только встаёт проблема разного содержимого на разных серверах. Допустим один пользователь написал комментарий на сервере 1.1.1.1, а на 2.2.2.2 этот комментарий не попадает, потому что это разные сервера. Ну и так далее, по всем добавляемым данным...
v3shin, почитай про Blue-Green deployment. Это не про миграцию на новый сервер а про апгрейд версии софта. Но технически - это те-же самые проблемы решаются.
Как сохранить состояние сессий при миграции - это уже ты сам подумай. Я думаю этот вопрос тебе никто не сможет ответить.