Anonymous
Привет. Помогите с аггрегацией пожалуйста. Во-первых она не работает (заполняет latest только нулями), а во вторых явно избыточно написана. https://pastebin.com/jPSLHVyV Есть два поля - тип и дата . Нужно на выходе получить {тип, "сколько такого типа", "сколько такого типа, но с датой в пределах текущего месяца"} Заранее благодарю за помощь.
Andrey
Добрый день! подскажите плз - после инициализации реплика сета нужно ли сохранять конфиг? и если нужно, то на каком сервере? я собирал реплика сет, залил в него бд, подождал репликацию и решил проверить восстановление работы реплика сета, выключил один из серверов. после восстановления работы этот сервер повис в статусе other и no reachable для реплика сета сейчас я решил пересобрать полностью реплика сет и мне кажется, что чего то нехватает
Andrey
на этот раз инициировал реплики с помощью rs.add("host:port"). валить пока не хочу, потому что не знаю, почему реплика падает в статус other :(
yopp
Ноды в реплику добавляются через rs.add, восстановление должно происходить автоматически, при условии что в файле конфигурации или агрументах демона указано корректное название реплика сета
yopp
Вся остальная конфигурация происходит средствами монги, через rs.XXX
Andrey
https://docs.mongodb.com/manual/tutorial/deploy-replica-set/
спасибо! по этому гайду уже проходил несколько раз. сейчас снова протестил и снова secondary упал в other, но каким то чудом после перезагрузки mongod зацепился назад
yopp
Я не знаю что такое Other, такого статуса нет
yopp
https://docs.mongodb.com/manual/reference/replica-states/
Andrey
не смогу показать, но выглядит примерно rs0:other при подключении, ошибка 93 и все упирается в название реплика сета
Andrey
statestr REMOVED
Andrey
нашел: sam:OTHER> rs.status() { "state" : 10, "stateStr" : "REMOVED", "uptime" : 772, "optime" : { "ts" : Timestamp(1466707271, 1), "t" : NumberLong(6) }, "optimeDate" : ISODate("2016-06-23T18:41:11Z"), "ok" : 0, "errmsg" : "Our replica set config is invalid or we are not a member of it", "code" : 93 }
Andrey
Our replica set config is invalid or we are not a member of it
Andrey
вопрос в том, почему содраный под копирку конфиг для двух реплик вызывает такую ошибку при старте экземпляра реплика сета после восстановления его работы
Andrey
в rs.conf() возвращается нужное имя и именно оно указано в конфиге каждой реплики
yopp
сколько у вас всего нод?
Andrey
привести в порядок ллегко, но руками.
Andrey
1+1+арбитр
Andrey
я обвалил одну ноду - отправил в ребут и она не восстановилась
yopp
rs.status() на какой ноде возвращает ошибку?
Andrey
при том, что вариантов инициализации использовал два
Andrey
на той, что перезагружена была
yopp
какой статус реплики виден с текущего primary?
Andrey
оффлайн
Andrey
сейчас реплика вернулась к работе
Andrey
я пока решил поискать причины этой ошибки более углубленно
yopp
Ошибка скорее всего в конфигурации ноды, в replSetName
Andrey
все бы ничего, но конфиг копипаста. в логе адекватно все написано, одинаково
Andrey
там же расписано, с каким параметрами стартует mongod
Andrey
но я попытаюсь высечь ошибку повторно
yopp
эта ошибка значит что нода когда старовала не нашла себя в rs.config
Andrey
да! и тут два варианта: толи не в тот конфиг смотрела(не нашла по имени реплики), толи с конфигом беда. потому и возник вопрос, может нужно как то сохранять конфиг после его создания
yopp
вы её по ip добавляли?
yopp
изменился хост, изменился replSetName
Andrey
т.е. я инициализировал, а потом его сохранил
Andrey
да, по ip
Andrey
касательно транспорта - все статично
Andrey
по ип
yopp
ну вот и ответ
yopp
не стоит конфигугировать по ip
Andrey
бляяяя.....вспомнил косяк: я же прописывал в hosts имя сервера на котором инициализировал
Andrey
не стоит конфигугировать по ip
так так так, а тут подробней плз
yopp
ну я же вам давал ссылку
yopp
https://docs.mongodb.com/manual/tutorial/deploy-replica-set/#considerations-when-deploying-a-replica-set
yopp
Hostnames TIP When possible, use a logical DNS hostname instead of an ip address, particularly when configuring replica set members or sharded cluster members. The use of logical DNS hostnames avoids configuration changes due to ip address changes.
Andrey
ну я же вам давал ссылку
понял, это важно
Andrey
т.е. реплика сет лучше использовать с именами серверов
Andrey
да, я читал раньше этот шаг, но пропускал, ибо в чем разница
Andrey
переделать не очень сложно. rs.remove() это же норм команда?
yopp
я не знаю как монга выбирает ip когда проверяет конфиг на предмет себя
yopp
судя по вашим симптомам, можно предположить что адрес который указан в конфиге появляется в интерфейсах позже чем запускается монга
yopp
отсюда «внезапно завелось»
Andrey
мне казалось, что сделано для удобства переноса реплик и при использовании dhcp например.
yopp
вы перезапустили демона, а адрес уже есть
Andrey
ну тогда имена ничего не изменят в данном случае
Andrey
я не просто его перезапустил
Andrey
в промежутке я запустил демона без репликасета
Andrey
мне казалось что возникает коллизия значений конфигурации демона и реплика сета, но это не оно
yopp
я не понимаю что вы пытаетесь сделать
Andrey
мне на итог нужен отказоустойчивый реплика сет, а мой не выдержал перезагрузку всего одной ноды
Andrey
вот и решил спросить, может быть я что то делаю не так. вот сейчас попробую через имена пересобрать
yopp
делаете не так, да
yopp
скорее всего монга запустилась до того как поднялись сетевые интерфейсы
yopp
либо монга попыталась себя найти по названию хоста
yopp
либо что-то ещё
Nick
мне на итог нужен отказоустойчивый реплика сет, а мой не выдержал перезагрузку всего одной ноды
перезагрузка ноды - это перезагрузка вм/физ машины или только сервиса монги?
yopp
но всё сводится к тому, что нода не может найти себя в rs.config
Nick
yopp верно говорит
Nick
сейчас же в системд вроде настраиваются зависимости от сети, чтобы оно дождалось поднятия сети или я путаю7
yopp
хз :)
yopp
потом если там dhcp или несколько интерфейсов там может быть всё чо угодно
Andrey
Andrey
да, всё так. [Unit] ... After=network.target ...
а вот и решение подъехало
Andrey
да, всё так. [Unit] ... After=network.target ...
отдельная благодарность
Bandikoot
раз пойдёте редачить .service, проверьте сразу, что LimitNOFILE задан (:
yopp
да, всё так. [Unit] ... After=network.target ...
It only indicates that the network management stack is up after it has been reached.
yopp
ну тоесть ничего не значит