Поэтому я хочу настроить сервер баз данных MySQL с высокой доступностью - таким образом, я приобрел себе два устройства (Banana Pi) и следовал руководству по установке программного обеспечения кластера MySQL. Я знаю, что созвездие только из двух устройств не совсем то, как кластер MySQL предназначен для использования, но для экономии затрат на оборудование, я получил только эти два устройства на данный момент.

Пока у меня есть следующая конфигурация (sqlnode1 и sqlnode2 - имена хостов устройств):

Узлы управления (ndb_mgmd):

  • sqlnode1 (идентификатор узла: 1)
  • sqlnode2 (идентификатор узла: 2)

Двигатели хранения (ndbd):

  • sqlnode1: настроен для использования узла управления на локальном хосте (идентификатор узла: 3)
  • sqlnode2: настроен для использования узла управления на локальном хосте (идентификатор узла: 4)

MySQL серверы (mysqld):

  • sqlnode1: настроен на использование обоих узлов ndbd (идентификатор узла: 5)
  • sqlnode2: настроен на использование обоих узлов ndbd (идентификатор узла: 6)

Так что в основном на каждом устройстве есть работающие ndb_mgmd, ndbd и mysqld.

Я хотел бы добиться, чтобы в случае сбоя одного из устройств другое устройство было полностью пригодным для использования (по некоторым очень конкретным причинам я не могу использовать простую репликацию базы данных здесь).

Как только я запускаю все компоненты, все работает нормально. Если я изменяю данные на одном хосте MySQL, другой немедленно применяет изменения (и наоборот).

Однако, если я отсоединяю кабель локальной сети одного из устройств, происходит следующее:

  • Отключение sqlnode2: функционирующий узел (sqlnode1) зависает в течение короткого периода времени, а затем продолжает работать должным образом (что в основном то, что я хочу)
  • Отключение sqlnode1: функционирующий узел (sqlnode2) зависает в течение короткого периода времени и затем вообще не работает - все запросы заканчиваются "отказом кластера 4009", и запросы только начинают работать снова после восстановления сетевого подключения узла, который имеет выпал После этого мониторинг демона ndb_mgmd показывает, что идентификатор узла 4 (ndbd на sqlnode2) был вынужден завершить работу.

Таким образом, вся система, кажется, зависит от sqlnode1, и мне действительно интересно, почему это происходит, потому что я подумал, что если компонент выпадает (и доступен другой того же типа), все продолжает работать.

Я следовал этому руководству для настройки двух разных узлов управления: http://www.clusterdb.com/mysql-cluster/deploying-mysql-cluster-over-multiple-hosts

Я что-то пропустил? Или, может быть, я неправильно понял, как работает кластеризация MySQL?

2 ответа2

0

Я решил свои проблемы, переключившись на кластер Galera MySQL, который, кажется, делает именно то, что мне нужно / нужно.

0

Я не использовал Mysql Cluster, но вы должны быть в состоянии сделать репликацию в нем, также кластер mysql делает намного больше, чем вы, вероятно, нуждаетесь, если все, что вам нужно, это репликация. Кластер MySQL имеет возможность маршрутизации на разные серверы SQL на лету, если один из них выходит из строя, тем самым уменьшая необходимость каждый раз вносить изменения в записи DNS имени хоста или настраивая временный сервер SQL или просто оставляя его мертвым до исправления. Он может делать и другие вещи. Поэтому, чтобы помочь вам, я предлагаю использовать версию сообщества MySQL как более удобную для вас, чем кластер mysql.

Возьмите выпуск MySQL Community Edition, это позволит вам иметь репликацию, таким образом, вы можете установить 1 сервер MySQL в качестве мастера, где все редактируется, а второй сервер MySQL является подчиненным, и он может просто получить то, что мастер имеет в настраиваемом интервале , Вы можете легко добавить больше рабов в будущем. Кроме того, ведомые не обязательно должны быть на разных машинах, вы можете запустить более 1 экземпляра MySQL. Однако это лишило бы цели репликацию и отказоустойчивость. Это, скорее всего, то, что вы ищете. Кроме того, на своем веб-сайте mysql есть руководство по настройке репликации для выпуска сообщества mysql.

MySQL Community Server

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .