Anonymous
primary mongo will trying to connect to secondary db
Andrey
у неё уже должен быть конфиг кластера локально и при запуске она попытается самостоятельно подключится к кластеру
Нода была в реплика сет мастером. Потом ее остановили, базу вырубили, мастером стал слейв.
yopp
Не факт что secondary ;)
Andrey
По идее есть арбитр ещё
Constantin
Не факт что secondary ;)
Мне казалось, что перевыборы начинаются только если выпал Primary, или если руками их инициировать (или из приложния). Можете рассказать, в каком случае еще могут начаться?
Andrey
А если просто отреплицировать не может?
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
sudo systemctl start mongodb
так и делаю
Vova
так и делаю
смотри след сообщ
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
2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] MongoDB starting : pid=31608 port=27017 dbpath=/data/db 64-bit host=octo_server 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] db version v4.0.0 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] git version: 3b07af3d4f471ae89e8186d33bbb1d5259597d51 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.1.0i 14 Aug 2018 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] allocator: tcmalloc 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] modules: none 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] build environment: 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] distarch: x86_64 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] target_arch: x86_64 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] options: { processManagement: { fork: true }, systemLog: { destination: "file", path: "/var/log/mongod.log" } } 2018-08-25T17:12:57.975+0200 I STORAGE [initandlisten] exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] now exiting 2018-08-25T17:12:57.975+0200 I CONTROL [initandlisten] shutting down with code:100
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'.
Marvin
короче я каким-то магическим образом починил всё ребутом
Сергей
Ребзи, а кто подскажет в какую сторону вообще рыть если нода не коннектится к монге при запущенной в соседней вкладке командой mongod код js const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); Код ошибки error { MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connection 0 to localhost:27017 timed out] at Pool.<anonymous> (/home/serhii/repos/mongodb-playlist/node_modules/mongodb-core/lib/topologies/server.js:564:11) at Pool.emit (events.js:160:13) at Connection.<anonymous> (/home/serhii/repos/mongodb-playlist/node_modules/mongodb-core/lib/connection/pool.js:316:12) at Object.onceWrapper (events.js:255:19) at Connection.emit (events.js:160:13) at Socket.<anonymous> (/home/serhii/repos/mongodb-playlist/node_modules/mongodb-core/lib/connection/connection.js:256:10) at Object.onceWrapper (events.js:255:19) at Socket.emit (events.js:160:13) at Socket._onTimeout (net.js:412:8) at ontimeout (timers.js:458:11) at tryOnTimeout (timers.js:296:5) at Timer.listOnTimeout (timers.js:259:5) name: 'MongoNetworkError', errorLabels: [ 'TransientTransactionError' ], [Symbol(mongoErrorContextSymbol)]: {} }
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/
Alex
^
Это я уже сделал. Но уже после переноса. sh.status() не показывает шардов
yopp
При совершении какой операции вы получаете указанную ошибку?
Alex
При sh.addShard()
yopp
в шарде, который вы добавляете с помощью addShard, базы уже есть?
yopp
Ваша проблема в том, что в существующем кластере и в добавляемом шарде есть база с одинаковым именем.
Alex
в шарде, который вы добавляете с помощью addShard, базы уже есть?
Нет. Я удалил все шарды и sh.status() ничего не показывает. Возможно где-то запись еще осталась. Но как посмотреть?
yopp
Вы в итоге хотите расшардить существующий репликасет?
yopp
Тот факт что вы удалили шарды, не влияет на карту шарда. Если вы не сбросили данные в конфиг-серверах, там осталась информация о ранее расшарженной базе. Если вы хотите по новому расшардить реплика сет, вам лучше начать с чистого листа
yopp
Так что если вы добавялете не пустой шард, в котором есть база с именем, с совпадаюшим с ранее расшарженом, с позиции кластера вы пытаетесь добавить новый шард с конфликтующим названием.
yopp
Удаление шардов != удаление базы
yopp
Шарды это конфигурация топология, базы и чанки расположение данных внутри топологии
SvPupok
Можно почистить конфиг базу, но на свой страх и риск)
Andrey
Добрый вечер. А если в реплика сет где праймари , секондари и арбитр. Добавить ещё одну секондари, арбитр нужен?
Constantin
Добрый вечер. А если в реплика сет где праймари , секондари и арбитр. Добавить ещё одну секондари, арбитр нужен?
Нет, лучше убрать. В этом случае у вас будет 4 участника, что может негативно отразиться на выборах
Constantin
Ну и вообще зависит от того, что будет за Secondary, если он будет Hidden и для него будет выключено участие в голосовании, то арбитра можно оставить
Andrey
А для чего обычно хиден делается!?
Constantin
А для чего обычно хиден делается!?
Например, чтобы строить сложные и тяжелые отчеты, или чтобы бэкапить без нагрузки. Ну и есть особый вид Hidden — Delayed, на нем хранятся данные с отставанием, например на один час. Это нужно, чтобы из-за кривого кода или случайных (или умышленных) ошибок у вас были относительно консистентные данные
Andrey
Понятно некое подобие disaster recovery.
Constantin
Понятно некое подобие disaster recovery.
Скорее один из инструментов, потому что для подобных ситуаций должен быть комплекс целый
Constantin
Вообще очень советую подробно прочитать весь раздел про репликацию в документации https://docs.mongodb.com/manual/replication/
Constantin
yopp
Так и есть: Use hidden members for dedicated tasks such as reporting and backups. Delayed members should be hidden.
Только они не доступны из view кластера. К ним возможно только прямое подключение.
yopp
Весь смысл hidden в том чтоб быть скрытыми от запросов клиентов. Документация вообще странно написана: «Clients will not distribute reads with the appropriate read preference to hidden members». Нет такого read preference, с которым клиенты могут отправить запрос на hidden ноду. Про отчёты тоже странная формулировка, без замечания что для этого необходимо прямое соединение.
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 и т д
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. я знаю что нужно обновлять, но все с этой версией работало хорошо
The first
А как быть в ситуации, если получателей несколько? т.е. есть массив receivers['receiver1,'receiver2'...]