Выбор платформы для MySQL кластера, что посоветуете?
Добрый день.
В данный момент я выбираю средства для создания mysql кластера на 3 машины.
Рассматриваю два варианта: MySQL InnoDB Cluster (Master-Slave) и Mariadb + Galera4(Master-Master).
MariaDB предпочтительнее, т.к. существующий продукт уже работает с этой СУБД, но напрягает требование по обязательному наличию PrimaryKey (есть таблица без него) и необходимость делать автоинкрементные поля с шагом больше 1. Ну и опасаюсь Master-Master схемы, кажется менее надежной.
MySQL InnoDB Cluster нравится тем, что имел дело с репликацией ранее и все работает без проблем, ну и вроде как никаких нет сложностей с таблицами, кроме необходимости проверить работу существующего ПО с MySQL. Ну и кажется совсем удобной схема с установкой MySQL Router на том же компе что и ПО.
Буду раз услышать отзывы о использовании обоих решений и, возможно, предложения по другим вариантам.
Лентюй, нагрузка как раз достаточно умеренная на данном этапе, вопрос в отказоустойчивости. Система должна работать при выходе из строя одного из компов.
С "MySQL InnoDB Cluster" не работал - ничего не скажу
Galera и просто master-slave: в проде сейчас пачка галер от перконы и мастер слейвов всех вендоров.
Галера не важно какой вендор - если не трогать работает нормально. перед галерой лучше поставить haproxy (отдельно или туда где живет апликейшон) - чтобы соедиения шли по умолчанию в одну ноду и были чеки что нода в синке с другими, и доп ноды на случай проблем с той в которую идут коннекты по умолчанию.
Master-slave открытым остается вопрос о том - что будет делать ваш апликейшон если мастер упал ?
Документация и утилиты мне больше нравятся у Percona.
Требывание по наличию PrimaryKey это механизм галеры и тут ничего не поделаеш.
Также выбирая Galera не важно от кого - почитайте про то как происходит рекавери кластера если одна из нод потеряла все данные, про виды SST и доступность ноды донора.
Спасибо, почитаю.
По поводу отвалившегося мастера - остальные ноды просто выберут другого мастера, вроде просто все. А mysql router определит, что мастер изменился и начнет отправлять запросы на запись к другой ноде. Приложение даже и знать не будет об этом в идеале.
Это мне как раз очень нравится в реализации mysql.