Восстановление узла Percona XtraDB Cluster
Я изучал кластеризацию XtraDB и создал среду PoC на Openstack, используя 4 экземпляра, которые упали во время моего тестирования на устойчивость.
В соответствии с документацией pxc: http://www.percona.com/doc/percona-xtradb-cluster/howtos/virt_sandbox.html которая охватывает установку с 3 узлами, которую я выбрал для 4-го.
- Первоначальная настройка завершилась тестами на загрузку данных, причем все узлы обновлялись синхронно с использованием тестового sql-файла 1.6 ГБ для загрузки базы данных.
- Отказ и восстановление узлов начались, этот тест повлек за собой остановку службы mysql на узле, создание и последующее удаление базы данных для проверки репликации выживших узлов, а также запуск сбойного узла для повторной синхронизации.
- Это работало нормально для узлов 4,3,2.
- Узел 1, который в соответствии с документами pxc является, по сути, контроллером, не воссоединится с кластером.
Итак, мои вопросы таковы:
- Как вернуть узел контроллера в сервис, если у выживших узлов с тех пор были записаны данные
- Используя 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.
Дальнейшие исследования этой проблемы, похоже, являются жизнеспособным методом (оставив этот ответ на данный момент неприемлемым, если кто-то ответит с лучшей настройкой):
- Круговая установка
- В документации по pxc все узлы синхронизируются с узлом 1
- остановка узла 2, повторение к узлу 3, начало узла 2
- остановка узла 3, повторение к узлу 4, начало узла 3
- остановка узла 1, повторение к узлу 2, начало узла 1
Эта настройка, по-видимому, предотвращает потерю любого узла, по крайней мере, при отключении, а также при восстановлении синхронизации узла без проблем.
Если Mysql не запускается, и причина в поврежденной таблице БД.
реплицируйте то, что делает сервер, и получите хорошую копию с остановленного сервера для клиентских баз данных.
он копирует файлы из $MYSQLHOME, которые находятся в базе данных через nc.
мы использовали scp, чтобы переместить хорошие файлы на место, а затем снова включили синхронизацию, запустив mysql плохого сервера.