Andrey
скажите, а если я буду делать реплику на условном пустом монго. т.е. без предварительной переноски копии, репликация будет долго ? или на уровне копипаста?
yopp
зависит от количества данных, от производительности сервера, от доступных на остальных нодах ресурсов, от качества соединения между нодами
Andrey
но теоретически лучше сразу сделать реплику, чем бекапить тащить на новый сервер. распаковывать и потом настраивать реплику.
Andrey
?
yopp
сделайте реплику и посмотрите с какой скоростью идёт initial sync
yopp
ну и классический совет: переезжайте на mongodb.com/atlas
Anonymous
yopp
Anonymous
зачем?
а зачем юзать атлас?
Anonymous
я не сторонник подобных облачных извращений
yopp
потому что это дешевле и надежнее
yopp
никаких извращений в атласе нет. зато сразу экономия на ops, потому что там буквально десять кнопок, которые может тыкать кто угодно
yopp
там есть нормальные бэкапы и оплог, и снепшоты
yopp
которые тоже не требуют PhD в бэкпологии
Anonymous
Anonymous
как по мне облако такое себе
yopp
yopp
До определенного порога алтас будет ощутимо дешевле чем содержать свою инфраструктуру
Pafa
yopp
play.db-ai.co тоже отлично в продакшене живёт на бесплатном кластере :)
yopp
Не надо тут вот этого, пожалуйста
Pafa
Andrey
Ilya
В приложении имеет место быть большое количество запросов за изменение статистики. У меня есть два варианта. Первый - использовать update+aggregation (4.2v), и делать все одним запросом. Второй - запрашивать данные, изменять, записывать (findOne+updateOne). Какой вариант наиболее предпочтительный с точки зрения производительности, если запросов большое количество, идут они постоянным интенсивным потоком?
Nick
Andrey
А вообще бекапить 4.4 тб разумно через mongodump?
Anonymous
Привет всем!
yopp
Andrey
а как лучше. сейчас базу на 300 гигов распаковываю через mongorestore. долго думает над:
restoring indexes for collection
Ivan
Ivan
снимком лвм ещё делают
yopp
yopp
Ещё вариант Ops Manager, но вам потребуется лицензия
Andrey
не вариант снепшоты...
Andrey
получается был кластер из 3-х нод. На оной из нод базы лежат на рейде 0 (был праймари и не нем как раз была беда с одним из дисков, собстевнно на него и хочется вернуть базу), диски не подготовленны к LVM
Andrey
mongorestore завершился для 300ГБ. база видится. хочу данный сервер(он ранее не участвовал в кластере) добавить в кластер и настроить реплики с ним и слейвом который сейчас primary выступает. Я могу просто на примари добавить т.е.
rs.initiate() потом rs.add("имя нового слейва")... или как то надо по другому поступать ?
Гена
ребята, подскажите проверенный и хороший темплейт Заббикса для Монги.
Гена
Пожалуйста
yopp
4.2.0 (Aug 13) ◦ 4.0.12 (Aug 12)
Хочешь выступить с докладом на митапе в Москве? Присылай тему!
• Плейграунд для запросов
• Документация
• Официальные курсы по MongoDB
Stable: 4.2.0 ◦ Bugfix: 4.0.12
Legacy: 3.6.14 (Aug 26) ◦ EOL: 3.4.23 (Sep 16, 💀 Jan ‘20)
По вопросам покупки Enterprise лицензии пишите @dd_bb
☠️: 3.2.21 (Dec ’18), 3.0.15 (May ’17)
yopp
Andrey
а ребутить праймари надо ?
yopp
нет
S
mongodb atlas или локальный mongodb? Читаю, в статье советуют облачную базу, это нормальная практика?
yopp
Atlas, пока на него хватает денег
Никита
yopp
Теперь у db-ai.co можно купить лицензии на монгу.
Хорошая новость, у монги осталась только Enterprise Advanced лицения. Professional убрали.
Плохая новость, лицензия подорожала на 20%.
Хорошая новость, теперь есть RAM Pool лицения, которая по количеству оперативной памяти, а не по количеству нод. Выгодно если у вас много небольших серверов.
Есть EOM лицензии, если вы хотите поставлять монгу в составе своего продукта, но не хотите Server Side Public License, а хотите чистую коммерческую лицензию.
yopp
На атлас плюшек никаких нет. Зато там теперь есть Professional/Enterprise Support, но он потребует годовой подписки
Andrey
ругается что он слейвовый, хотя он сейчас единственный
Andrey
errmsg” : “replSetReconfig should only be run on PRIMARY, but my state is SECONDARY; use the \“force\” argument to override”,
Anonymous
Можно ли как то делать запрос со списком ключей так что бы на ненайденные документы монга возвращала нулы?
Anonymous
например список ключей для поиска документов такой: [ 1, 2, 3 ]
а результат такой: [ {...}, {...}, null ]
потому что для ключа три документ не найден
Nick
Anonymous
😢
Nick
А для чего нужно так странно получать результат?
Anonymous
да хз, легаси какое то
yopp
Andrey
праймари поломался. сейчас слейв один.
Andrey
т.е. был кластер из 3-х
Andrey
одну ноду выкл. давно. сейчас поломался праймари. добавляем новую ноду слейвом
yopp
Без активного праймари в кластере вы не можете менять топологию
yopp
Вам необходимо сначала привести кластер в такое состояние, что в нем есть активный праймари, а потом уже добавлять туда новых участников
yopp
Andrey
Anonymous
Ребята, привет!
Подскажите пожалуйста, как в aggregation pipeline в $group вывести не только минимальное (или максимальное) значение, но и еще одно поле из дока, который его содержит?
Например, у нас есть подобная коллекция
{
"_id": objectId(),
"slug" : 'm3m89v',
"category": "category1",
'value':21,
...
},
{
"_id": objectId(),
"slug" : 'aw554f',
"category": "category1",
'value':100,
...
},
{
"_id": objectId(),
"slug" : 'd3535d',
"category": "category2",
'value':42,
...
},
{
"_id": objectId(),
"slug" : 'ft33445',
"category": "category2",
'value':420,
...
},
А получить нам нужно вот такую
{
` "category": "category1",
"minVal":21,
"minSlug":'m3m89v'
"maxVal":100,
"maxSlug":'aw554f'
},
{
"category": "category2",
"minVal":42,
"minValSlug":'d3535d'
"maxVal":420,
"maxValSlug":'ft33445'
}
` Правильно ли вообще такое делать через group?
Anton
Всем 👋 Подскажите, почему может быть такая «дискотека» с подключением к реплика-сету? Реплика-сет запускается с тремя инстансами через docker-compose на локальной машине. Если сделать docker-compose down && docker-compose up, то начинает нормально работать
yopp
Ребята, привет!
Подскажите пожалуйста, как в aggregation pipeline в $group вывести не только минимальное (или максимальное) значение, но и еще одно поле из дока, который его содержит?
Например, у нас есть подобная коллекция
{
"_id": objectId(),
"slug" : 'm3m89v',
"category": "category1",
'value':21,
...
},
{
"_id": objectId(),
"slug" : 'aw554f',
"category": "category1",
'value':100,
...
},
{
"_id": objectId(),
"slug" : 'd3535d',
"category": "category2",
'value':42,
...
},
{
"_id": objectId(),
"slug" : 'ft33445',
"category": "category2",
'value':420,
...
},
А получить нам нужно вот такую
{
` "category": "category1",
"minVal":21,
"minSlug":'m3m89v'
"maxVal":100,
"maxSlug":'aw554f'
},
{
"category": "category2",
"minVal":42,
"minValSlug":'d3535d'
"maxVal":420,
"maxValSlug":'ft33445'
}
` Правильно ли вообще такое делать через group?
проще выбрать вторым запросом
Anonymous
проще выбрать вторым запросом
спасибо за ответ!
но получается, что если у нас будет >1000 видов category, то это будет >1000 запросов, да? :с
yopp
нет
yopp
вы можете потом сделать гигантский $or
yopp
(cat eq foo and value eq 42) or (cat eq bar and value eq 13) or …
yopp
а что за задача у вас?
Anonymous
хм, ну да, можно так попробовать, спасибо!
ну и запросец у меня получается
да у нас огромное количество разных датчиков разных моделей
моделей этих больше 1000, с них идет информация в мониторинг
и нужно выввести табличку в бэкофисе этого монииторинга, в которой бы были все эти модели датчиков, максимальное значение показаний в рамках каждой модели и серийник устройства с максимальным значением
и тоже самое с минимальным значениием показаний
yopp
$group на мой взгляд не эффективное решение
yopp
я бы обновлял при вставке
yopp
с другой стороны, если табличка не реалтаймовая, то как угодно посчитать
yopp
просто перебрать эти 1000 моделей и на каждую по запросу сделать
yopp
и сохранять в отдельной коллекции
Anonymous
да беда в том, что реалтаймовая
попробую сделать и посмотреть, надеюсь сильно страшно не будет
yopp