Используя мощь кластеров в контексте баз данных? - PullRequest
1 голос
/ 12 сентября 2010

У меня 22 машинных кластера с общим монтированием NFS. На каждой машине я могу запустить новый экземпляр MySQL. Я закончил создание таблицы с примерно 71 миллионами записей и начал операцию ADD INDEX. Прошло более 12 часов, а операция продолжается. Итак, то, что я вошел на одну из моих других машин в кластере, запустил новый экземпляр на демоне MySQL на этой машине, используя:

mysqld_safe --user=username

А затем создал клиент MySQL на том же компьютере для подключения к базе данных. Проблема в том, что я использую точное выражение, которое я использовал для запуска клиента на первом компьютере:

mysql --socket=/homes/username/mysql/mysql/tmp/mysql.sock -u root -p

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

  1. Это даже правильный путь используя кластер? Или, если предположить, что передо мной стоит значительная задача интеллектуального анализа данных, как я могу настроить MySQL (без корневых привилегий в кластере, который есть), чтобы ускорить задачу?
  2. Оператор, который я использовал для подключения к mysql, использует тот же файл mysql.sock, что и первый компьютер. Каковы последствия этого? Я имею в виду, столкнусь ли я с какими-то странными ситуациями?
  3. Получу ли я прирост производительности или в итоге замедление операции индексации что происходит на другом машина

1 Ответ

3 голосов
/ 12 сентября 2010

Это не будет работать стабильно. Mysqld не создан для этого. Кроме того, издержки NFS не выгодны.

Возможно, вам нужно создать несколько ведомых экземпляров mysqld и распараллелить ваш клиентский доступ.

...