В настоящее время MySQL поддерживает два разных решения для создания среды высокой доступности и достижения масштабируемости на нескольких серверах.
MySQL репликации
Первая форма репликации, который поддерживает MySQL, так как MySQL версии 3.23. Репликация в MySQL в настоящее время реализована как асинхронная настройка ведущего-ведомого, которая использует логический лог-сервер.
Установка «ведущий-ведомый» означает, что один сервер назначен как ведущий. Затем требуется получить все запросы на запись. Затем мастер выполняет и регистрирует запросы, которые затем отправляются подчиненному устройству и, следовательно, сохраняют одни и те же данные во всех членах репликации.
Репликация является асинхронной, что означает, что ведомый сервер не гарантирует получение данных, когда мастер выполняет изменение. Обычно репликация будет максимально возможной в режиме реального времени. Тем не менее, нет никакой гарантии о времени, которое требуется для изменения для распространения на подчиненный.
Репликация может использоваться по многим причинам. Некоторые из наиболее распространенных причин включают масштабируемость, отказоустойчивость сервера и решения для резервного копирования.
Масштабируемость может быть достигнута из-за того, что теперь вы можете делать запросы SELECT для любого из ведомых устройств. Операторы записи, однако, не улучшаются в основном из-за того, что записи должны выполняться на каждом из членов репликации.
Отказоустойчивость может быть реализована достаточно легко с помощью внешней утилиты мониторинга, которая использует биение сердца или аналогичный механизм для обнаружения отказа основного сервера. В настоящее время MySQL не выполняет автоматический переход на другой ресурс, поскольку логика, как правило, зависит от приложения. Имейте в виду, что из-за того, что репликация является асинхронной, возможно, что не все изменения, сделанные на главном, будут распространены на подчиненный.
Репликация MySQL работает очень хорошо даже при более медленных соединениях и с непрерывными соединениями. Он также может использоваться на разных аппаратных и программных платформах. Можно использовать репликацию с большинством систем хранения, включая MyISAM и InnoDB.
MySQL Cluster
MySQL Cluster не является общим ничего, распределенная система разделения, использующая синхронную репликацию для того, чтобы поддерживать высокую доступность и производительность.
MySQL Cluster реализован через отдельный механизм хранения под названием NDB Cluster. Этот механизм хранения автоматически разделяет данные по нескольким узлам данных. Автоматическое разбиение данных позволяет распараллеливать выполняемые запросы. Оба чтения и записи могут быть масштабированы таким образом, поскольку записи могут быть распределены по многим узлам.
Внутри MySQL кластер также использует синхронную репликацию, чтобы удалить любую точку отказа из системы. Поскольку два или более узла всегда гарантированно имеют фрагмент данных, по крайней мере один узел может выйти из строя без какого-либо влияния на выполнение транзакций. Обнаружение сбоя автоматически обрабатывается, когда мертвый узел удаляется прозрачно для приложения. После перезапуска узла он будет автоматически повторно интегрирован в кластер и начнет обработку запросов как можно скорее.
В настоящее время существует ряд ограничений, которые необходимо учитывать при решении вопроса о том, является ли MySQL Cluster правильным решением для вашей ситуации.
В настоящее время все данные и индексы, хранящиеся в кластере MySQL, хранятся в основной памяти кластера. Это ограничивает размер базы данных на основе систем, используемых в кластере.
MySQL Cluster предназначен для использования во внутренней сети, поскольку задержка очень важна для времени отклика. В результате невозможно запустить один кластер на широком географическом расстоянии. Кроме того, в то время как MySQL Cluster будет работать над настройками товарной сети, для достижения максимальной производительности можно использовать специальные кластерные межсоединения.
мой вопрос был скорее относительно рассуждений, связанных с выбором. – th3an0maly