
yopp
31.05.2017
12:20:32
3.4.4 пробовали? Когда началось? Что в конфигах?

Artem
31.05.2017
12:23:28
это происходит прямо сейчас и уже во второй раз
в прошлый раз рестарт привел к смерти всей реплики, поэтому еще раз мы пытаться не будем :)
реплика сет, да, не шард
3.4.4 не пробовали,
в конфигах более-менее дефолт, на что особо обратить внимание можно?

yopp
31.05.2017
12:23:54
На всех репликах такое или только на одной?

Aydar
31.05.2017
12:24:00
Где такое говорится?
https://docs.mongodb.com/v3.4/faq/storage/#how-frequently-does-wiredtiger-write-to-disk

Google

yopp
31.05.2017
12:24:01
К смерти в каком виде?
У пользователя монги точно есть право на удаление файлов? И всё-таки расскажи как именно оно умерло
https://jira.mongodb.org/browse/WT-2264
Закрыто в 3.4
И даже бекпорт в 3.2.5
/me ставит на проблему с диском или правами

георгий
31.05.2017
12:48:25
/me
наследие чятиков?

yopp
31.05.2017
12:49:46
Ирц же

Artem
31.05.2017
12:51:14

Google

yopp
31.05.2017
12:53:25
Сейчас сколько файлов в папке с журналом?

Artem
31.05.2017
12:54:00
1114 файлов

yopp
31.05.2017
12:54:06
Что за дисковое хранилище используется?
1114 файлов
Исходя из того что монга вроде как всего 28к файлов создавала, с виду все нормально.

Artem
31.05.2017
12:55:34

yopp
31.05.2017
12:56:34
Эм.
Журнал на диск сливается не реже чем раз в минуту.
Монга не накатывает весь журнал при остановке, только последний чекпоинт
А вот при старте она весь журнал проигрывает.
В serverStatus.wiredTiger.transaction что?
Как себя репликация чувствует?
И вообще как реплика выглядит? Сколько серверов? Какой прирост оплога?

Artem
31.05.2017
13:05:52
не, ситуация только на primary
репликация вообще в порядке
в реплике 3 сервера

yopp
31.05.2017
13:29:05
Если выбрать другую ноду как праймари, проблема на ней воспроизводится?

Denis
31.05.2017
13:40:25
/me

Max
31.05.2017
13:41:44
о, я тогда сюда вопросы свои зафорваржу про диски и нагрузку
Монго-гуру, подскажите, пожалуйста - как можно разнести IO нагрузку на базу между различными дисками?
монга 3.4.4 , WiredTiger. база одна.
Может можно журнал на отдельное устройство вытащить?
а то есть пачка неиспользуемых дисков. в рейд их не втулить (точнее рейд там уже есть), надо бы на отдельное устройство.

Google

Max
31.05.2017
13:42:06
объединение дисков на уровне OS пока отложено на последний момент. Было больше интересно, можно ли какую-то логическую единицу в монге вытащить отдельно.
К примеру - каждая база в своей директории, и эту директорию можно втулить на конкретный диск.
но база одна :)
думалось, может можно отщепить какие-то логические модули в отдельную директорию и вынести отдельно.
Пока внутри директории монги есть 2 директории - journal, размером в неполный гиг, и diagnostic.data, неполных 200 метров.
Вот и думаю
можно ли их (и есть ли смысл) вытаскивать отдельно
в журнал должен активно write идти, но файлы преалокейчены. если смотреть чексамы - меняется только 1 файл
потому и вопрос - стоит ли овчинка выделки

yopp
31.05.2017
13:44:13
`storage.directoryPerDB`

Max
31.05.2017
13:44:26
или admin / local есть смысл выносить?

yopp
31.05.2017
13:44:59
Local да, туда пишется оплог
Увеличить можно просто сделав симлмнки на нужные коллекции
Или индексы
Посмотреть какие коллекции/индексы наиболее нагруженные и поделить их между дисками.

Max
31.05.2017
13:46:48
чтото про симлинки я не подумал.
да, есть коллекции, в которые льётся 90% запросов

Алексей
31.05.2017
13:46:49
бекапить то потом всё это дело как ?

yopp
31.05.2017
13:47:05

Алексей
31.05.2017
13:47:11
раскидали по дискам потеряли снапшоты

yopp
31.05.2017
13:47:19
Нет.

Max
31.05.2017
13:48:28
тушить все надо будет и делать снапшот единовременно, я так понимаю.
на данный момент так бекап и работает - тушится нода в репликасете и делается ее снапшот.
корявенько, но быстро и не критично

Алексей
31.05.2017
13:51:12

yopp
31.05.2017
13:52:12

Google

yopp
31.05.2017
14:00:18
Делаешь stats на всех коллекциях и индексах во всех базах, записываешься имена файлов. Выключаешь, делаешь резервную копию dbPath, меняешь опцию и раскладываешь файлы по директориям. Запускаешь монгу и смотришь что произошло.
Можно просто снепшот на другой тачке развернуть и там попробовать
Можно вообще на тестовом столе собрать и проверить поведение

Алексей
31.05.2017
14:02:06
именно.
именно fsync.

yopp
31.05.2017
14:02:50
Ну. В чём проблема?

Max
31.05.2017
14:02:53
Спасибо!
буду пробовать

yopp
31.05.2017
14:03:05
Он и так нужен если журналы вынесены.
Учитывая что бекапы надо делать с hidden нод, то можно даже монгу потушить. :)
Что даст 100% гарантию консистености хранилища.

Max
31.05.2017
14:33:31
Хидден ноды пока нет, потому пока просто с реплики рабочей делать вынужден
Changed in version 3.0: To change the —directoryperdb option for existing deployments, you must restart the mongod instances with the new —directoryperdb value and a new data directory (--dbpath <new path>), and then repopulate the data.
Какая печаль.
Поделитесь еще своими бест практисами по выбору размера оплога, плиз?
кто какой срок ставит? и как его высчитывает?

yopp
31.05.2017
15:01:07
Его должно хватать на время initial sync как минимум
(как следствие должен быть запас на «всё пошло не так»)

Max
31.05.2017
15:04:02
да, именно с этой проблемой я и столкнулся.
там дефолтные 50 гиг стоят, буду раздвигать
дня на 4 надо будет минимум ставить - с одной стороны
с другой - бекапы суточные, и initial sync с нуля делать смысла нет.
но если переезжать на directoryPerDB - как раз нужен этот initial sync.
В сомнениях, в общем.

yopp
31.05.2017
15:04:38
раздвигать надо аккуратно
плюс надо понимать что его мгновенно больше не станет :)

Google

Max
31.05.2017
15:05:15
на что обратить особенное внимание?
в доке процесс описан, буду делать на тестовом стенде, но на стенде данных в разы меньше

yopp
31.05.2017
15:05:57
ну да :)
oplog это тупо capped коллекция
oplog size это capped maxsize, который расчитывается при инициализации local базы

Max
31.05.2017
15:06:54
да, понимаю - ужесталкивались с тем, что грохнули данные в базе
потом оплог сдампили и выковыривали оттуда нужное :)

yopp
31.05.2017
15:07:06
заведите delayed member на этот случай

Max
31.05.2017
15:07:38
Хорошая идея, всуну в беклог,спасибо!

yopp
31.05.2017
15:09:06
потому что иначе может быть очень больно

Max
31.05.2017
15:09:21

yopp
31.05.2017
15:10:16
да ладно, это просто время
если оплога остаётся на полчаса, то любой даунтайм больше получаса и тебе надо переливать всё сначала
по этому лучше сначала поднять оплог по очереди на каждом secondary, дождаться пока его не накопиться нужное количество и потом уже когда на всех seconday нужное количество оплога, менять на primary
я не помню, есть ли там процедура без потери оплога

Max
31.05.2017
15:12:35
да тут получилось все как обычно.
- сначала я с этим не шарил
- потом проверил - вроде норм, 50 гигов хватало на 2 дня и initial sync проходил нормально
- потом все "внезапно выросло и мы тут чуть-чуть убили реплику, потом просто поживем на мастере"
- sync зафейлился и вообще стало
DSPRSv01:SECONDARY> rs.printReplicationInfo()
configured oplog size: 51200MB
log length start to end: 26882secs (7.47hrs)

yopp
31.05.2017
15:12:37
но наверное можно просто дампнуть коллекцию и заресторить
кек
7 гигов в час