Какой самый лучший и быстрый способ перенести базу данных на новый сервер?

Имеется сайт с большой базой данных (около 30Gb) и большой посещаемостью. Требуется перенести ее на другой сервер, причем время простоя сайта нужно свести к минимуму.
Первая мысль что пришла в голову это использовать mysqldump. Но с ним получается сайт надо переводить в режим обслуживания с момента начала создания дампа и до полного восстановления дампа на другом сервере. Т.е. сделать дамп, перенести его на другой сервер и восстановить. Причем восстановление дампа занимает намного больше времени чем создание (хоть и использовал ключ --opt при создании). Можно кажется еще использовать инструмент percona innoxtrabackup но на целевом сервере другая версия mysql (5.7, а на исходном 5.5).

Кто что посоветует?
  • Вопрос задан
  • 1581 просмотр
Решения вопроса 1
yarkov
@yarkov
Помог ответ? Отметь решением.
А включить репликацию на другой сервер?
https://habrahabr.ru/post/56702/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
вообще репликация должна быть изначально

версии базы - только одинаковые
переносите, потом обновляйте
это в т.ч. и репликации требования

b_uky2uxiaamizi.jpg
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Не ипите мозг ни нам и никому!
1. Тестируете скорость канала или курьера-админа с HDD и метод в лабе.
2. Вешаете на паблик объявление, что переезд базы через 3-4 дня и сервис будет недоступен, т.к. Вы переносите базу объёмом 30Гб целиком и ставите сервис в режим READ-ONLY в этот интервал! (это обязательно нужно писать, чтобы у людей не возникло чувства, что у вас сервис работает со сбоями!). Пишите ориентировочный срок возобновления работы: дата-время.
3. Готовитесь как положено к этому!
4. Ставите READ-ONLY для базы (+объяву сверху в GUI) или заглушку (если RO невозможно сделать из-за БП), что ведутся работы по переносу базы.
И спокойно делаете ПОЛНЫЙ ДАМП и потом ВОССТАНАВЛИВАЕТЕ ЕГО на новом сервере.

А вообще - нужно иметь чёткое разделение:
1. структура базы (это само собой)
2. таблицы и данные системы/приложения (публикации, доступы, админка, CMS, логи и прочее, т.е. всё, что правится владельцами сервиса или самой системой)
3. таблицы и данные пользователей (аккаунты, комментарии и т.д.)
Только тогда Вы сможете чётко контролировать запросы и перенести в "прозрачном" режиме данные для пользователей без остановки сервиса.
Т.к. для переноса данных одного пользователя - нужно гораздо меньше времени.

Да, и обратите внимание на бегемота от dimonchik2013 ! => Это главное!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы