Очередное продолжение сериала, смотрите оглавление этого цикла статей на этой странице. Это третья часть из цикла статей «Программное окружение MySQL», которая полностью посвящена теме Системные утилиты MySQL из состава Maatkit.
Среди множества повседневных задач администратора MySQL, особенно выделяется контроль за правами и привилегиями пользователей и системных процессов. Эта обязанность не только ответственна, но может быть и достаточно обременительной, особенно, если в ведении находится множество таких серверов.
Отчасти автоматизировать эту задачу позволяет утилита mk-show-grants
. Её назначение: коррекция и анализ всех ограничений и прав пользователей/процессов для указанного ей во входных данных MySQL-сервера. Но на самом деле, эта утилита имеет гораздо более широкое применение: это способность «переселить» всех пользователей (с их настройками прав) с одного сервера на другой, как в режиме добавления, так и замены.
Кроме этого, она может выполнять быстрые сортировки, поиск и выделение групп пользователей по указанным признакам, а также выполнение анализа отличий прав одних и тех же пользователей на различных серверах, через генерацию информации в формате diff. Стоит отметить, что утилита достаточно безопасна: по-умолчанию она работает в режиме read-only
, поэтому, случайно нельзя повредить права или логику доступа анализируемых пользователей.
Вторая распространенная задача DBA — это восстановление баз данных и контроль их целостности. Давайте в качестве примера рассмотрим проблему взаимоблокировок транзакций (deadlock), которые относительно часто встречаются в среде MySQL.
Информация о возникающих «смертельных блокировках» доступна в самых разных источниках и логах MySQL, что ещё более запутывает ситуацию. При этом блокировки могут быть внутренними и внешними, также как они могут возникать на следующих уровнях: уровне таблицы для MERGE, MEMORY, MyISAM
или в InnoDb
. Общим симптомом её появления знаменует достаточно абстрактная запись в центральном логе MySQL: «Deadlock found when trying to get lock; try restarting transaction» и соответственно происходит заморозка выполнения транзакции.
Как легко убедиться, воспользовавшись Google, Интернет буквально кишит этим стандартным сообщением об ошибке, почти всегда завершаемый философским воззванием "Unde malum"
Как раз для этого случая в Maatkit включена утилита mk-deadlock-logger
, которая извлекает и протоколирует подробную информацию о ситуациях возникновения взаимоблокировок транзакций в хранилищах MySQL из всех доступных источников, удобно выводя всё это в виде единой суммирующей таблицы. Отдельно стоит подчеркнуть, что текущая реализация этой утилиты пока поддерживает диагностику только самой проблематичной разновидности из всех блокировок — на уровне хранилища InnoDB.
Я не зря употребил здесь наречие «пока» — разработчики Maatkit обещают со временем придать ей свойства универсальности в столь сложной и востребованной для MySQL задаче, как помощь в расследовании причин возникновения блокировок транзакций.
В заключение этого пункта, кратко опишем другие системные утилиты Maatkit:
GNU find
;fifo
) для его внешней обработки, по мере вывода этот «виртуальный» целевой файл будет соответственно «ужиматься» в размерах.Эта вспомогательная утилита очень удобна для циклической обработки больших текстовых лог-файлов, «выгружая» на вывод при каждой итерации, строго фиксированные по размеру порции текста.
~
Начало этой серии статей здесь. Следующую часть (продолжение) — читайте вот тут.
1 комментарий
Последнее время я использую Valentina Studio для работы с MySQL. Очень хороший и бесплатный инструмент, рекомендую посмотреть.http://www.valentina-db.com/en/valentina-studio-overview