Leonid
yopp
Leonid
спасибо
yopp
Реплика должна быть запущена с ключом/опицей shardsrv
yopp
а что в sh.status?
Artem
Привет, скажите правильно ли понимаю, монгус словил две ошибки из-за криворукости скрипта и выкинул эмиттед Еррор, тем самым положив базу ?
это делается с целью сохранения целостности данных или иначе логика работает ?
Artem
пардоньте за бесполезный скрин)
не глянул, вот нормальная инфа
yopp
Укажите в конце uri: ?authSource=admin
Если в uri указано имя базы, но не указан authSource, то для аутентификации будет использоваться база с именем в uri, а не admin.
Контейнер же по-умолчанию инициализирует пользователя в базе admin
Сергей
Добрый день всем.
Хочу агрегировать кол-во записей с фильтрами по дням (кастуя из даты/времени в виде "2020-11-01 00:00:11" в дату) в mongodb версии 3.2.22.
В другой бд использовал:
"$group": {
"_id":
{
"day":
{
"$dayOfYear":
{
"$dateFromString":
{
"dateString": "$date",
"format": "%Y-%m-%d %H:%M:%S"
}
}
},
"token": "$token"
},
"cnt": {"$sum": 1}
}
но тут получаю ошибку из-за версии:
"errmsg" : "invalid operator '$dateFromString'",
"code" : 15999
Вопрос: чем получать дату из даты/времени в старой mongodb?
Nick
Сергей
Tetra
бд на 329G
Чем раньше начать тем быстрее можно воспользоваться плодами миграции
Viktar
бд на 329G
Не вижу проблем. Я делал массовые апдейты терабайтным базам. Долговато, но терпимо.
yopp
Artem
Aleksey
Привет всем. Подскажите на счет .explain("executionStats")
Получаю самое большое время на последнем этапе
{
"stage" : "SINGLE_SHARD",
"nReturned" : 8,
"executionTimeMillis" : 4186,
}
В индекс попадаю
{
"stage" : "IXSCAN",
"nReturned" : 8,
"executionTimeMillisEstimate" : 33,
}
Но каких-то кейсов с "stage" : "SINGLE_SHARD", особо не нахожу.
Ilya
спасите, я тупой, у меня есть рут юзер я использую такую строку для коннекта
mongodb://root:example@localhost/bsw?authsource=system"
как заставить использовать системную базу для аутентификации??
Mashxurbek
Aleksandr
знатоки, подскажите пожалуйста, есть реплика сет из 3 нод, PSS, 03 нода ломается и я меняю ее, чтобы не грузить мастера забираю даные с секондари ноды rs.syncFrom( mongo-02 ). после этого ожидаю что после перезапуска mongod на 03 ноде, все ноды будет брать реплику с мастера, но чтобы я не делал, одна нода берет с мастера, вторая с секондари. На текущий момент хотелось бы, чтобы все секондари брали реплику с мастера. Кто нить знает в чем дело?
Андрей
знатоки, подскажите пожалуйста, есть реплика сет из 3 нод, PSS, 03 нода ломается и я меняю ее, чтобы не грузить мастера забираю даные с секондари ноды rs.syncFrom( mongo-02 ). после этого ожидаю что после перезапуска mongod на 03 ноде, все ноды будет брать реплику с мастера, но чтобы я не делал, одна нода берет с мастера, вторая с секондари. На текущий момент хотелось бы, чтобы все секондари брали реплику с мастера. Кто нить знает в чем дело?
в конфиге реплики синксорс переписать со стэндбая на праймари и рс.реконфиг по идее
Aleksandr
я тоже так подумал и сделал, применилось, но после смены мастера все разъехалось опять
Андрей
а че мастер поменялся?
Андрей
приоритет ему в 2, остальным 1
Aleksandr
я поменял, тестил, а вообще имитация вывода на обслуживание, хочется же чтобы полноценный кластер был
yopp
знатоки, подскажите пожалуйста, есть реплика сет из 3 нод, PSS, 03 нода ломается и я меняю ее, чтобы не грузить мастера забираю даные с секондари ноды rs.syncFrom( mongo-02 ). после этого ожидаю что после перезапуска mongod на 03 ноде, все ноды будет брать реплику с мастера, но чтобы я не делал, одна нода берет с мастера, вторая с секондари. На текущий момент хотелось бы, чтобы все секондари брали реплику с мастера. Кто нить знает в чем дело?
syncFrom это «временный» оверрайд sync target
Persistence replSetSyncFrom/rs.syncFrom() provide a temporary override of default behavior. mongod will revert to the default sync behavior in the following situations:
• The mongod instance restarts.
• The connection between the mongod and the sync target closes.
• If the sync target falls more than 30 seconds behind another member of the replica set.
https://www.mongodb.com/docs/manual/tutorial/configure-replica-set-secondary-sync-target/
Подскажите, а почему вам важно именно с primary синхронизировать?
yopp
В целом практика иметь назначенные роли для нод крайне опасная
yopp
Если вы хотите FT/HA то все ноды в PSS кластере должны иметь достаточно ресурсов для того чтоб стать primary и выдержать нагрузку и репликацию, в том числе inital sync с отвалившихся за оплог нод
yopp
Aleksandr
Андрей
Вообще это нормальная тема, когда какой-нибудь стэндбай по-умолчанию при включении репликасета синкается с другого стэндбая в пределах одного сетевого окружения тем более. Когда стэндбай источник в этом случае отваливается, второй стэндбай - его приёмник подключается к праймари сам.
Андрей
У меня таких реплик куча. Вздёрнул щас один стэндбай, второй пошёл на праймари.
yopp
yopp
Если необходимо вы можете отключить Chained Replication для всего репликасета:
https://www.mongodb.com/docs/manual/tutorial/manage-chained-replication/
Андрей
Размазанная география из трёх нод всего? 🤨
Aleksandr
ну пока да, скромный кластер) вот как раз собираюсь заниматься масштабированием и читаю доки, но в них не всегда все очевидно. спасибо добрые люди)
насчет репликации всех секондари с праймари я кипишнул, потому что на тестовом кластере там так и было. а на проде как вы описываете. видимо на тесте секондари ноды добавлялись одновременно и с тех пор не трогались, вот и сохранились параметры.
Глеб
Подскажите какие должны быть права для mongos
Чтобы я мог хоть что то сделать в кластере?
Сейчас имею такого пользователя:
Создавал его так:
use admin
db.createUser(
{
user: "gleb",
pwd: "adsqwe",
roles: [ "root" ]
})
А потом при логине в omgnos получаю ошибку при выполнении команды sh.status()
"errmsg" : "not authorized on config to execute command { find: \"version\", filter: {}, limit: 1.0, singleBatch: true, lsid: { id: UUID(\"7bed830b-8005-4c21-bb29-a384d41789d8\") }, $clusterTime: { clusterTime: Timestamp(1689079336, 1), signature: { hash: BinData(0, 4B7B1BF42B4CB511A6B053B646698825A11932C2), keyId: 7254432842229219350 } }, $db: \"config\" }",
РЕШЕНИЕ:
Нужно было создать пользователя как я его создал выше и дать права
db.grantRolesToUser("gleb", [{ role: "readWrite", db: "config" }])
Andrey K.
Подскажите какие должны быть права для mongos
Чтобы я мог хоть что то сделать в кластере?
Сейчас имею такого пользователя:
Создавал его так:
use admin
db.createUser(
{
user: "gleb",
pwd: "adsqwe",
roles: [ "root" ]
})
А потом при логине в omgnos получаю ошибку при выполнении команды sh.status()
"errmsg" : "not authorized on config to execute command { find: \"version\", filter: {}, limit: 1.0, singleBatch: true, lsid: { id: UUID(\"7bed830b-8005-4c21-bb29-a384d41789d8\") }, $clusterTime: { clusterTime: Timestamp(1689079336, 1), signature: { hash: BinData(0, 4B7B1BF42B4CB511A6B053B646698825A11932C2), keyId: 7254432842229219350 } }, $db: \"config\" }",
РЕШЕНИЕ:
Нужно было создать пользователя как я его создал выше и дать права
db.grantRolesToUser("gleb", [{ role: "readWrite", db: "config" }])
а что именно "что то сделать в кластере?"
вот, например, типичный админ
db.createUser({user: username, pwd: password, roles: [{"role":"root","db":"admin"}, {"role":"dbAdminAnyDatabase","db":"admin"}
Timur
добрый день! подскажите пожалуйста, со следующей проблемой:
дано:
1. mongodb БД инстанс у aws, t3.medium
2. коллекция на 60к записей
3. нагрузка на cpu в среднем 50-70%
проблема:
сегодня заметили, что запрос типа findOne({$or: [
{ id: "someId" },
{ someField: "someValue" },
{ someField2: "someValue2" }
]})
стал занимать около 8-10 секунд только до mongo
Выяснилось, что проблема была в том, что отсутствовал индекс someField2, и после того как создал такой индекс, проблема решилась, теперь этот запрос занимает около 0.1 мс.
Сама эта кверя findOne у нас существует уже несколько лет и проблем раньше не было.
Вопрос:
почему такое могло случиться только спустя время? Куда копать?
Бобомурод
скажите пожалуйста, коллекция с 500к записей в каждом из которых по 8 ключей сколько может занять введение нового индекса ?
Бобомурод
поиск по поле address занимает очень много времени, уже час жду результат
хотя в описаних схемы написал что address это тоже индекс
Бобомурод
Дэн Миков PRM
Приветствую!
есть репликасет (праймари, секондари, арбитр).
нужно на время вырубить виртуалку где живет арбитр. Можно ли это делать ? есть какая то специальная процедура? Не ушатаю ли я всю реплику?
Nick
Сергей
Добрый день.
Где посмотреть инфу о том, в какой версии какой оператор был добавлен?
bookuxa
Ребят, я решил сделать M to M в Монго.
То есть, документы:
Товар – имеет много категорий (коллекция айдишников)
Категория – имеет много товаров (коллекция айдишников)
Я хочу, чтобы при создании товара ABC123 с категорией Х, в документ категории Х добавлялся этот товар
bookuxa
Как это реализуемо?
Какие другие решения?
Larymar
А правда ли, что документоориентированная база данных - это то, на чем стоит реализовывать такую модель?
bookuxa
yopp
yopp
Если товаров немного (пара сотен) то отношения можно хранить прямо в документах продуктов и категорий
yopp
В целом я наверное не вижу смысла делать отдельную связь: вы можете хранить у продукта список всех категорий массивом и сделать по этому массиву индекс
yopp
В обратную сторону просто будете делать поиск по коллекции продуктов, по id категории
bookuxa
bookuxa
и категории можно было создать
yopp
Для этого сделайте отдельную коллекцию с категориями, а в документ с продуктом складывайте только их id
bookuxa
Стоит ли мне сделать в коллекции категории массив продуктов? Или лучше будет искать продукты из категории по запросу в коллекцию продуктов с айдишником категории?
yopp
Проще искать по коллекции продуктов
bookuxa
и правда! спасибо вам большое
bookuxa
прояснилось
yopp
Мне кажется «связующая» коллекция тут будет лишней, так как у связей нет никаких дополнительных атрибутов
bookuxa
я согласен
yopp
И рефлексию хранить смысла нет, так как она легко покрывается индексом по категориям в коллекции продуктов
bookuxa
А я могу на уровне БД запретить дубликаты в массиве айдшинков категорий?
yopp
Для одного документа продукта? Да, через unique compound index по {_id, category_ids}
Максим
Добрый вечер. Получил такую ошибку: P2031 Prisma needs to perform transactions, which requires your MongoDB server to be run as a replica set.
Максим
Монго в докере. Подскажите хотябы направление куда копать. Это или призма косячит или монго в докере?
Jamshidjon
Кто какой софт используется для рисования схем в монго? Ну проектирования коллекций в базе данных
Поделитесь опытом пожалуйста 👀
Максим
Максим
я в общем нагуглил эту тему и поздал репликасет
Максим
теперь хз как к ним подключиться
Максим
Максим
вот такая строка но коннекта нет ошибка таймаута
Максим
указывал
Максим
а блин, без портов?