Просмотров: 4577

Программное окружение MySQL: Maatkit. Часть 4


Окончание сериала, смотрите начало и оглавление этого цикла статей на этой странице. Это — заключительная четвёртая часть из цикла статей «Программное окружение MySQL», которая посвящена Репликации и бэкапу данных MySQL с помощью срипт-пакета Maatkit.

Maatkit MySQL утилита скрипт

Репликация

Репликация — отдельная большая тема, содержащая множество специфики, которую в этой краткой статье хотелось бы опустить, в силу невозможности объять необъятное. Здесь мы сосредоточимся лишь на утилитах Maatkit для сопровождения и упрощения этой самой репликации:

  • mk-heartbeat — мониторинг задержек при репликации баз данных MySQL (можно использовать и с PostgreSQL для аналогичных целей);
  • mk-slave-delay — задает паузу при репликации slave-сервера;
  • mk-slave-find — находит и распечатывает в древообразном виде иерархию из slave-серверов (схему репликации) на заданном ведущем сервере;
  • mk-slave-move — инструмент, для простого и безопасного переконфигурирования режима репликации slave-сервера;
  • mk-slave-prefetch — работа с опережающим кешированием при репликации на slave-сервере (говоря на жаргоне разработчиков баз данных — это «репликация с подогревом»);
  • mk-slave-restart — контроль за сервером и его автоматический перезапуск при возникновении заранее перечисленных ошибок, возможных при репликации;

А на следующей утилите из этого раздела хотелось бы остановиться чуть поподробнее, т.к. сфера её применения часто выходит за рамки только лишь штатного назначения — контроля результатов репликации. Итак, mk-table-checksum выполняет проверку целостности данных после репликации, для чего проводится снятие контрольных сумм таблиц и баз данных на одном или множестве серверов (позволяет подключаться теоретически к неограниченному количеству серверов MySQL, проводя анализ и сравнение содержимого таблиц). Фильтр mk-checksum-filter позволяет при этом группировать и визуально подсвечивать выходные данные mk-table-checksum , для более наглядных результатов работы.

Утилиту mk-table-checksum можно также использовать для сверки идентичности не только реплицируемых баз данных целиком, но и их отдельных таблиц (вне рамок репликации), например, системных с правами пользователей (если они у вас должны быть везде аналогичными или для поиска каких-либо отличий).

Репликация, как достаточно сложный процесс, требует понимания многих мелочей и деталей синхронизации: различные методы подсчета контрольных сумм в mk-table-checksum , разработанные для разных режимов репликации, которые могут даже изменять сами сверяемые таблицы (подтверждение этого — работа утилиты с ключом —-replicate ). Общий же список алгоритмов сверки доступен через ключ —algorithm .

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

3 категории утилит в составе Maatkit

Небольшое отступление, которое поможет лучше понять необходимость и предназначение подобных «текстовых утилит», включенных в Maatkit, но никак не связанных напрямик с функциональностью MySQL.

Дело в том, что, будучи полностью верным конвейерному принципу решения задач, характерным именно для unixway, Maatkit построен на множестве узкоспециализированных утилит, которые условно можно разделить на две диалектически связанные группы: те, которые выделяют и сохраняют проблемные SQL-запросы по самым разным критериям и условиям (в качестве выходного результата генерируя файлы-списки отобранных запросов), и вторую большую группу утилит — которая получает в качестве входящих параметров эти самые, заранее им подготовленные запросы, которые они впоследствии как-то профилируют, тестируют и так далее. Отдельная, третья группа утилит, предназначена для системного мониторинга и администрирования MySQL.

Резервирование

Сохранение всего накопленного содержимого баз данных является одной из основных стоящих задач перед DBA. Давайте посмотрим, что может предложить в этом плане Maatkit.

Утилита mk-parallel-dump делает снимок (дамп) таблиц и баз данных в параллельном режиме. Применяемая в паре с ней mk-parallel-restore , — загружает ранее сделанные резервные дампы. Главное отличительное свойство этих утилит от штатных средств и методов MySQL — использование параллельных методов доступа к базе данных, что заметно повышает скорость выполнения операции.

И, наконец, более сложный и избирательный вариант бэкапа представляет mk-archiver  — эта утилита выгружает записи, отобранные по заданному критерию, с одной таблицы MySQL в другую, этого же (или любого другого) MySQL-сервера, либо — в указанный файл. Утилита спроектирована с учетом очень простой возможности его расширения (подключение своих постпроцессов и предварительных фильтров) и добавления собственной логики сохранения данных.

Приведем пример его типичного вызова:

mk-archiver --source h=arizona_srv,D=test,t=tbl --dest h=texas_srv --file '/var/log/archive/%Y-%m-%d-%D.%t' --where "1=1" --limit 500 --commit-each

Здесь мы архивируем все записи таблицы tbl с сервера arizona_srv на texas_srv , а также дополнительно дублируем содержимое этой таблицы в файл, сгенерированный с именем текущей даты. При этом формат ключа --source будет выглядеть так:

--source h=my_server,D=my_database,t=my_tbl

Где h, D, t  — это, соответственно: узел-источник сервера MySQL, база данных и таблица на нём.

На сегодня с пакетом Maatkit всё, дополнительные вопросы можно прояснить для себя в подробной официальной документации или здесь.

А в следующей части этой серии (Программное окружение MySQL), мы продолжим рассмотрение лучшего стороннего программного окружения для популярной СУБД MySQL, и во второй части пристально рассмотрим пакет консольных утилит уже от компании Google (эта часть статей будет опубликована на этом блоге полностью уже в марте).


~

Начало и оглавление этой серии статей смотрите здесь

Игорь Савчук // Системный Администратор, 2011
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , ,
Эта запись опубликована: Понедельник, 20 февраля 2012 в рубрике Unix'овое.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз