Как перенести большую базу на другой сервер без простоев?

Антон Тишин
Антон Тишин
  • Сообщений: 16
  • Последний визит: 31 марта 2025 в 11:38

Нужно перенести сайт на базе DST Portal, на другой сервер, но проблема в том, если делать mysqldump на изначальном сервере, потом передавать его на новый сервер, потом на новом сервере этот sql файл загружать в базу, то это может занять минимум пару часов, в течении которых сайт будет недоступен. Как это можно сделать быстрее? sql файл бекапа весит больше 12ГБ

Рабочий ли вариант если просто через rsync передать всю папку /var/lib/mysql?
Еще вариант с репликацией, но насколько я понял всё равно базу нужно блокировать на момент дампа, а это тоже какое-то время

DST Global
DST Global
  • Сообщений: 19
  • Последний визит: Вчера в 22:30

С минимальным простоем — да, репликация. Выключаете на старом месте, включаете на новом. Блокировать ничего не нужно.

Валерий Людимов
Валерий Людимов
  • Сообщений: 15
  • Последний визит: 31 марта 2025 в 20:14

Рабочий ли вариант если просто через rsync передать всю папку /var/lib/mysql?

Просто перенос файлов рабочей БД окончится тем, что файлы есть, а базы нет, потому что неоткуда взяться метаданным в системной базе данных. Вернее, всё ещё забавнее — базы вроде бы и нет (USE приводит к ошибке «БД не существует»), но её нельзя создать, потому что она есть. И то же самое с таблицами (SELECT/DROP/прочее нельзя, потому что таблицы нет, CREATE нельзя, потому что она есть).

Метод сработает, если переносить все БД сразу, включая служебные. Но требуется точное соответствие исходной и конечной конфигураций — начиная с версии и сборки MySQL и кончая именами каталогов и именами/паролями учётных записей в операционной системе. Плюс перегенерация и переподключение сертификатов.

Еще вариант с репликацией, но насколько я понял всё равно базу нужно блокировать на момент дампа, а это тоже какое-то время

Решений без блокирования практически не существует. Нет, можно наколхозить реальное решение, которое обойдётся вообще без остановки, я даже представляю как именно (FEDERATED ENGINE + triggers), но подробно рассказывать не буду — для её реализации нужны достаточная квалификация и опыт, на одних советах шанс на удачу невелик, скорее всё поломается.

Есть вполне себе документированные способы: Copying MySQL Databases to Another Machine. Особенно последний из описанных. Он предполагает минимальное время простоя при использовании штатных средств. 

Строй Дом
Строй Дом
  • Сообщений: 13
  • Последний визит: 28 марта 2025 в 10:46

Рабочий ли вариант если просто через rsync передать всю папку /var/lib/mysql?

Еще вариант с репликацией, но насколько я понял всё равно базу нужно блокировать на момент дампа, а это тоже какое-то время

Антон Тишин

Если другая система аналогична первой и совпадают версии MySQL (вплоть до патча), то есть вероятность, что заведётся. На первом сервере всё равно при этом надо будет остановить MySQL.

Я так делал, когда нужно было внезапно перенести DST Мультивендор с несколькими миллионами товаров и несколько десяток тысяч категорий, а БД размером больше терабайта, но у меня были докеры, содержимое которых куда проще воспроизвести

Авторизуйтесь, чтобы писать на форуме.

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон