SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.11.2012 01:05:38

Бананище
Участник
Зарегистрирован: 11.01.2012
Сообщений: 14

Необходим совет по выбору технологии

Преамбула:
В общем, есть "вычислительный кластер", расположеный на кучке серверов, и исторически использующий один единственный сервер базы данных, без всяких репликаций. [s]Ещё и древний как г**но мамонта[/s]

В связи с повышением нагрузки, и переходом на какбе "иные" модели взаимодействия с клиентами - встал вопрос о том, что один сервер БД никуда не годится.

В общем - что должна представлять из себя новая система:
- Представлять из себя распределённую сетевую базу данных, с высокой доступностью из любой точки кластера. Т.е. имеющая более одной точки подключения, чтобы кхм... "сервисы" кластера - могли использовать ближайшую и наиболее доступную точку.
- Иметь высокую отказоустойчивость.
- Поддержка транзакций.
- Мгновенная доступность изменений из любой точки подключения в пределах кластера.
- Разумный минимум трудозатрат на обслуживание.

Что есть:
- Есть - ВСЁ, и фактор железа неактуален, при необходимости закупят что нужно, в том числе и на оптическую транковую локалку не пожалеют при случае.

Собственно, вопросы:
- Насколько подходит MySQL NDB-кластер для этих целей?
- Какие существуют альтернативные решения, на основе простой репликации и пр.
- Какие ещё существуют коммерческие и некоммерческие решения, подходящие для этих целей?

Отредактированно Бананище (05.11.2012 01:09:58)

Неактивен

 

#2 06.11.2012 11:22:28

inkognitotester
Участник
Зарегистрирован: 15.05.2012
Сообщений: 12

Re: Необходим совет по выбору технологии

Попробуйте Percona XtraDB Cluster.
http://www.percona.com/software/percona-xtradb-cluster

Неактивен

 

#3 06.11.2012 11:54:58

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Необходим совет по выбору технологии

Бананище написал:

1. Представлять из себя распределённую сетевую базу данных, с высокой доступностью из любой точки кластера. Т.е. имеющая более одной точки подключения, чтобы кхм... "сервисы" кластера - могли использовать ближайшую и наиболее доступную точку.
2. Иметь высокую отказоустойчивость.
3. Поддержка транзакций.
4. Мгновенная доступность изменений из любой точки подключения в пределах кластера.
5. Разумный минимум трудозатрат на обслуживание.

Отвечу по пунктам про MySQL NDB кластер.
1. да, система распределенная, но не в полной мере. Понятия "ближайшая" в нем нет - все ноды должны быть одинаково близко друг к другу. В NDB недопустимо разнесение кластера географически или по датацентрам (для такого потребуется репликация с кластера на кластер, в которой не будет синхронности). Вы можете обратиться к одной ноде с SQL-запросом, но получение данных из таблиц будут автоматически выполнять все ноды по кускам, а если JOIN, то это будет сопровождаться передачей всех данных с ноды на ноду.
2. да, это предусмотрено. Не любая конфигурация, но можно добиться высокого уровня отказоустойчивости, см. статью http://webew.ru/articles/252.webew
3. да
4. да
5. в пределах разумного. Придется писать скрипты, которые рестартят ноды, если они выпадают из кластера.

Тем не менее, это решение может вам не подойти по причине производительности. Из-за описанного алгоритма выполнения запросов, все запросы с JOIN будут работать медленно. Если у вас система типа форума со сложными запросами, то скорость работы упадет в десятки раз. Кластер оптимален для систем типа биллинга с выборкой всегда из одной таблицы и по первичному ключу (тут конкурируют hash-хранилища, но кластер дает отказоустойчивость и транзакционность).

Percona XtraDB Cluster по своему построению не содержит подобного регресса производительности, но я с ним еще не работал. Если получится использовать Percona XtraDB Cluster, напишите о своем опыте.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson