Anonymous
Anonymous
primary mongo will trying to connect to secondary db
Andrey
Constantin
yopp
Не факт что secondary ;)
Andrey
По идее есть арбитр ещё
Constantin
Не факт что secondary ;)
Мне казалось, что перевыборы начинаются только если выпал Primary, или если руками их инициировать (или из приложния).
Можете рассказать, в каком случае еще могут начаться?
Andrey
А если просто отреплицировать не может?
yopp
yopp
Можно не очень точно, но генерализировать до «при изменении топологии». Т.е. если фактическая, а не сконфигурированная топология изменилась, это может привести к выборам
Marvin
Привет всем! Пытаюсь запустить mongodb на своём сервере с Arch Linux
При попытке systemctl start mongodb ловлю
Aug 25 17:06:44 octo_server systemd[30123]: mongodb.service: Failed to determine user credentials: No such process
Aug 25 17:06:44 octo_server systemd[30123]: mongodb.service: Failed at step USER spawning /usr/bin/mongod: No such process
Marvin
При этом /usr/bin/mongod есть, пользователь mongodb, указанный в mongodb.service существует
Vova
sudo systemctl start mongodb
Vova
хотя стоп, не так
sudo mongod --fork --logpath /var/log/mongod.log
Marvin
Marvin
хотя стоп, не так
sudo mongod --fork --logpath /var/log/mongod.log
[octo@octo_server ~]$ sudo mongod --fork --logpath /var/log/mongod.log
2018-08-25T17:12:57.960+0200 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
about to fork child process, waiting until server is ready for connections.
forked process: 31608
ERROR: child process failed, exited with error number 100
To see additional information in this output, start without the "--fork" option.
Vova
прям вангую, у тебя не существует папки /data/db
Marvin
Vova
создай её или задай другой путь через --dbpath
Marvin
создай её или задай другой путь через --dbpath
Указал на /var/lib/mongodb. Один фиг сервис systemd падает:
Aug 25 17:15:11 octo_server systemd[1]: Started High-performance, schema-free document-oriented database.
Aug 25 17:15:11 octo_server systemd[31645]: mongodb.service: Failed to determine user credentials: No such process
Aug 25 17:15:11 octo_server systemd[31645]: mongodb.service: Failed at step USER spawning /usr/bin/mongod: No such process
Aug 25 17:15:11 octo_server systemd[1]: mongodb.service: Main process exited, code=exited, status=217/USER
Aug 25 17:15:11 octo_server systemd[1]: mongodb.service: Failed with result 'exit-code'.
Vova
Marvin
короче я каким-то магическим образом починил всё ребутом
yopp
yopp
srv нужен для autodiscovery через dns
yopp
https://www.mongodb.com/blog/post/mongodb-3-6-here-to-SRV-you-with-easier-replica-set-connections
yopp
https://docs.mongodb.com/manual/reference/connection-string/#dns-seedlist-connection-format
yopp
тонкий момент: Use of the +srv connection string modifier automatically sets the ssl option to true
Alex
Всем привет. Может кто-то подсказать как выпилить информацию о шарде из базы? Была конфигурация с реплСетами. Создали новую и перенесли в нее базу. Базы шардированные. Имя шарда то же осталось, но при переносе в базах осталась старая инфа о старых шардах. При попытке добавить в новый шард сообщение can't add shard 'shard_name' because a local database 'db_name' exists in another shard_name
yopp
Посмотреть в listShards и удалить все несуществующие шарды
https://docs.mongodb.com/manual/tutorial/remove-shards-from-cluster/
yopp
Alex
^
Это я уже сделал. Но уже после переноса. sh.status() не показывает шардов
yopp
При совершении какой операции вы получаете указанную ошибку?
Alex
При sh.addShard()
yopp
в шарде, который вы добавляете с помощью addShard, базы уже есть?
yopp
Ваша проблема в том, что в существующем кластере и в добавляемом шарде есть база с одинаковым именем.
yopp
Вы в итоге хотите расшардить существующий репликасет?
yopp
Тот факт что вы удалили шарды, не влияет на карту шарда. Если вы не сбросили данные в конфиг-серверах, там осталась информация о ранее расшарженной базе. Если вы хотите по новому расшардить реплика сет, вам лучше начать с чистого листа
yopp
Так что если вы добавялете не пустой шард, в котором есть база с именем, с совпадаюшим с ранее расшарженом, с позиции кластера вы пытаетесь добавить новый шард с конфликтующим названием.
yopp
Удаление шардов != удаление базы
yopp
Шарды это конфигурация топология, базы и чанки расположение данных внутри топологии
SvPupok
Можно почистить конфиг базу, но на свой страх и риск)
Andrey
Добрый вечер. А если в реплика сет где праймари , секондари и арбитр. Добавить ещё одну секондари, арбитр нужен?
Constantin
Constantin
Ну и вообще зависит от того, что будет за Secondary, если он будет Hidden и для него будет выключено участие в голосовании, то арбитра можно оставить
Andrey
А для чего обычно хиден делается!?
Constantin
А для чего обычно хиден делается!?
Например, чтобы строить сложные и тяжелые отчеты, или чтобы бэкапить без нагрузки.
Ну и есть особый вид Hidden — Delayed, на нем хранятся данные с отставанием, например на один час.
Это нужно, чтобы из-за кривого кода или случайных (или умышленных) ошибок у вас были относительно консистентные данные
Andrey
Понятно некое подобие disaster recovery.
Constantin
Вообще очень советую подробно прочитать весь раздел про репликацию в документации https://docs.mongodb.com/manual/replication/
yopp
yopp
yopp
Весь смысл hidden в том чтоб быть скрытыми от запросов клиентов.
Документация вообще странно написана: «Clients will not distribute reads with the appropriate read preference to hidden members». Нет такого read preference, с которым клиенты могут отправить запрос на hidden ноду.
Про отчёты тоже странная формулировка, без замечания что для этого необходимо прямое соединение.
Constantin
Constantin
Естественно напрямую
yopp
Но так лучше не делать. Это одно из тех мест, где монговцы сами себе противоречат. Это попытка масштабирования read capcity с помощью secondary, что раньше ими порицалось. С сессиями и транзакциями становится ещё тяжелее
Andrey
Я хочу понять только один аспект. Могу ли я использовать такой режим для снятия дампа с базы.
Andrey
Видимо могу.
yopp
Да, для этого оно по сути и предназначено
Dmitry
Всем привет! Кто включал featureCompatibilityVersion == 3.4 после апгрейда с 3.2? Как себя ведёт репликасет? Была ли деградация по перфомансу?
Vova
Полагаю, идёт несогласование версий (например mongodb server 4.0 vs mongodump 3.6)
Andrey
Добрый день, вопрос по Шардированию. Как я понимаю данные размазываются по репликасетам. Тогда вопрос, что будет, если одна нода развалится, часть данных, которая она хранит пропадет,целостность данных нарушится?
yopp
Если упадет одна нода в реплика сете из нескольких нод, то ничего. Произойдут выборы, будет новый мастер.
yopp
А вот если шард целиком, то да. У вас будет дырка в данных
Vladimir
Всем привет. У меня вопрос по организации схемы данных в монго.
У меня есть справочная коллекция Modules (id+различные поля настроек для модуля) и коллекция Devices.
Нужна возможность устанавливать Modules для Device с переопределением настроек от дефолтных.
Я подозреваю, что можно что-то вроде device.installedModules = {_id: ..., moduleId: module._id, <тут список полей, которые есть в Module, но с переопределенными значениями>}
Верно ли это, либо подход другой должен быть?
Буду благодарен за примеры и ссылки на доки/статьи
Art
друзья, подскажите, пожалуйста
Почему-то при поиске гео-объектов с помощью $geoWithin => $centerSphere выдаются ТОЛЬКО ТОЧКИ, которые лежат внутри сферы, хотя, внутри сферы имеются также и полигоны. В чём проблема? Как можно решить? Полигоны тоже нужны
Запрос:
find({"ns":"log.geo","filter":{"location":{"$geoWithin":{"$centerSphere":[[99.525511,14.033928],0.0025232135647961246]}}}})
The first
Приветствую.
Имеется коллекция с расходами у которых есть дата, сумма и получатель.
Подскажите пожалуйста, как сделать аггрегацию, чтобы на выходе у меня была статистика суммы этих расходов по месяцам и получателям?
Вот так
2018.08:
total: 1000000,
потрачено на получателя 1: 100000
потрачено на второго получателя: 30000
и т д
Anonymous
The first
у меня сейчас вот так
db.getCollection("transactions").aggregate(
{ $group : {
_id: {
year : { $year : "$date" },
month : { $month : "$date" },
},
count: { $sum: "$sum" }
}}
)
The first
Но я не понимаю каксделать, чтобы считало сумму для каждого получателя в отдельности
The first
а не просто тотал
Oleg
Ребят, привет. Подскажите, почему монга может уничтожать цпу. currentOp и profiler долгих запросов не видят. но htop показывает 250% cpu usage. все 4 ядра забиты. монга 3.2.16. я знаю что нужно обновлять, но все с этой версией работало хорошо
Anonymous
The first
А как быть в ситуации, если получателей несколько? т.е. есть массив receivers['receiver1,'receiver2'...]
yopp
yopp