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

Как сделать дамп большой базы данных?

Имеется сервер с MYSQl. Скопилась база данных весом 20-22 гига.
При попытке задампать ее стандартным методом:
1) Установил screen
2) Попробовал сделать mysqldump завернув все в screen
перестал работать сайт, то есть начал лагать, т.к. идет нагрузка на БД.
Какие есть еще способы задампать базу? Может быть как-то частями? Либо изменить какие-то значения чтобы не падал сайт при дампе?
  • Вопрос задан
  • 1065 просмотров
Подписаться 4 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 4
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Добавьте ключ --single-transaction

mysqldump -u root -p basename --single-transaction > path/to/file.sql
Ответ написан
@rPman
у mysql нет адекватных методов управления приоритетами (есть low-priority yно оно действует на не все engines) поэтому исторически распределение нагрузки делают с помощью репликации.

Поднимаешь второй сервер (физически файлы базы должны быть размещены на другом диске или даже сервере) и настраиваешь между основным и этим второстепенным master-slave репликацию, требования к этому среверу сильно ниже (зависит от нагрузки само сабой, но в основном там будут только записи) и уже на эту базу натравливаешь mysqldump

p.s. альтернатива, запилить свой/подправить исходники mysqldump, в своем приложении скорость получения данных можно контролировать принудительными sleep-ами (например запрашиваешь табличку, а в цикле получения данных вставляешь раз на тысячу строк sleep).
первый же нагугленный код mysqldump на php, вставь слип в этот цикл

upd. не нужно править код штатной утилиты, более чем достаточно просто использовать штатный механизм потоков linux и замедлить запись итогового дампа с помощью к примеру cstream
mysqldump ... | cstream -t $((1024*1024)) | zstd --ultra -T0 -o backup.sql.zstd


p.p.s. тупо, останаливаешь базу, копируешь файлы с таблицами как есть, переносишь на свою машину, поднимаешь там ту же версию mysql, делаешь дамп
Ответ написан
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Ответ написан
Комментировать
REZ1DENT3
@REZ1DENT3
web-developer
Сделай реплику и делай дамп с неё.
https://highload.today/kak-nastroit-mysql-master-s...
Ответ написан
Ваш ответ на вопрос

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

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