Назад | Перейти на главную страницу

Как настроить mysql-server на большую нагрузку

Я в процессе настройки нового сервера базы данных. Раньше я запускал несколько серверов баз данных mysql, и они работали нормально.

Но я хотел бы услышать рекомендуемые настройки для моего сервера. Например, что я должен установить максимальное соединение, query_cache_size, table_cache и так далее.

У меня около 4-600 в секунду:

Открытых столов: 112 запросов в секунду в среднем: 430,386.

Сервер, на котором я его настраиваю, имеет следующую конфигурацию:

Linux версии 2.6.32-5-amd64 (Debian 2.6.32-41squeeze2)

2x Intel Xeon X3440 @ 2,53 ГГц

4 ГБ ОЗУ

/, / boot, / tmp и т. д. на программном RAID1, 2x 7200 об / мин SATA

Размещение данных на программном RAID0, 2x7200 об / мин SATA

Я собираюсь разместить базы данных mysql на RAID0.

Мне что-нибудь не хватает? Дай мне знать!

Заранее спасибо, я с нетерпением жду вашего ответа :-)

/ Расмус

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

Настройки mysql по умолчанию не совсем оптимальны для современного оборудования, в качестве разумной отправной точки вы можете использовать значения, предложенные мастер настройки mysql от Percona или mysqltuner.pl.

скорее всего inodb в качестве механизма хранения будет более оптимальным в вашем случае. всего 4 ГБ памяти - это довольно мало [опять же, я не знаю, каков общий размер вашего набора данных]. 2x Xeon X3440 - это много с точки зрения мощности процессора, вам лучше иметь много одновременного трафика и иметь возможность уместить все данные в памяти, иначе вы не будете много использовать доступные процессоры, просто ожидая дисков. читать / писать данные.

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

Какого черта? У вас есть не критичные к производительности / легко восстанавливаемые материалы, работающие с зеркала, в то время как ваши критически важные, изменчивые данные находятся на JBOD ????? Что-то не хватает? У вас все наоборот.

Это первая и самая острая проблема. Если у вас действительно 4 диска, и если предположить, что это какое-то приложение OLTP, то я бы выбрал что-то вроде ...

disk1  [md0][md1  ][md2          ]
disk2  [md0][md1  ][md2          ]
disk3  [sw0][md3                 ]
disk4  [sw1][md3                 ]

Где загрузка выполняется с md0, root на md1, данные распределяются по md2 и md3 (где md0 ... 3 - это RAID1). С RAID без зеркалирования на дисках 3 и 4 (вы можете рассмотреть возможность размещения журналов в их собственном разделе вместо sw1).

Настройка системы типа OLAP будет совсем другой.

Вы также можете потратить некоторое время на размышления о файловой системе, которую вы запускаете на разделах данных (xfs, вероятно, является безопасным вариантом).

Что касается настройки экземпляра mysql - это зависит от того, какие данные вы храните и как к ним обращаются. Прочтите раздел настройки в руководстве и получите myqltuner.pl и / или инструментарий Percona. Но сначала вам нужно решить, что вам больше подходит: innodb или myisam - опять же, это зависит от расположения данных и способа доступа к ним.

RAID0 aka stripe ОЧЕНЬ опасен для БД. И для всего остального тоже. Один диск потерян - все потеряно. Stripe немного быстрее, чем однодисковый и другие RAID, но слишком рискованно.

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

Страница MySQLTuner на Github

Для получения расширенной поддержки и общих рекомендаций / настроек стоит обратиться к официальному представителю Percona. сайт и их блог