Восстановление узла Percona XtraDB Cluster

Я изучал кластеризацию XtraDB и создал среду PoC на Openstack, используя 4 экземпляра, которые упали во время моего тестирования на устойчивость.

В соответствии с документацией pxc: http://www.percona.com/doc/percona-xtradb-cluster/howtos/virt_sandbox.html которая охватывает установку с 3 узлами, которую я выбрал для 4-го.

  1. Первоначальная настройка завершилась тестами на загрузку данных, причем все узлы обновлялись синхронно с использованием тестового sql-файла 1.6 ГБ для загрузки базы данных.
  2. Отказ и восстановление узлов начались, этот тест повлек за собой остановку службы mysql на узле, создание и последующее удаление базы данных для проверки репликации выживших узлов, а также запуск сбойного узла для повторной синхронизации.
    1. Это работало нормально для узлов 4,3,2.
    2. Узел 1, который в соответствии с документами pxc является, по сути, контроллером, не воссоединится с кластером.

Итак, мои вопросы таковы:

  1. Как вернуть узел контроллера в сервис, если у выживших узлов с тех пор были записаны данные
  2. Используя 4 узла в качестве ссылки, есть ли способ удалить эту единственную точку отказа в node1? (если оставшийся в живых узел перезапускается с контроллером (узел 1), выключенным / не синхронизированным, этот узел также выйдет из строя).

3 ответа

Исходя из ваших симптомов на первом узле, вы используете

wsrep_cluster_address= Gcomm:// 

в вашем файле конфигурации, что означает, что узел запустит новый кластер. Вы можете подтвердить это с помощью переменной wsrep_cluster_size, равной 1 на узле 1 и 3 на остальных. Если вы хотите присоединить узел 1 к уже существующему кластеру, вы должны указать

wsrep_cluster_address=gcomm://(ip работающего узла здесь)

В этом случае узел 1 снова присоединится к кластеру.

Некоторые дополнительные мысли:

  • Из-за механизма кворума в PXC (Percona Xtradb Cluster) не рекомендуется запускать его на 4 узлах. Рекомендуется использовать нечетное количество узлов, поэтому в случае разделения сети одна часть разделенного кластера будет иметь большинство.

  • Вместо wsrep_cluster_address вы можете использовать wsrep_urls в разделе [mysqld_safe].

Отказ от ответственности: я работаю на Percona.

Дальнейшие исследования этой проблемы, похоже, являются жизнеспособным методом (оставив этот ответ на данный момент неприемлемым, если кто-то ответит с лучшей настройкой):

  1. Круговая установка
    1. В документации по pxc все узлы синхронизируются с узлом 1
    2. остановка узла 2, повторение к узлу 3, начало узла 2
    3. остановка узла 3, повторение к узлу 4, начало узла 3
    4. остановка узла 1, повторение к узлу 2, начало узла 1

Эта настройка, по-видимому, предотвращает потерю любого узла, по крайней мере, при отключении, а также при восстановлении синхронизации узла без проблем.

Если Mysql не запускается, и причина в поврежденной таблице БД.

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

он копирует файлы из $MYSQLHOME, которые находятся в базе данных через nc.

мы использовали scp, чтобы переместить хорошие файлы на место, а затем снова включили синхронизацию, запустив mysql плохого сервера.

Другие вопросы по тегам