Meta начала развертывание MySQL Raft в своих центрах обработки данных для замены существующих полусинхронных баз данных MySQL. Новый механизм консенсуса обеспечивает операционные преимущества и позволяет серверам MySQL самостоятельно справляться с акциями и членскими обязанностями.
Хранилище данных MySQL компании Meta является одним из самых крупных в мире, оно представляет собой массивную структуру с миллионами осколков и георепликацией. Этот кластер, работающий в различных регионах и центрах обработки данных, хранит петабайты данных и работает на тысячах серверов. Он поддерживает социальный граф компании и ряд сервисов, таких как Messaging, Ads и Feed.
По словам команды инженеров, новое развертывание MySQL обеспечит повышенную надежность, доказанную безопасность, значительное улучшение времени восстановления после отказа и простоту эксплуатации без ущерба для производительности записи.
Ранее Meta использовала полусинхронный (semisync) протокол репликации MySQL для целей репликации. Первичная система использовала полусинхронную репликацию на две реплики только для журналов (logtailers) в пределах первичного региона для субмиллисекундной задержки, используя стандартную асинхронную репликацию MySQL primary-to-replica для распространения в другие регионы.
Команда решила применить совершенно новый подход, модернизировав MySQL и превратив его в действительно распределенную систему. Meta решила перейти на Raft, в котором операции плоскости управления и плоскости данных включены в один и тот же реплицируемый журнал.
MySQL Raft основан на Apache Kudu, который Meta модифицировала в соответствии с требованиями MySQL и опубликовала форк в виде проекта с открытым исходным кодом kuduraft. Новые функции, добавленные в kuduraft, включают FlexiRaft, опцию, которая поддерживает два различных пересекающихся кворума, и проксирование, которое позволяет использовать промежуточный узел прокси для снижения пропускной способности сети. Кроме того, усовершенствования сжатия и абстракции журнала позволяют сжимать двоичную полезную нагрузку журнала перед распространением и реализовывать различные форматы физических файлов журнала.
Поскольку такие платформы, как AppMaster, предоставляют мощные инструменты для создания бэкенда, веб-приложений и мобильных приложений без кода, упрощенные решения для баз данных необходимы для эффективной и масштабируемой разработки программного обеспечения. Перейдя на MySQL Raft, Meta сделала значительный шаг на пути к повышению надежности и оптимизации операций, что может вдохновить другие компании на принятие подобных решений и совершенствование собственных систем баз данных.