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

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

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

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

DST Global
DST Global
  • Сообщений: 19
  • Последний визит: 7 мая 2025 в 18:07

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

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

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

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

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

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

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

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

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

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

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

Антон Тишин

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

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

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