D
/me
Max
о, я тогда сюда вопросы свои зафорваржу про диски и нагрузку
Max
Монго-гуру, подскажите, пожалуйста - как можно разнести IO нагрузку на базу между различными дисками? монга 3.4.4 , WiredTiger. база одна. Может можно журнал на отдельное устройство вытащить?
Max
а то есть пачка неиспользуемых дисков. в рейд их не втулить (точнее рейд там уже есть), надо бы на отдельное устройство.
Max
объединение дисков на уровне OS пока отложено на последний момент. Было больше интересно, можно ли какую-то логическую единицу в монге вытащить отдельно. К примеру - каждая база в своей директории, и эту директорию можно втулить на конкретный диск. но база одна :) думалось, может можно отщепить какие-то логические модули в отдельную директорию и вынести отдельно. Пока внутри директории монги есть 2 директории - journal, размером в неполный гиг, и diagnostic.data, неполных 200 метров. Вот и думаю можно ли их (и есть ли смысл) вытаскивать отдельно
Max
в журнал должен активно write идти, но файлы преалокейчены. если смотреть чексамы - меняется только 1 файл потому и вопрос - стоит ли овчинка выделки
yopp
`storage.directoryPerDB`
Max
`storage.directoryPerDB`
База одна
Max
или admin / local есть смысл выносить?
yopp
Local да, туда пишется оплог
yopp
Увеличить можно просто сделав симлмнки на нужные коллекции
yopp
Или индексы
yopp
Посмотреть какие коллекции/индексы наиболее нагруженные и поделить их между дисками.
Max
чтото про симлинки я не подумал. да, есть коллекции, в которые льётся 90% запросов
Aleksey
бекапить то потом всё это дело как ?
Aleksey
раскидали по дискам потеряли снапшоты
yopp
Нет.
Max
тушить все надо будет и делать снапшот единовременно, я так понимаю.
Max
на данный момент так бекап и работает - тушится нода в репликасете и делается ее снапшот. корявенько, но быстро и не критично
Max
Local да, туда пишется оплог
а на живой системе так можно делать? или придется ресинкаться?
Aleksey
Нет.
пояснения будут :) ?
yopp
пояснения будут :) ?
Доку про снепшоты почитай внимательно, там про это написано.
yopp
Делаешь stats на всех коллекциях и индексах во всех базах, записываешься имена файлов. Выключаешь, делаешь резервную копию dbPath, меняешь опцию и раскладываешь файлы по директориям. Запускаешь монгу и смотришь что произошло.
yopp
Можно просто снепшот на другой тачке развернуть и там попробовать
yopp
Можно вообще на тестовом столе собрать и проверить поведение
Aleksey
именно.
Aleksey
именно fsync.
yopp
Ну. В чём проблема?
Max
Спасибо!
Max
буду пробовать
yopp
Он и так нужен если журналы вынесены.
yopp
Учитывая что бекапы надо делать с hidden нод, то можно даже монгу потушить. :)
yopp
Что даст 100% гарантию консистености хранилища.
Max
Хидден ноды пока нет, потому пока просто с реплики рабочей делать вынужден
Max
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. Какая печаль.
Max
Поделитесь еще своими бест практисами по выбору размера оплога, плиз? кто какой срок ставит? и как его высчитывает?
yopp
Его должно хватать на время initial sync как минимум
yopp
(как следствие должен быть запас на «всё пошло не так»)
Max
да, именно с этой проблемой я и столкнулся. там дефолтные 50 гиг стоят, буду раздвигать дня на 4 надо будет минимум ставить - с одной стороны с другой - бекапы суточные, и initial sync с нуля делать смысла нет. но если переезжать на directoryPerDB - как раз нужен этот initial sync. В сомнениях, в общем.
yopp
раздвигать надо аккуратно
yopp
плюс надо понимать что его мгновенно больше не станет :)
Max
на что обратить особенное внимание? в доке процесс описан, буду делать на тестовом стенде, но на стенде данных в разы меньше
Max
плюс надо понимать что его мгновенно больше не станет :)
я так понимаю, что если прикинуть размер до 4-5 дней, то и ждать надо будет эти 4-5 дней, пока этот лог надуется? :)
yopp
ну да :)
yopp
oplog это тупо capped коллекция
yopp
oplog size это capped maxsize, который расчитывается при инициализации local базы
Max
да, понимаю - ужесталкивались с тем, что грохнули данные в базе потом оплог сдампили и выковыривали оттуда нужное :)
yopp
заведите delayed member на этот случай
Max
Хорошая идея, всуну в беклог,спасибо!
yopp
потому что иначе может быть очень больно
Max
потому что иначе может быть очень больно
столько вазелина у меня нет
yopp
да ладно, это просто время
yopp
если оплога остаётся на полчаса, то любой даунтайм больше получаса и тебе надо переливать всё сначала
yopp
по этому лучше сначала поднять оплог по очереди на каждом secondary, дождаться пока его не накопиться нужное количество и потом уже когда на всех seconday нужное количество оплога, менять на primary
yopp
я не помню, есть ли там процедура без потери оплога
Max
да тут получилось все как обычно. - сначала я с этим не шарил - потом проверил - вроде норм, 50 гигов хватало на 2 дня и initial sync проходил нормально - потом все "внезапно выросло и мы тут чуть-чуть убили реплику, потом просто поживем на мастере" - sync зафейлился и вообще стало DSPRSv01:SECONDARY> rs.printReplicationInfo() configured oplog size: 51200MB log length start to end: 26882secs (7.47hrs)
yopp
но наверное можно просто дампнуть коллекцию и заресторить
yopp
кек
yopp
7 гигов в час
Max
вот и сижу изучаю, какой оплог поставить. пока в голову приходит время рестора + планы на рост, чтобы этим не заниматься
yopp
а что у вас там такое в монге хранится?
Max
клики
Max
ну и rps под 50k
yopp
и всё в одной реплике?
Max
с пиками под 100 :/
Max
и всё в одной реплике?
Срамота, да. Над шардингом товарищи чешут репу сейчас
yopp
50к рпс тянет монга на моём стареньком mba 2013 года без каких либо кручений ручек :)
yopp
вы можете почесать репу об нас.
yopp
за деньги естественно
Max
50к рпс тянет монга на моём стареньком mba 2013 года без каких либо кручений ручек :)
так оно и тянет - на одной ноде и без реплики жило. хочется нагрузку с дисков поснимать, чуть раньше об этом спрашивал.
Max
за деньги естественно
ну, это очевидно :) А вы кто?
yopp
В настоящий момент, мы — я и мой COO. Но мы от модели продавать меня, приходим к модели продавать услугу «сделать так, чтоб монга не болела»
yopp
Всё никак, гхм, лендинг не соберём.
Max
30 в час?
yopp
Вообще 120е :)
Max
или я попутал чатики?