Горизонтальное масштабирование...
TRANSCRIPT
![Page 1: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/1.jpg)
Войденко ЕкатеринаCистемный администратор
Горизонтальное масштабирование MySQL
3 декабря 2011 года,
Санкт-Петербург, Я.Субботник
![Page 2: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/2.jpg)
2
О чем мы с вами поговорим?
![Page 3: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/3.jpg)
О чем речь?
3
Нагрузка на базу?
Это сколько?
![Page 4: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/4.jpg)
О чем речь?
4
Нагрузка на базу?
● Неоптимизированные запросы● Неоптимизируемые запросы
● Требующие группировки● Большое количество параллельных
запросов
![Page 5: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/5.jpg)
О чем речь?
5
Что с архитектурой?
● Когда нам задумываться о том, какую схему использовать?
Понятное дело, что до запуска проекта
![Page 6: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/6.jpg)
О чем речь?
6
Нужно ли нам тюниться?
● Обстрел, смотрим во что мы упираемся
![Page 7: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/7.jpg)
7
Нагрузка на чтение
![Page 8: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/8.jpg)
Нагрузка на чтение
8
Организация репликации
Мастер
Реплики
![Page 9: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/9.jpg)
Нагрузка на чтение
9
Распределение запросов
INSERT INTO...INSERT INTOINSERT INTOINSERT INTOINSERT INTO
SELECT
● наше ПО● mysql-proxy (?)
![Page 10: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/10.jpg)
Нагрузка на чтение
10
Балансировка● IPVS● HAProxy● mysql-proxy Балансер
![Page 11: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/11.jpg)
11
Нагрузка на запись
![Page 12: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/12.jpg)
Нагрузка на запись
12
Методы решения
● Улучшение оборудования:Предупредите вашу бухгалтерию заранее ;-)
● Партиционирование:Выжмем все соки из нашего железа!
● Шардирование:Сначала порежем, а потом — выжмем!
![Page 13: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/13.jpg)
13
Партиционирование
![Page 14: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/14.jpg)
Партиционирование
14
Что это?
● Короткие индексы быстрее перестраивать
● Разделы разносим по дискам● Создаем подпартиции● И все это из коробки!
![Page 15: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/15.jpg)
Партиционирование
15
Как?
● Рассказать больше,
чем mysql.com у меня
все равно не выйдет
Поэтому пройдемся по основным параметрам :)
![Page 16: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/16.jpg)
Партиционирование
16
Hash/KEY
![Page 17: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/17.jpg)
Партиционирование
17
Range/LIST
Раздел 1
Раздел 2
![Page 18: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/18.jpg)
18
Шардирование
![Page 19: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/19.jpg)
Шардирование
19
Добавим серверов!
● Принципиально невозможно без изменения кода
● Позволяет практически неограниченно масштабироваться
● Практически невозможно сделать postfactum
![Page 20: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/20.jpg)
Шардирование
20
А для чего?
● Распределение нагрузки на запись● Когда «падает» один шард, мы либо
теряем часть информации на запись, либо пишем в соседний
![Page 21: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/21.jpg)
Шардирование
21
Способы шардирования
● Изначально задаем жесткое число шардов
● Сразу задаем большее количество шардов, чем необходимо
● Используем некоторую прослойку. Мета-базу
![Page 22: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/22.jpg)
Шардирование
22
Мета
![Page 23: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/23.jpg)
Шардирование
23
Выводы
● Если нет исходников, мы почти безоружны
● Если мы уже упираемся в нагрузку, нельзя очень быстро все изменить
● При этом плюсы весьма внушительны
![Page 24: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/24.jpg)
Вот и все
24
![Page 25: Горизонтальное масштабирование MySQLcache-mskstoredata07.cdn.yandex.net/download.yandex.ru/company… · Санкт-Петербург, Я.Субботник](https://reader033.vdocuments.mx/reader033/viewer/2022060300/5f0809437e708231d420027d/html5/thumbnails/25.jpg)
25
Вопросы?