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

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

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

Ответы [ 4 ]

133 голосов
/ 27 августа 2012

У меня очень большие базы данных с десятками тысяч таблиц, некоторые из которых содержат до 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 в течение всего процесса. Если у вас большие базы данных и их резервное копирование влияет на конечного пользователя ... это решение. ;)

39 голосов
/ 14 октября 2011

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

0 голосов
/ 03 июля 2015

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

nice -n 10 ionice -c2 -n 7 mysqldump db-name | gzip > db-name.sql.gz 
0 голосов
/ 14 апреля 2011

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

ionice -c3 nice -n19 mysqldump ...

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

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

...