Найти самые загруженные базы данных и таблицы на сервере MySQL

У меня есть занятый сервер MyMQL с довольно большим количеством баз данных. Я пытаюсь найти лучший способ найти самые загруженные базы данных (и таблицы) на сервере, чтобы я мог перенести их на отдельную машину. Какой лучший способ пойти по этому поводу?

4 ответа

Решение

Вы должны активировать медленный журнал запросов и посмотреть, какие запросы занимают больше всего времени. Это может быть достигнуто с помощью

  log_slow_queries       = /var/log/foo.log
  long_query_time = 5

Настройте long_query_time в соответствии со своими потребностями.

Второй вариант - использовать mytop и видеть запросы, когда они пролетают. Но я рекомендую идти по журналу медленных запросов по маршруту. Если вам нужны метрики запросов / секунд, вы должны включить двоичный файл журнала на некоторое время (скажем, день), а затем запустить что-то вроде http://hackmysql.com/mysqlsla.

Используйте набор инструментов Maatkit. Конкретно mk-query-digest. Создайте журнал всех запросов, используя общий журнал или tcpdump. mk-query-digest создаст отчет о наиболее частых запросах. Из этого отчета вы можете увидеть, какая база данных / таблицы наиболее часто используются.

Захватить пакеты запроса с

tcpdump -i eth1 port 3306 -s 65535 -x -n -q -tttt > dump.txt

Анализировать с

mk-query-digest --type=tcpdump dump.txt --order-by=Query_time:cnt --limit=200 > query_report.txt

Если у вас есть дополнительные деньги, используйте MySQL Enterprise Monitor для оценки всех видов производительности и статистики запросов. Я думаю, что можно как-то получить ознакомительную версию MEM.

Если у вас нет лишних денег, MySQL Proxy может перехватывать запросы и выполнять все, что вы хотите, чтобы вы могли таким образом собирать статистику.

Медленный журнал запросов Питер Мейер сказал вам также один из способов.

Я бы предложил так называемую функцию user_statistics, которую изначально разработал Google. Он доступен в Percona Server и MariaDB, и аналогичная функция есть в PERFORMANCE_SCHEMA в следующем выпуске MySQL 5.6. Все они позволяют довольно просто определить, какие таблицы, индексы и т. Д. Используются.

Если это не вариант, я бы выбрал pt-query-digest, как это предлагает sreimer.

Другие вопросы по тегам