powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL Ведение лога запросов только одной базы данных
5 сообщений из 5, страница 1 из 1
MySQL Ведение лога запросов только одной базы данных
    #39141660
_Alex_Fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Включил логирование медленных запросов и запросов без индексов.

Файл my.cnf
[mysqld]
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

Проблема в том, что логирование происходит всех баз данных.
Как сделать только одной?
...
Рейтинг: 0 / 0
MySQL Ведение лога запросов только одной базы данных
    #39141679
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в чём-то другом. Дело в том, что log_slow_queries включает логгирование медленных ЗАПРОСОВ безотносительно того, к каким БД они выполняются (один запрос вполне может работать с несколькими БД).

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

Как отфильтровать нужное. Варианты (по мере неприемлемости):
- найти глазами и руками нужные запросы в относительно небольшом выводе утилиты mysqldumpslow (если они не где-то на первых страницах вывода - то и не представляют большой проблемы, скорее всего).
- написать скрипт, который будет сопоставлять имя БД с именем пользователя и выдёргивать из общего лога нужное в отдельный файл.
- запустить исследуемую БД на отдельном сервере или в отдельном инстансе mysql (где нет других баз) и писать отдельный лог.
- можно ещё закрыть доступ к базам, логгировать которые не нужно, или удалить их, но этот вариант не подойдёт скорее всего.
...
Рейтинг: 0 / 0
MySQL Ведение лога запросов только одной базы данных
    #39141719
_Alex_Fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

Т.е. вы говорите, что в настройках my.cnf нельзя указать базу данных?

Нашел такую утилиту mysqldumpslow .

# В составе MySQL есть утилита mysqldumpslow — Perl-скрипт, который суммирует данные лога, и наглядно отображает,
# насколько часто исполняется каждый из медленных запросов.


Это ее хелп.
mysqldumpslow --help
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]

Parse and summarize the MySQL slow query log. Options are

--verbose verbose
--debug debug
--help write this text to standard output

-v verbose
-d debug
-s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is default
al: average lock time
ar: average rows sent
at: average query time
c: count
l: lock time
r: rows sent
t: query time
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup script)
-l don't subtract lock time from total time




Вот эта строка.

-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all

Вроде говорит, что можно как то указать базу данных.
...
Рейтинг: 0 / 0
MySQL Ведение лога запросов только одной базы данных
    #39141815
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Alex_FoxВот эта строка.

-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all

Вроде говорит, что можно как то указать базу данных.Нет, hostname - это имя хоста, а не имя базы данных.

Как вариант, можно попробовать лог писать в таблицу , а не в файл. Возможно, там удастся отделить запросы к разным базам. Правда, у меня сейчас нет на чем попробовать.

Кстати, а как быть с запросами, которые используют таблицы из разных баз? Их как учитывать?
...
Рейтинг: 0 / 0
MySQL Ведение лога запросов только одной базы данных
    #39141935
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Записывайте все, но обрабатывайте потом программой pt-query-digest.
Она вам в любом случае нужна, но кроме того в ней есть ключики чтобы выбрать запросы из конкретного контекста (надо понимать, что запросы могут быть и из нескольких схем сразу)

Вот тратить время на log-queries-not-using-indexes не очень практично. Лучше пока это убрать.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL Ведение лога запросов только одной базы данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]