Назад | Перейти на главную страницу

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

Я просматривал кластеризацию XtraDB и создал P.o.C. окружение на 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. Узел Node1, который, согласно документам pxc, по сути является контроллером, не присоединится к кластеру.

Итак, мои вопросы следующие:

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

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

wsrep_cluster_address=gcomm:// 

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

wsrep_cluster_address=gcomm://(ip of a running node here)

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

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

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

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

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

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

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

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

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

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

он обрабатывает файлы из $ MYSQLHOME, которые являются db, через nc.

мы использовали scp для перемещения хороших файлов на место, а затем снова запустили синхронизацию, запустив mysql на плохом сервере.