
[Anonymous]
09.12.2016
21:01:58
Просто я не нашёл в Google.
Решил вот спросить.
Ведь есть базы вроде RethinkDB с фишкой поступления апдейтов в реальном времени.
Ну или всякие Aerospike с фокусом на "ключ-значение онли".

Google

[Anonymous]
09.12.2016
21:02:36
Я подумал может быть если что-нибудь для запросов по дате и времени.


тнн Itjunky
09.12.2016
21:02:44
Так вот. Я поднял сервера на всех локациях доступных в амазоне. Устроил получасовой пинг всех на всех. И нарисовал карту скоростей между точками. Выделил 3 группы: Америка, Европа, Азия. В каждой по сумме пингов выявил сервер, который наиболее идеально минимальный пинг до всех других в своей группе имеет. И это будут у меня 3 мастера.
Итого схема будет такая. юзер А (из задачи сверху) будет направлен на сервер в Сау-Паулу, все нужные селекты он запросит с слейв-реплики находящейся там же, а когда ему нужно сделать запись, он её сделает на Мастер сервере в Ohio, на это уйдёт меньше секунды, потом эта инфа через ещё секунды-полторы окажется в Сингапуре, где стоит второй Мастер, и ещё через столько же в Сиднее, где стоит слейв реплика от Сингапурского мастера.
Ну круто, вопрос лишь в том, как часто тебе придётся перезаливать одного из мастеров и синкать с кластером =)


KOT
09.12.2016
21:03:34
И да, я когда задаю вопросы, я не стебусь и не троллю, я рад любым вариантом возможных ошибок, чтобы быть увереным, что продумал максимум возможных отказов системы.

тнн Itjunky
09.12.2016
21:06:27
СуБД же мускуль?

KOT
09.12.2016
21:07:01
Да. Планирую взять её форк - Перкону.

тнн Itjunky
09.12.2016
21:07:23
Ну так вот, практика показывает, что реплика постоянно разываливается
И что бы её восстановить, надо принести дамп с живого мастера и бинлоги актуальные

KOT
09.12.2016
21:10:14
Бинлоги держать недельные это раз. Раз в неделю полный дамп сливать, каждый день (думаю даже чаще) дамп дельты делать. В итоге мастер должен сдохнуть, не подниматься неделю, и потом его надо будет перезаливать.

тнн Itjunky
09.12.2016
21:11:15
Рушиться будет в случае с более чем двумя мастерами, думаю, чаще раза в сутки =)

KOT
09.12.2016
21:11:30
Так а причина разрушений какая?

тнн Itjunky
09.12.2016
21:11:54
Дело в том, что он ломается с дублируемыми ключами, в итоге надо его перезаливать полюбому
просто сказать, давай дальше синкайся, не выходит

Google

тнн Itjunky
09.12.2016
21:12:36
Это работает только если сам остановил синхронизацию, а если оно не верно синканулось и упало, то только перезаливка

KOT
09.12.2016
21:15:17
Ключи какого плана? Юники или ПК?

тнн Itjunky
09.12.2016
21:15:37
Уники, ага
Хотя, хз, давно это было. Может и праймари

KOT
09.12.2016
21:17:22
Этот момент я учитывал. Придётся разрабатывать логику базы без использования уников. А ПК только автоинкримененты

тнн Itjunky
09.12.2016
21:17:33
Возможно в 5.6 это сделали более стабильным, почитай форумы, но на 5.5 это был самый идиотский баг, который нифига не фиксился, видимо потому что у разрабов нет таких конфигов =)

KOT
09.12.2016
21:19:45
Так ПК же то же должны быть уникальными или я путаю?
В настройках есть 2 параметра.
1. Шаг автоинкреминента
2. Сдвиг автоинкреминента
ПК делаются только автоинкреминенты. У всех проставляется шаг в 20 единиц. А сдвиг у каждого свой. Тем самым первый сервак запишет первую вставку 1, вторую 21, а третий скажем 3, а потом 23, а потом 43. И они не будут пересекаться

тнн Itjunky
09.12.2016
21:20:36
Да, такой алгоритм, вероятно, решит эту проблему
Не проверял
Но что-то мне подсказывает, что тогда краши были не потому что в оба мастера пришла запись в одну и ту же единицу времени. А скорее что синк по бинлогам как-то не по плану прошёл

KOT
09.12.2016
21:31:57
Это как?
"Не по плану?"
Да и там нету синка полного, они асинхронные, то есть все немного местами отстают и это норма.

тнн Itjunky
09.12.2016
21:33:34
Ну ты в любом случае пробуй, это стоящий варик. В конце концов, можно и ансибл написать, который будет запускаться триггером в заббиксе после падения одного из мастеров =)

KOT
09.12.2016
21:35:59
Что такое "ансибл"?
С забиксом не знаком если что

Fike
09.12.2016
21:36:13
configuration manager

тнн Itjunky
09.12.2016
21:36:31
ansible скрипты для оркестрации серверами

Fike
09.12.2016
21:36:38
херня, которой ты говоришь "поставь мускул", "положи в /etc вот этот файл", "убей всех людей", а она это делает на серваках

Google

тнн Itjunky
09.12.2016
21:37:00
а заббикс очень удобная система мониторинга с довольно простым способом доавления собственных метрик

KOT
09.12.2016
21:39:10
Я планрую взять PMM, монитор от Перконы. Это одна из причин, почему я их решил попробовать изначально. Мне тут кстати, кто-то пару месяцев назад его посоветовал и понеслось. Там и самочувствие ОС и ДБ и даже разбор запросов.

тнн Itjunky
09.12.2016
21:42:38
Не пробовал. Мне обычно нужны весьма нестандартные метрики, а в заббиксе написал однострочник для консоли, сунул в конфиг агента, добавил в веб-морде айтем и наблюдай за графиком =)

Fike
09.12.2016
21:46:42
сраббикс срач го

тнн Itjunky
09.12.2016
21:48:16
Я тут ПРТГ увидел, довольно симпатичен, но по граффикам там нельзя в любое место ткнуть и любой масштаб сделать
А это ингода ооочень нужно

Dmitry
09.12.2016
21:51:04
Так что там секунда почти просто на коннект

KOT
09.12.2016
21:51:37

тнн Itjunky
09.12.2016
21:52:12
Можно ваще UDP херачить

KOT
09.12.2016
21:52:25
Зачем?

тнн Itjunky
09.12.2016
21:52:48
Что бы не ждать лишнее время на соединение и остальные формальности

Dmitry
09.12.2016
21:53:11

тнн Itjunky
09.12.2016
21:53:14
Но и валидация на уровне приложения тогда нужна, что пакет дошёл нормально и хватит его слать

KOT
09.12.2016
22:18:54

Fike
09.12.2016
22:48:37

KOT
10.12.2016
21:38:03
Кто там советовал похронить автоинкрименент?
и перейти к uuid для ПК?

Google

KOT
10.12.2016
21:39:01
http://kccoder.com/mysql/uuid-vs-int-insert-performance/

Sergey
10.12.2016
21:40:00
это из-за большого кол-ва перестроений индекса

KOT
10.12.2016
21:41:25
Ну да, похоже на то.

Sergey
10.12.2016
21:41:44
статья недавно была
как uuid и serial влияют на размер wal

KOT
10.12.2016
21:41:48
Но что-то мне подсказывает, что искать по чар64 тоже не фонтан
На размер чего?

Sergey
10.12.2016
21:42:10
write-ahead log
журнал транзакций базы

Admin
ERROR: S client not available

Sergey
10.12.2016
21:42:41
и там было объяснение что виной всему большое кол-во перестроений индекса, сейчас попробую найти
https://habrahabr.ru/post/316036/
там конечно пример про postgre
но думаю на всех базах похожая картина

KOT
10.12.2016
21:49:21

Daniel
10.12.2016
21:58:09
как можно сделать так, чтобы одно поле не могло бы быть больше другого? Я так понимаю только тригерами? (в сам запрос лезть не можем)
mysql

Sergey
10.12.2016
21:58:43
check constraint

Daniel
10.12.2016
21:58:49
не приходилось раньше с тригерами работать. задача вроде простая, а не заходит. check() бажный

Sergey
10.12.2016
22:00:28
вообще пишут лучше trigger

Google

Sergey
10.12.2016
22:00:39
для mysql

Daniel
10.12.2016
22:00:48
check не работает https://bugs.mysql.com/bug.php?id=3464
судя по всему не пофиксили до сих пор
если тригер, как тогда его запить? может кто помочь? два поля в одной таблице. field1 не может быть больше field2
BEGIN
IF NEW.field1 > NEW.field2 THEN
SET NEW.field1= NEW.field2;
END IF;
END
во, победил таки

Fike
10.12.2016
22:44:23
и если вы стремитесь за перформансом, то откуда у вас гениальная идея хранить uuid как char 36, если там тупо 16 байт?
домрощенные таланты блин
http://mysqlserverteam.com/storing-uuid-values-in-mysql-tables/ вот вам сам mysql советует хранить как 16 байт
не говоря уж о том, что восьмерку по этому поводу пинают, которую скоро должны выпустить https://dev.mysql.com/worklog/task/?id=8920

Akzhan
11.12.2016
10:10:03
кстати, в указанной @etkee статье и про индексирование есть - как сделать более последовательно растущий ряд )

KOT
11.12.2016
10:51:03
Было бы пофигу, если у меня 10% инсерты были и 90% селекты. У меня же 99% инсерты и 1% всё остальное.
А сколько слейв реплик может выдержать MySQL сервер?

nikoinlove
11.12.2016
13:39:39
пока не кончатся ресурсы

KOT
11.12.2016
13:40:43
То есть по сути, хоть тысячи?