Введение
Alauda Database for MySQL — это решение для баз данных с высокой доступностью, основанное на технологии MySQL Group Replication и работающее в Kubernetes. Оно обеспечивает автоматизированное развертывание и управление кластерами MySQL Group Replication.
Ключевые возможности
- Высокая доступность: Архитектура кластера основана на MySQL Group Replication, реализует автоматическую синхронизацию данных между несколькими узлами и самовосстановление при сбоях, с автоматическим переключением при отказе основного узла, что снижает риски прерывания сервиса.
- Согласованность данных: Распределённая аутентификация на основе технологии групповой репликации, обеспечивающая согласованность данных.
- Автоматизированное управление: Реализовано полное управление жизненным циклом развертывания кластера, обновления конфигураций, резервного копирования и восстановления через Operator, что системно снижает операционные затраты.
- Эластичное масштабирование: Поддержка онлайн-добавления и удаления узлов, автоматическая глобальная синхронизация состояния транзакций, адаптация к динамическим изменениям нагрузки.
- Разделение чтения и записи: Поддержка разделения чтения и записи через MySQL Router.
Сценарии применения
- Критически важные бизнес-базы данных, требующие высокой доступности
- Распределённые базы данных с требованиями к сильной согласованности данных
- Облачные нативные базы данных с необходимостью эластичного масштабирования
Ограничения использования
- Количество участников группы: Максимальное число участников группы репликации MySQL — 9. Рекомендуется не менее 3 участников для обеспечения высокой доступности.
- Движок InnoDB: Зависит от движка хранения InnoDB; рекомендуется настроить
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"для отключения неподдерживаемых движков. - Явный первичный ключ: Каждая таблица для репликации должна иметь определённый первичный ключ или эквивалент первичного ключа, где эквивалентом является уникальный ключ, не допускающий NULL. Для поддержки таблиц без явно заданного первичного ключа настройте
sql_generate_invisible_primary_key: ON. - Качество сети: Предназначено для развертывания в кластерах, где серверные инстансы расположены близко друг к другу, обеспечивая низкую сетевую задержку. Высокая задержка сети может привести к задержкам репликации или её сбоям.
- Ограничения уровня изоляции: Рекомендуется использовать уровень изоляции READ COMMITTED; уровень SERIALIZABLE не поддерживается.
- Ограничения внешних ключей: Каскадные внешние ключи не рекомендуются в режиме multi-master.
- Взаимные блокировки в multi-master: В режиме multi-master могут возникать дедлоки при использовании операторов
SELECT .. FOR UPDATE, так как блокировки не разделяются между участниками. - Конфликты при одновременных DDL и DML: В режиме multi-master операции DDL и DML могут вызывать конфликты; рекомендуется избегать их одновременного выполнения.
- Ограничения размера транзакций: Убедитесь, что размер транзакции находится в пределах group_replication_transaction_size_limit (по умолчанию около 143 МБ) и может быть завершён в течение периода group_replication_member_expel_timeout (по умолчанию 5 с).
- Ограничения гетерогенной архитектуры: Из-за ограничений плагина MySQL Clone гетерогенные сценарии в настоящее время не поддерживаются.
- Ограничения при поэтапном обновлении: MySQL Pods будут перезапускать сначала вторичные участники, а основной участник — последним. Этот процесс может вызвать кратковременные прерывания соединений, требующие реализации повторных попыток на уровне приложения.