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

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

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

Используйте набор инструментов Maatkit. В частности мк-запрос-дайджест. Создайте журнал всех запросов, используя общий журнал или 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

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

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

Настройте long_query_time на свои нужды.

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

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

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

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

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

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