yopp
Но вообще посмотрите стоит ли вам шард заводить
yopp
Если вы в io не уперлись, то дешевле докинуть дисков
yopp
С шардом будут сложности с резервным копированием. Сейчас сложилась дурацкая ситуация что для 4.2 нет открытых инструметов для Point-in-time бекапов. Только через OpsManager
yopp
А он в интерпрайз лицензии
yopp
и ¯\_(ツ)_/¯
yopp
Шард не добавит отказоустойчивости
Max
я понимаю, что без реплики это просто доп место на диске
yopp
Если у вас нет проблем с io, то вам хватит просто разнести реплику на разные физические хосты и докинуть дисков/памяти
Max
yopp
Да, понимаю. :)
Askhat
Там есть размер кеша и read in/read out
15mb used если вы про Cache Usage
Это в самый пик.
До этого я писал им как-то просто узнать в чём проблема, меня пнули и сказали, что вам нужно поболтать с инженерами (не бесплатно, но первый месяц подарим), я подумал, что сам поищу сначала :D
yopp
Кстати, напоминаю что в этот четверг, 14 ноября, в Москве, будет митап MongoDB и Яндекс.Облако
С местами уже немного напряженно, у вас последний шанс :)
Подробности и регистрация
Max
Вроде как теперь это моя зона ответственности, но она в таком состоянии, что я отвечать за стабильность работы текущего сетапа просто не готов. это всё до первого отказа железки/ошибки девелоперов/что-то еще. даже бэкапов еще неделю назад не было(
Artem
Artem
Не, я прошел, спасибо большое! :)
Знакомые не прошли некоторые :)
Max
так что кластер, сначала тестовый, с тестом апгрейда. потом прод)
Anna
Привет! Пишите, кто не получил подтверждение. Сегодня проверим
Artem
Max
Max
Я вижу что он использует oplog но не очень понимаю, что ему это даёт
yopp
«инкрементальность»
Max
«инкрементальность»
мне механизм не очень понятен. что он достигает используя oplog с определенного места. делает дамп определенной части операций?
yopp
Но конкретно этот скрипт абсолютно ненадежен, потому что он не учитывает того факта, что оплог это capped коллекция и при резком увеличении объёме документов точка в которой сделан бэкап последний раз может выпасть из оплога. А там даже проверки на это нет
Anna
Artem
yopp
yopp
Но сам алгоритм очень плохо реализован
Max
топорно, это даже мне понятно)
Max
делать снапшоты не вариант?
yopp
Вариант, но в шарде надо сделать так, чтоб снепшоты на всех нодах были в одной точке
yopp
А это очень сложно, если не тормозить временно запись
yopp
С shard-wide транзакциями в 4.2 я пока вообще не очень понимаю как они это в opsmanager делают
yopp
возможно используют какие-то фичи wiredtiger, чтоб сделать PiT снепшоты
Max
Можно сделать вторые реплики кажого шарды и разместить их на одной виртуалке, с которой и снимать снапшоты. и сразу вопрос - можно как-то сконфигурировать реплику так, что бы она точно никогда не стала primary, а всегда оставалась репликой, как slave в sql db.
yopp
yopp
Можно, сконфигурировать конечно: https://docs.mongodb.com/manual/core/replica-set-priority-0-member/
Askhat
Max
Ничем не поможет
у меня будут обе реплики на одной фс, значит в снапшоте будет коректное состояние. хотя может лагнуть репликация, поэтому не поможет?
yopp
yopp
Простой пример вы вставляете два зависимых документа, которые едут на два разных шарда. У реплик с которых делаются бэкапы разный лаг. Одна операция попадает в бэкап, а другая нет.
yopp
Вы потеряли консистентность данных
Max
yopp
Лаг есть всегда. Физика запрещает не иметь его :)
Władimir (Zae)
добрый вечер, подскажите пожалуйста, где я ошибся? я хочу вытащить все документы у которых в rules содержатся подобные объекты, которые в переменной query из документа sample
код: https://codepen.io/reetou/pen/MWWqjEL?editors=0010
yopp
Да. Если вы себе можете это позволить :)
yopp
О чём в документации и написано: https://docs.mongodb.com/manual/tutorial/backup-sharded-cluster-with-filesystem-snapshots/
yopp
Проще не использовать шард, пока это возможно
yopp
Это палка о двух концах, но с 4.2 есть другой позитивный момент: можно поменять значение шард ключа и ошибка в выборе чуть менее болезнена
yopp
на три разных сервера, да :)
yopp
зависит от ваших требований по отказоустойчивости
Max
если primary вылетит, единственный secondary станет primary?
yopp
нет
yopp
если нет кворума
yopp
статегия всего с двумя нодами она не самая удачная
yopp
p=0 позволяет ноде голосовать, но она не может инициировать выборы
yopp
yopp
киньте пример в play.db-ai.co
Władimir (Zae)
ок, спасибо, ща
yopp
плюс у вас там два positional $, хотя не вижу чтоб был $elemMatch
yopp
$ это плейсхолдер для индекса элемента который попал под $elemMatch
yopp
да, приоритет и устанавливает приортиет при выборах. 0 приортиет значит что нода не может быть избрана в принципе. таким образом в больших репликах можно выставить веса
про кворум, теоретически да. на практике у меня есть интуитивное ощущение что будут какие-то нюансы, но рационализировать прямо сейчас не могу :)
yopp
даже не сколько с выборами, а в приципе с топологией
Max
и благодарю за мысль отказаться от шарда. видимо так и будет 🙂
Anonymous
если я 2 коллекции (между которыми взаимосвязь в виде отсылки к ObjectID, перенесу в другую бд - эта взаимосвязь сохранится? если я помню, то там перегенерятся айдишники?
Yuriy
Ты можешь записать свои ид
yopp
Anonymous
а как копировать целиком с айди? я думал просто insert
Anonymous
пройтись циклом по тем что хочу перенести и инсерт
yopp