mysql cluster
Download
Skip this Video
Download Presentation
Архитектура MySQL Cluster

Loading in 2 Seconds...

play fullscreen
1 / 23

Архитектура MySQL Cluster - PowerPoint PPT Presentation


  • 224 Views
  • Uploaded on

Архитектура MySQL Cluster. Григорий Рубцов MySQL AB / Sun Microsystems. План доклада. Архитектура Отказоустойчивость Производительность плюсы минусы Практика. Приобретение MySQL компанией Sun. Сделка завершилась в 2008 году

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Архитектура MySQL Cluster' - jackie


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
mysql cluster

Архитектура MySQL Cluster

Григорий Рубцов

MySQL AB / Sun Microsystems

slide2
План доклада
  • Архитектура
  • Отказоустойчивость
  • Производительность
    • плюсы
    • минусы
  • Практика
mysql sun
Приобретение MySQL компанией Sun

Сделка завершилась в 2008 году

Sun и MySQL совместными усилиями сделают продукты и услуги ближе к заказчику.

Корпоративная поддержка 24x7x365 географически ближе

Больше поддерживаемых платформ

Профессиональные услуги и обучение в России

Обе компании твердо стоят на позициях Open Source

Миссия Sun/MySQL:Сделать доступную каждому высококлассную СУБД.

slide6
Особенности архитектуры:
  • Избыточность
    • Данных NoOfReplicas (min: 2)
    • SQL-нод
    • mgm-нод (управляющих нод)
  • Разбиение данных
    • число долей равно числу дата-нод
    • критерий разбиения – первичный хэш-индекс таблицы
  • “Shared nothing”, общая только сеть
  • Транзакционность ( READ_COMMITTED )
slide7
Лицензия
  • Две формы издания
    • Community, 100% GPL
    • Enterprise, коммерческий продукт с поддержкой (MySQL Cluster Carrier Grade Edition)
  • Исходный код общий
  • MySQL Cluster 6.2 можно скачать, 6.2 - это версия ndb (не связана с MySQL 6)
ndb api
Открытый NDB API
  • Позволяет обойти SQL-сервер или самому им быть
  • http://dev.mysql.com/doc/ndbapi/en/
ndb api1
NDB API (пример)

NdbOperation *myOperation

= myTransaction->getNdbOperation(myTable);

if (myOperation == NULL)

APIERROR(myTransaction->getNdbError());

myOperation->insertTuple();

myOperation->equal("ATTR1", i);

myOperation->setValue("ATTR2", i);

if (myTransaction->execute( NdbTransaction::Commit ) == -1) APIERROR(myTransaction->getNdbError());

slide10
Хранение данных
  • Фрагментация по первичному хэш-индексу
  • Хранение в памяти и на диске (с версии 5.1)
  • B-tree индексы – отдельные таблицы – также фрагментируются
  • До 48 дата-нод
  • Сеть должна быть быстрой (гигабит)
  • Все соединения между нодами без авторизации и без шифрования
slide12
Отказоустойчивость
  • Возможность резервирования всего
    • отсутствие единой точки отказа
  • Не забудьте про резервирование сети
    • два свича, по 2 сетевых карты
  • Географическая распределенность:
    • репликация кластеров
  • Автоматическое восстановление дата-ноды
slide14
Арбитраж
  • Фрагментация кластера может привести к двум потенциально работоспособным частям.
  • «Split brain» - это плохо!
  • Для этого есть арбитр (mgm или sql-нода)
    • выборы арбитра только после того, как все алгоритмы арбитража отработали
    • ArbitratorRank=0 (never), 1 (high), 2 (low)
    • при равном ArbitrationRank, min(nodeid)
slide15
Алгоритм арбитража
  • Вижу ли я по крайней мере одну дата-ноду из каждой группы?
    • нет – выключиться
    • да – продолжить алгоритм
  • Есть ли среди отключившихся дата-нод по одной ноде из каждой группы?
    • нет – продолжить работу (вторая часть выключится по правилу 1)
    • да – продолжить алгоритм.
  • Спросить арбитра.
    • арбитр недоступен – выключиться.
    • арбитр доступен, узнать присутствую ли я в текущей конфигурации?
      • нет – выключиться
      • да – продолжить работу
slide16
Производительность
  • Дата-нода осуществляет выборку данных и поиск по btree-индексу в своем фрагменте
  • Условие WHEREможет выполняться на дата-ноде
  • SET engine_condition_pushdown=1;
    • только сравнения с константами
      • age>27 OK
      • (age – 27) > 0 плохо
  • Используйте EXPLAIN EXTENDED + SHOW WARNINGS
slide17
Производительность
  • Выполняются на SQL-ноде:
    • WHERE, когда не работает pushdown
    • ORDER BY
    • JOIN
    • Подзапросы
  • Простые запросы – быстро и эффективно
  • Не все составные запросы одинаково полезны
  • Нельзя вслепую заменить MyISAM на NDB
slide18
Практика применения
  • Alcatel-Lucent
    • 60млн абонентов, аутентификация, управление данными
  • neckermann.de
    • 500к уникальных посетителей в день
  • Paggo
    • 25к транзакций в день, 25млн$/мес, мобильные платежи
  • M1
    • 1млн абонентов мобильной связи, Сингапур
  • здесь могла быть ваша реклама
university of california berkeley
Почта University of California Berkeley
  • 70,000 аккаунтов в 39 доменах
  • 20,000 рассылок, 1.1 миллион подписчиков
  • 4 миллиона сообщений в день
  • 1 миллион принятых сообщений в день
  • 120 поступающих сообщений в секунду
  • Акаунты, рассылки, greylisting и др.
  • http://www.mysql.com/customers/customer.php?id=497
berkeley
Конфигурация (Berkeley)
  • 10 машин с Cyrus (4 Гб ОЗУ)
  • На этих же машинах дата-ноды
    • данные в памяти с бэкапом на диск
  • sql-ноды на других машинах

MYSQL_ACCOUNT_QUERY = ${lookup mysql \

{select a.* from calmail.account a, \

calmail.domain d \ where \ a.domain_id=d.id and \

a.localpart=\'${quote_mysql:$local_part}\' and \

d.name=\'${quote_mysql:$domain}\' and\

a.state=\'active\';}}

cyrus: verify = false driver = manualroute transport = cyrus_lmtp route_data = ${extract{host}{MYSQL_ACCOUNT_QUERY}{$value}fail}

berkeley1
Конфигурация кластера (Berkeley)

[mysqld(API)] 15 node(s)

id=21 @192.168.1.15 (Version: 5.0.30)

id=22 @192.168.1.70 (Version: 5.0.30)

id=23 @192.168.1.20 (Version: 5.0.30)

id=24 @192.168.1.65 (Version: 5.0.30)

id=25 @192.168.1.75 (Version: 5.0.30)

id=26 @192.168.1.85 (Version: 5.0.30)

id=31 @192.168.2.20 (Version: 5.0.30)

id=32 @192.168.2.22 (Version: 5.0.30)

id=33 @192.168.2.24 (Version: 5.0.30)

id=34 @192.168.2.29 (Version: 5.0.30)

id=37 @192.168.1.93 (Version: 5.0.30)

id=39 @192.168.1.80 (Version: 5.0.30)

id=61 @192.168.2.10 (Version: 5.0.30)

id=62 @192.168.2.12 (Version: 5.0.30)

id=63 @192.168.2.14 (Version: 5.0.30)

ndb_mgm> show

Connected to Management Server at: 192.168.1.15:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 10 node(s)

id=1 @192.168.3.1 (Version: 5.0.30, Nodegroup: 0)

id=2 @192.168.3.2 (Version: 5.0.30, Nodegroup: 0)

id=3 @192.168.3.3 (Version: 5.0.30, Nodegroup: 1)

id=4 @192.168.3.4 (Version: 5.0.30, Nodegroup: 1, Master)

id=5 @192.168.3.5 (Version: 5.0.30, Nodegroup: 2)

id=6 @192.168.3.6 (Version: 5.0.30, Nodegroup: 2)

id=7 @192.168.3.7 (Version: 5.0.30, Nodegroup: 3)

id=8 @192.168.3.8 (Version: 5.0.30, Nodegroup: 3)

id=9 @192.168.3.9 (Version: 5.0.30, Nodegroup: 4)

id=10 @192.168.3.10 (Version: 5.0.30, Nodegroup: 4)

[ndb_mgmd(MGM)] 2 node(s)

id=41 @192.168.1.15 (Version: 5.0.30)

id=42 @192.168.1.70 (Version: 5.0.30)

berkeley2
Особенности (Berkeley)
  • set ipn = inet_aton(in_ip_addr);
    • 4 байта, а не 15
  • не используем блобы
    • они приводят к неявному созданию скрытой вспомогательной таблицы
  • избегаем ENUM
    • изменение ENUM – ALTER TABLE, что приводит к простою
  • Не было незапланированного даунтайма за год работы
  • Может масштабироваться до нагрузок в 500 раз превышающих текущие
slide23
Заключение
  • Кластером нельзя забивать гвозди!
  • Пишите: [email protected],http://sqlinfo.ru/forum/
ad