MySQL Fabric: введение. Часть I
Устанавливаем, настраиваем и запускаем программу управления фермами серверов.
Первое наше знакомство с MySQL Fabric состоялось в прошлом месяце. Теперь мы изучим этот программный продукт поподробнее.
Сначала немного теории. MySQL Fabric имеет две области управления серверами, которые помогают администраторам баз данных: высокая доступность (ВД) и шардинг данных.
Для обеспечения высокой доступности MySQL Fabric позволяет создавать группы MySQL-серверов, которые рассматриваются как отдельные логические единицы. Каждая такая логическая единица состоит из главного [primary] сервера, которому доступны операции записи и чтения (Read-Write), и подчиненных (secondary) серверов, которым доступны только операции чтения (Read-Only). Они также используются для масштабирования и могут принять роль главного сервера в случае его отказа. Наборы серверов в MySQL Fabric называются высокодоступными (ВД) группами. Информация обо всех серверах и группах находится в ведении отдельного экземпляра MySQL, который не является членом ВД-группы, а функционирует как самостоятельный узел. Этот экземпляр называется узлом MySQL Fabric.
MySQL Fabric может быть сконфигурирован для автоматического мониторинга статуса серверов в группе. Если текущий главный сервер в группе отказывает, MySQL Fabric автоматически назначает новый главный сервер из имеющихся подчиненных.
Для обеспечения репликации данных Fabric управляет набором MySQL-серверов, которые имеют т.н. глобальные идентификаторы транзакций — Global Transaction Identifiers (GTIDs). GTID — это уникальный идентификатор, который создается и привязывается к каждой транзакции, фиксируемой на главном сервере. Этот идентификатор является уникальным не только для сервера, который породил транзакцию, но и для всех серверов, входящих в группу репликации. Таким образом, GTID’bi позволяют осуществлять проверки и поддерживать непротиворечивость между серверами.
Для работы с шардингом данных MySQL Fabric использует специальные коннекторы. Можно управлять шардами и без коннекторов, используя командную строку утилиты mysqlfabric. Однако в этом случае приложение придется дополнять логикой, задающую правила выбора шардов при запросах. При использовании коннекторов между приложением и MySQL Fabric устанавливается соединение либо на основе протокола XML-RPC, либо протокола MySQL Client/Server. Коннекторы кэшируют маршрутную информацию, полученную от Fabric, и направляют запросы на запись и чтение от клиентского приложения в соответствующую шар-дированную таблицу. MySQL Fabric позволяет выполнять различные операции над шардами: создание, удаление, перемещение и разделение.
MySQL Fabric написан на языке Python и включает специальную библиотеку, которая реализует все предоставляемые продуктом функциональные возможности. Для взаимодействия с Fabric имеется специальная утилита mysqlfabric, которая предоставляет набор команд, используемых для создания и управления группами, определения и работы с шардингом данных, и многого другого.