Уменьшить приоритет команд / заданий MySQL (добавить индекс / другие команды)? - PullRequest
4 голосов
/ 31 мая 2011

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

Существует ли какой-либо метод, который может уменьшить приоритет, который MySQL отдает конкретной задаче.Этакая «милашка» внутри самого MySQL?Я нашел это, что и вдохновило вопрос:
Советы и подсказки PostgreSQL

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

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

Мы используем несколько реплицированных серверов баз данных для внесения таких изменений.

В нашем случае db1 - это мастер, реплицированный на db2 .(db1-> db2).

Начните с изменения db2.Если что-то блокируется, репликация остановится, но это нормально.

Переместите ваш трафик на db2.Любой остаточный трафик, поступающий на db1, будет реплицироваться, поэтому вы ничего не потеряете.

Как только на db1 не будет трафика, перестройте его как ведомого db2 (db2-> db1).

Это общая идея, и вы получаете очень мало времени простоя, и вам не нужно тянуть всю ночь!На самом деле у нас есть три сервера, так что это немного сложнее, но не намного.

Удачи.

2 голосов
/ 01 июня 2011

К сожалению, не существует простого способа сделать это: команды, которые изменяют структуру базы данных, не имеют опции приоритета.

Если ваши таблицы MyISAM, вы можете попробовать это:

  • mysqlhotcopy , чтобы сделать резервную копию таблицы
  • импортировать эту резервную копию на другой сервер базы данных (тот, который не загружен)
  • внести изменения там
  • сделать резервную копию mysqlhotcopy измененной таблицы
  • импортировать его на действующий сервер

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...