Как вы настраиваете MySQL для большой рабочей нагрузки InnoDB?

39

Предполагая производственную систему OLTP с преимущественно таблицами InnoDB

  • Каковы общие симптомы неправильно настроенной / неправильно настроенной системы?
  • Какие параметры конфигурации вы чаще всего меняете по умолчанию?
  • Как определить потенциальные узкие места, прежде чем возникнет проблема?
  • Как распознать и устранить активные проблемы?

Любые анекдоты с подробным описанием конкретных statusпеременных и диагностики будут оценены.

Riedsio
источник
2
Этот вопрос очень широк. Вы можете разделить это на 4 вопроса? (И даже ваши маркированные вопросы невероятно широки. Можете ли вы привести их в соответствие со своими конкретными проблемами?)
Брайан Баллсун-Стэнтон

Ответы:

16

Вот хорошая статья по настройке InnoDB от Sun Дженни Чен - она ​​много пишет в блоге о MySQL, некоторые из них относятся к Solaris (например, с использованием DTrace ), но весь блог полон интересных лакомых кусочков.

Gaius
источник
4
Кто такая Дженни Чен?
Pacerier
19

Интересно, что в MySQL 5.5 теперь можно иметь несколько буферных пулов innodb.

Параметры, которые вас интересуют:

Примерно через месяц я планирую внедрить 112 буферных пулов innodb для клиента. Я дам вам знать, как все прошло.

ОБНОВЛЕНИЕ 2011-02-27 21:57 ПО ВОСТОЧНОМУ ВРЕМЕНИ

Я обнаружил, что максимальное значение для innodb_buffer_pool_instances равно 64. Я решил настроить 144 ГБ, поэтому для innodb_buffer_pool_instances было установлено значение 18, а для innodb_buffer_pool_size установлено значение 8. В настоящее время я загружаю сервер с 450 ГБ.

ОБНОВЛЕНИЕ 2011-04-28 13:44 ПО ВОСТОЧНОМУ ВРЕМЕНИ

Я опробовал несколько буферных пулов InnoDB. Было слишком много потоков и блокировок. Я переключился на один буферный пул 162 ГБ + установил read_io_threads и write_io_threads в 64 (максимальное значение). Это сработало намного лучше.

ОБНОВЛЕНИЕ 2012-07-03 17:27 ПО ВОСТОЧНОМУ ВРЕМЕНИ

Я узнал кое-что удивительное о MySQL. Если вы выделите один монолитный буферный пул InnoDB, который больше, чем общий установленный, разделенный на количество физических процессоров , ваша система будет подстрекать ОС к регулярным интервалам подкачки памяти из-за полного пула буферов InnoDB. Опция MySQL 5.5, известная как innodb_buffer_pool_instances, может использоваться для разделения буферного пула. Вчера я правильно реализовал это для клиента, о котором упоминал в своем ответе в прошлом году. У меня еще есть 162 ГБ для пула клиента. Я установил для параметра сервера innodb_buffer_pool_instances значение 2, поскольку каждый сервер БД имеет двойной шестнадцатеричный формат. Я думал о том, чтобы установить его на 12, но потом коллега показал мне блог от Джереми Коула на MySQL и Swappiness, Прочитав его, я немедленно применил его на практике для своего клиента. Я запускал эту команду

numactl --hardware

Я видел отображение 192 ГБ ОЗУ сервера как 96 ГБ для каждого физического ядра. Поэтому я установил innodb_buffer_pool_instances равным 2. Сейчас все выглядит хорошо. Я обновлю свой ответ, чтобы увидеть, как это влияет на обмен памяти для следующих 2-х месяцев.

RolandoMySQLDBA
источник
Привет @RolandoMySQLDBA, из блогов Джереми я не могу найти никаких соединений или выводов, что установка экземпляра innodb равная количеству физических процессоров решит проблему подкачки. Будет ли несколько экземпляров innodb автоматически балансировать между узлами памяти без установки numactl --interleave = all, очистки буферных кешей Linux или принуждения ОС выделять буферный пул InnoDB?
Вэнь Рен
@Rolando, Хороший 2x 100 ГБ оперативной памяти. Какой клиент это?
Pacerier
Я думал, что «экземпляры» были реализованы таким образом: (номер блока) MOD (num instance) -> (в какой экземпляр помещать блок). Это не имеет ничего общего с NUMA.
Рик Джеймс
4

Во-первых, увеличьте размер пула буферов InnoDB по умолчанию в my.cnf (я считаю, что по умолчанию он равен 8 МБ)

Вы, вероятно, должны установить это на 75% от вашего объема оперативной памяти (в целом)

Мэтт Хили
источник
-1

Какие параметры конфигурации вы чаще всего меняете по умолчанию?

конфигурация памяти

sbczk
источник
Можете ли вы дать более объяснительный ответ? Что с ними вы меняете? Почему вы делаете эти изменения? Каковы ваши ожидаемые наблюдения после указанных изменений? Откуда ты знаешь, на что их поменять?
Jcolebrand
Готовая конфигурация mysql подготовлена ​​для быстрой настройки таблиц myisam (так как большинство пользователей используют ее таким образом), кроме того, чтобы иметь хорошо оптимизированный сервер, вы должны выбрать «основной» движок для использования (innodb или mysql), так как это действительно довольно Сложно настроить базу данных для отличной производительности для механизмов стенда, mysql имеет отдельные буферы для механизмов myisam и
innodb