
yopp
17.02.2017
12:24:15
нуууу не совсем
это скорее количество запросов на чтение в базу и что с ними происходит

Serhio
17.02.2017
12:24:41
инструмент для "навигации" по записям считанным)

yopp
17.02.2017
12:25:12
не только

Google

Alexey
17.02.2017
12:25:13
т. е. только для чтения используется?

yopp
17.02.2017
12:25:15
"insert calls" : 1257539,

Alexey
17.02.2017
12:26:57
а search calls - это как раз find и другие проходы по индексам?

yopp
17.02.2017
12:28:32
"search calls" : 616617,
"search calls" : 618801,
да, судя по всему так

Alexey
17.02.2017
12:29:07
ясно. А курсор ходит и по кешу и по диску или только по диску?

yopp
17.02.2017
12:30:51
курсор ходит по данным. в кеше или на диске они это не его дело

Alexey
17.02.2017
12:31:14
ага. так и думал...ясно спасибо

yopp
17.02.2017
12:31:41
но тут нужн понимать что wt.cursors это не прямой эквивалент mongodb курсору

Alexey
17.02.2017
12:32:12
ок, а какая между ними разница?

yopp
17.02.2017
12:32:52
монга поддерживает различные хранилища и wt только одно из (другое MMAPv1 и теперь ещё memory storage)
так совпало что в wt тоже есть курсоры, потому что wt это такой хитрый key-value сторадж
но они именно о деталях реализации конкретного хранилища, а не о деталях реализации на уровне монги

Google

yopp
17.02.2017
12:34:09
тоесть если ты сделал в монге find({a: 1}) это не значит что cursors изменятся на 1
оин могут изменится на любое произвольное число, в зависимости от стратегии которую выберет планировщик в хранилище

Alexey
17.02.2017
12:36:01
то есть, изменения курсора - это некая логическая операция, которая происходит при достижении N байт при чтиении/записи?
N зависит от некого планировщика?

yopp
17.02.2017
12:36:38
нет, это логическая опреация связанная с детялями реализации того как хранилище данные возвращает в монгу
монга, с 2.8 кажется, это просто набор универсальных API для разных хранилищ, которые позволяют хранить произвольные документы
в bson

Alexey
17.02.2017
12:38:26
ну сейчас wt же везде используется

yopp
17.02.2017
12:39:12
это не отменяет того факта что у монги есть свои курсоры, а у хранилища _могут быть_ свои
в MMAPv1 нет курсоров
там вообще ничего нет, тлен и mmap(1)
монговские курсоры тебе покажет serverStatus.metrics.cursor и частично opcounters

Alexey
17.02.2017
12:42:12
хорошо, спасибо.
А вот еще несколько вопросов философско-концептуальных:
1. В бест практисах используют в репликасете 4 сервера. мастер, 2реплика и хайден реплика. Зачем она нужна? чтобы просто не учавствовать в голосовании и для бекапа?


yopp
17.02.2017
12:42:45
hidden реплика по тому и hidden что в неё порядочные клиенты ходить не будут, потому что они делают вид что её нет
а значит её можно воткнуть на медленные диски (главное чтоб на репликацию хватало) и дать памяти по минимуму (главное чтоб на репликацию хватало) и дёргать её как хочешь
про три ноды (в монге любая нода в любой момент времени может стать primary и потом slave и потом опять primary)
на самом деле об этом более-менее в доке написано, но это такое количество нод, которые уже обеспечивают более-менее нормальную отказоустойчивость вне зависимости от хотелок пользователей
тоесть если кто-то там делает запросы с readPref: secondary, если у нас одна нода подохла или мы её вывели из эксплуатации на облуживание, у нас всё ещё остаётся один secondary
на двух нодах будет уже сложнее. плюс нужен будет арбитр
потому что если нода осталась одна, она не станет мастером

Google

yopp
17.02.2017
12:46:50
она будет плакать и считать себя slave
потому что выборы из одного человека, где он-же и кандидат и голосующий — шизофрения и в субд :)

Alexey
17.02.2017
12:47:56
ок. А как обычно принято бекапить хайден реплику? монгодампом или остановкой демона и рсинком файлов?
и что тогда с оплогом происходит? сколько можно демона выключенным держать?

yopp
17.02.2017
12:49:44
оплог это capped коллекция, что с ним может происходить? :)
правильно: у него с конца выпадают самые старые данные (FIFO)
тоесть демона можно держать выключеным ровно столько, сколько времени покрывает сейчас оплог
бекапить лучше всего через снепшоты фс
ежечасно. прореживая суточно
и еженедельно делать дамп
нужно не забывать что если у тебя sharded cluster то там особая процедура

Alexey
17.02.2017
12:52:50
пока у меня репликасет, но скоро будет шаред кластер

yopp
17.02.2017
12:53:14
главное что нужно сделать с бекапами: постоянно их проверять
идеально заливая ежедневно на стейджинг
чтоб ты всегда знал что у тебя бекапы работают
иначе будет как у гитлаба

Alexey
17.02.2017
12:54:18
стейджинг - это что? еще одна версия кластера?
что-то типа базы, в которую все восстанавливается из бекапа?

yopp
17.02.2017
12:58:21
это среда для разработчиков, где они всё тестируют

Alexey
17.02.2017
12:59:39
ок. А что с выбором ФС для монги? в доках читал, что ext4 Не рекомендуется...все ставят xfs?

Google

yopp
17.02.2017
13:02:25
выбирай что хочешь! :)
история с форсом xfs недавно появилась
на самом деле нужно мерять и смотреть. если у тебя объём данных не очень большой, бери что удобнее
хоть zfs

Alexey
17.02.2017
13:07:29
кстати по объемам... вопрос не совсем корректный, но все же...очень большие репликасеты это сотни гигабайт, терабайты или десятки терабайт? при более менее стандартном железе с 10 рейдом и памятью под сотку? сколько монга прожевать может с дефолтными настройками, скажем?

yopp
17.02.2017
13:17:17
от данных зависит
и от дисков
и от памяти :)
от железа короче.
но в целом, пока все индексы целиком взалят в память и ещё остаётся место под данные, с монгой будет всё хорошо
так-то у монги нет ручек которые имеют какие-то волшебные свойства
там есть несколько ручек которые можно покрутить в очень редких случаях, но в остальном настраивать в монге нечего :)
нужно данные правильно дизайнить
тюнить скорее придётся вне монги: сеть там и всё такое

Alexey
17.02.2017
13:20:33
по сети нормально. но очень много мелких документов по 1к. милиарды вощем
про бекап еще. если я забекапил каталог с монгой на хайден реплике, то этого же будет достаточно для разворота а репликасет, правильно я понимаю?

yopp
17.02.2017
13:22:52
нет
точнее как, да
но нет :)
лучше разворачивать всегда из дампа

Google

Alexey
17.02.2017
13:23:10
так)

yopp
17.02.2017
13:23:55
потому что хоть монга и гарантирует консистентность на уровне фс, лушче всё-же лочить монгу на время архивации каталога с монгой

Alexey
17.02.2017
13:24:27
лучше уж тогда наверно вобще погасить демон?

yopp
17.02.2017
13:24:46
в доке всё есть
монга вообще очень простая в экспулатации если внимательно читать документацию :)
https://docs.mongodb.com/manual/core/backups/

Alexey
17.02.2017
13:28:15
еще вопрос по шардированию. Сейчас реплика сет, коллекции сотни гигов. Планирую переделать в шард. При включении шардирования в коллекции, база лочится автоматически на время преобразования и т. п?

yopp
17.02.2017
13:28:51
может не получится просто так взять и зашардить коллекцию
существующую

Alexey
17.02.2017
13:29:13
прикольно) а почему?

yopp
17.02.2017
13:30:05
https://docs.mongodb.com/manual/tutorial/convert-replica-set-to-replicated-shard-cluster/#shard-a-collection

Sergey
17.02.2017
13:30:41
Дамп на больших базах может никогда не закончиться)
Точнее как... не закончиться до начала следующего

yopp
17.02.2017
13:32:23
можно fsynclock
но просто так «взял и скопировал» не выйдет
точнее как, выйдет конечно, но не факт что надёжно
не могу сходу найти
была короч какая-то засада с шардированием существующей большой коллекции