Подтвердить что ты не робот

Как я могу замедлить дамп MySQL, чтобы не влиять на текущую нагрузку на сервер?

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

Проблема возникает, когда я делаю дампы, MySQL прилагает все усилия к ней и связывает ресурсы с сайтами, которые подключаются к ней. Мне интересно, есть ли способ ограничить запросы дампа до состояния с низким приоритетом, которому предпочтение отдается живым соединениям? Идея состоит в том, что нагрузка с внешних сайтов не зависит от усилий MySQL, чтобы сделать полную дамп...

4b9b3361

Ответ 1

У меня очень большие базы данных с десятками тысяч таблиц, некоторые из которых содержат до 5 ГБ данных в 10 миллионах записей. (Я пользуюсь популярным сервисом)... У меня всегда были головные боли при резервном копировании этих баз данных. Используя mysqldump по умолчанию, он быстро выводит серверную нагрузку из-под контроля и блокирует все... затрагивающее моих пользователей. Попытка остановить процесс может привести к сбою таблиц и большому времени простоя во время восстановления этих таблиц.

Я сейчас использую...

mysqldump -u USER -p --single-transaction --quick --lock-tables=false DATABASE | gzip > OUTPUT.gz

Ссылка mysqldump на dev.mysql.com даже говорит...

Чтобы получить дамп больших таблиц, вы должны объединить опцию --single-транзакции с --quick.

Ничего не говорит о том, что, будучи зависимой от базы данных InnoDB, мои myISAM, и это прекрасно работает для меня. Нагрузка на сервер почти не пострадала, и мой сервис работал как Rolex в течение всего процесса. Если у вас большие базы данных и их резервное копирование влияет на конечного пользователя... это решение. ;)

Ответ 2

При использовании таблиц InnoDB используйте параметры -single-transaction и -quick для mysqldump

Ответ 3

Используйте команду nice и gzip для выполнения команды с наименьшим приоритетом.

nice -n 10 ionice -c2 -n 7 mysqldump db-name | gzip > db-name.sql.gz 

Ответ 4

Вы можете префикс команды mysqldump следующим образом:

ionice -c3 nice -n19 mysqldump ...

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

Примечание. Это задерживает время между выполнением MySQL. Сами скрипты по-прежнему будут такими же интенсивными, как и раньше, только с более длинным перерывом между сценариями.