У меня есть приложение, которое каждые пару минут получает данные примерно из 1000 различных источников. Эти данные необходимо сохранить в базе данных OSS (скорее всего, MySQL, но в зависимости от ответов я бы подумал о переключении, если это необходимо).
1000 внешних серверов, которые отправляют информацию, часто запрашивают данные у приложения каждые 2 минуты.
Приложение является критически важным для данных, поскольку оно не может позволить себе отключиться. У меня есть часть приложения, отсортированная по HA (High Availability), но мне нужны предложения по HA для базы данных. Oracle не вариант.
Друг предложил синхронизировать SQLlite между серверами приложений, но для меня это звучит опасно. Я изучал установку базы данных MASTER-MASTER MySQL, но она выглядит проблематичной и, судя по комментариям пользователей, потенциально нестабильна.
Какие-либо предложения?
Должен работать на Linux, должен быть с открытым исходным кодом.
Мы без проблем используем репликацию MySQL master <-> master уже более 2 лет в производстве для критически важных баз данных. В нашей настройке базы данных реплицируются по нестабильному невыделенному каналу. Настройка проста, а аварийное восстановление - без проблем. Я рекомендую это.
Раньше мы использовали репликацию MySQL master-> slave по выделенному каналу с контрольным сигналом для аварийного переключения, что является жизнеспособным вариантом, но обе машины должны находиться за одним и тем же маршрутизатором.
Кластер MySQL может быть?
В любом случае, да, забудьте о SQLite. Это неправильное решение вашей проблемы.
Mysql Cluster кажется хорошим решением для вас, однако зависит от размера базы данных, потому что на данный момент все данные должны помещаться в память при использовании Mysql Cluster.
MySQL Cluster может показаться очевидным выбором, поскольку он может поддерживать 5 9s HA, но не очень подходит для веб-приложений.
Оформление заказа Поиск решения для обеспечения высокой доступности MySQL - вопросы:
http://planet.mysql.com/entry/?id=21763
Учитывая ваши требования (писать), я бы посмотрел на Heartbeat / SAN на вашем месте.
Ура
Мастер <-> мастер репликации может быть сукой, если есть какие-либо расхождения в данных между двумя экземплярами. В нашем случае мы использовали master-master для ряда веб-приложений с изолированными серверами (два набора серверов, каждый с MySQL, Apache и Squid), а в нашем случае у нас есть сеансы таблица, которая получает большой трафик записи, что может привести к конфликтам записи (два набора данных вставляются в одну и ту же таблицу с одинаковым идентификатором).
В таких случаях вам понадобится некоторая сверхмощная логика на уровне приложения, чтобы убедиться, что записи правильно разделены, чтобы у вас никогда не было конфликтов записи. Ничего страшного, но ошибку репликации невозможно исправить без вмешательства системного администратора. В этом случае Master <-> Master может фактически привести к снижению доступности.
Чтобы не обескураживать вас, так как это, безусловно, хорошо работает, когда вы устраняете изгибы, однако есть некоторые досадные подводные камни.