Zloy-Dobry
Старый
Старый
Max
Старый
Давай не будем доходами меняться?
а доходы тут причём:я к тому, что у анс любят хайлоад, круглосутчоную ответственность за сервисы и при этом железа минимум, а такие как ты провоцируют это
Max
Речь о том что 3 сервера в реплике это очень хорошо и правильно. Но надо не всегда и не всем.
Старый
потом приходишь в контору и думаешь, а как мне данные то с умерших баз забрать
Старый
Max
Max
То есть с 3 железками в реплике простоев быть не может и в такой бумаге смысла Нет?
Старый
Max
Ниже. Но не 100%
Max
Вот многие с этими 98% согласны мириться.
У всего своя цена, Хрыч
Max
Хотя я, конечно, выступаю за реплику из трёх железок, да
Старый
а вот при чтении реплика просто могла отвалиться
Max
Max
то есть при таком кейсе не важно - 2 сервера или 8, все равно данные бились
SvPupok
))) мы в репликасете 5 серверов держим сейчас
Max
Используете чтение с Secondary ?
SvPupok
Nick
Evgeny
а в чем необходимость держать в разных странах? и почему в вопросе фигурирует реплика а не шардинг?
Впски взяты у одного хостера, и там по странам , бывало, редко но был инцидент , когда полностью их датаценто отваливается, соотвественно если у меня будет три сервера в одной стране , я могу потерять всю реплику, поэтому и разные страны хотяб две, касаемо шардинга я к сожалению не силён, если есть возможность подскажите как правильно сделать , чтобы было «тру», поэтому и обратился в данную конфу.
Nick
Т.е. Имелось ввиду тупо несколько дц
yopp
Привет всем, подскажите пожалуйста есть кейс,его решение : есть приложение бекенд которого сейчас смотрит в монгу (бек-nodejs) требуется сделать реплику, тут использую replica set - вопрос если берётся 1 мастер и два дополнительно сервера , преимущество арбитра? Нужен или нет ? После Настройки реплики я в бекенде в ноду через коннектор прописываю подключение к трём базам и он постоянно будет держать коннект. Вопрос про арбитр - нужен или нет, и второй вопрос после создании реплики, я делаю пользователя , делаю экспорт базы на мастер, все остальное реплицируется самостоятельно ? Или какие либо действия надо ? Я новичок в этом сейчас, пересмотрел кучу мануалов, почему и возникла спорная ситуация
Если у вас нечётное число нод то арбитр не нужен. Задача арбитра избежать ситуации brain split, когда кластер потерял связанность и изолированными остались группы одного размера. Например было 4 ноды, в двух дц и между дц упал линк. Так как нод с обоих сторон осталось поровну, они не могут решить кто будет мастером и как следствие failover не сработает.
yopp
В вашем случае с одной нодой в одном дц и общим количеством в три штуки — арбитр скорее всего не нужен.
yopp
Про переход от stand-alone к replica set не требует ре-импорта. Вам необходимо перезапустить сервер в режиме репликации и дальше инициализировать и настроить реплику. Вот плейбук https://docs.mongodb.com/manual/tutorial/convert-standalone-to-replica-set
yopp
Та мысль, которую в очень некорректной форме пытался донести @erzentd, заключается в том, что вам надо учитывать что в монге eventual consistent репликация. Это значит что ваши изменения будут реплицированны «когда-то» (eventually).
В монге для работы с этим есть writeConcern: https://docs.mongodb.com/manual/reference/write-concern/
yopp
С помощью него вы можете выбрать в какой момент ваше приложение получит подтверждение записи. В вашем случае majority будет скорее всего достаточно.
yopp
Без использования сессий (фича из 3.6) нет полной гарантии успешности записи. С сессиями эту гарантию можно реализовать
yopp
Если вы не планируете использовать реплики для чтения, а только как failover hot standby, то на этом ваши проблемы почти закончились
yopp
Если вы планируете использовать реплики для чтения, то вам ещё надо изучить readConcern и проанализировать как задержки в репликации будут влиять на целостность ваших данных. Основная проблема тут что вы можете читать устаревшие данные.
В 3.4 появились инструменты которые могут вам частично решить ценой производительности и эту проблему (linerarizable reads)
yopp
Для мониторинга возьмите готовое решение. New relic, mongo cloud monitoring, vividcortex и т.дъ
Viktor
@dd_bb есть какие-то бест практисы по бекапу монги? База около 400гб сейчас, сделано так: дампится база с одной из реплик, архивируется и заливается дальше в другое хранилище
Viktor
Так вот архивация (7zip) сейчас отжирает очень много по времени
Max
Если архивации только смущает то есть смысл попробовать pigz или pbzip2
Они жмут по количеству процессоров.
Max
Скорость архивации имел ввиду
Viktor
Max
снепшоты файловой системы, если надо бекапить большие объемы.
думаю так, но лучше послушать спецов
Max
рсинк долгий
по сути ему каждый файл считать и скопировать надо будет.
но если нода именно под бекап - наверное это не критично
SvPupok
нода именно под бэкап. у нас база 6Тб, шардирована по 12 шардам, в каждой шарде есть отдельная бэкап нода, где в час х останавливаеццо сначала балансер, потом останавливается запись в бэкап ноду, рсинком копируются датафайлы, возобновляется репликация и включается балансер.
Max
» потом останавливается запись в бэкап ноду
это как? вы ее просто тушите? или выводите из репликасета конкретного шарда?
...и так одновременно на всех 12ти шардах?
Max
у меня тут просто тож скоро такая задача возникнет, был бы признателен за ваш опыт
SvPupok
да, по сути операция стартует одновременно на 12 серверах
Max
А у вас шард из скольки хостов состоит?
2 + 1 для бекапа ?
SvPupok
Max
Понял, спасибо
у меня 2 + арбитр
не нравится, но тем не менее.
SvPupok
SvPupok
к сожалению, после преодаления некоторого порогового значения, дамп шардированной базы становится нетривиальной задачей.
Max
А восстановлением приходилось пользоваться?
вот умер шард, к примеру.
Восстановили в нем данные из бекапа, скажем, дневной данности.
монгос с ума не сходит?
теоретически не должен - шард и шард, данные и данные
но всё же
SvPupok
ни разу не было ситуации что бы полностью умирал шард. была ситуация когда удалили часть данных, когда резервное копирование вообще еще не было настроено. но там восстановили документы по горячим следам из учетных систем. еще была ситуация, когда удалили часть документов, и их надо было вытащить из бэкапа, до полного восстановления не доходило пока что.
Max
Понял
а довливали данные сразу в шард или в монгос?
SvPupok
Max
» когда удалили часть документов, и их надо было вытащить из бэкапа
я так понял, их сдампили из hidden хоста, который под бекап
и дальше их влить обратно в монгу надо
В сам монгос же вливали?
SvPupok
нет, хидден хост так же среплицировал изменения связанные с удалением. я поднял отдельно ночной бэкап, просто как stand alone базу, сдампил оттуда нужные документы и залил в продуктивную базу через монгос.
Max
Понял
Спасибо!
SvPupok
можно еще в репликасете держать отстающую реплику, если позволяет размер оплога. например м лагом репликации в 2 часа. И если есть какой то факап в этот момент, то можно восстановиться с отстающей реплики. Но мы были вынуждены отказаться от этой затеи, потому как при интенсивной записи данных в кластер, у нас отстающие реплики не успевали синхронизироваться по оплогу, и выпадали в состояние recovery/
Max
» держать отстающую реплику,
да, я именно так и предполагал - реплики под бекап зачастую delayed и делают.
SvPupok
понимаете, нам нужна была именно резервная копия, которая могла бы храниться продолжительное время. delayed реплика - решение, когда надо откатить изменения прям по горячим следам. но при неоднородном характере записи в кластер - delayed реплика - не всегда удобна.
Max
Да, понимаю, согласен
Evgeny
@dd_bb спасибо за рекомендации, буду читать маны и пробовать делать/тестить. Вопрос все же если будет больше трёх нод в будущем ? Можно и потом и арбитр прикрутить ? Или с ним стоит сразу заморочиться ? И вопрос как правильнее, чтобы бек писал в базу, и оно реплицировалось на остальных двух нодах( пока что ) или чтобы бекенд лил инфу во все сразу , но в ввиду территориального расположения могут быть задержки, отставания и прочие проблемы, лучше тогда чтобы репликация была, в случае падения мастер- 1 сервер, данные будут писаться на ближайший ? И в случае восстановления работы сервера (мастер) данные как быстро синхронизируются , и куда в этот момент будет бекенд писать данные ?
SvPupok
@dd_bb спасибо за рекомендации, буду читать маны и пробовать делать/тестить. Вопрос все же если будет больше трёх нод в будущем ? Можно и потом и арбитр прикрутить ? Или с ним стоит сразу заморочиться ? И вопрос как правильнее, чтобы бек писал в базу, и оно реплицировалось на остальных двух нодах( пока что ) или чтобы бекенд лил инфу во все сразу , но в ввиду территориального расположения могут быть задержки, отставания и прочие проблемы, лучше тогда чтобы репликация была, в случае падения мастер- 1 сервер, данные будут писаться на ближайший ? И в случае восстановления работы сервера (мастер) данные как быстро синхронизируются , и куда в этот момент будет бекенд писать данные ?
В принципе, трёх серверов с данными вам будет достаточно, арбитры при необходимости можно ввести в любой момент. При падении мастера новый выбирается путём голосования, либо вы можете сами выставить приоритеты. При возврате мастера в работу он становится слейвом.
Hopf
Всем привет.
Подскажите, можно ли использовать $sample вместе с $near у геопоиска?
nnbphkqujhjkynr
Подскажите пару моментов с подключением монго?
Zloy-Dobry
Ты про этикет не слышал, наверное?
Mykola
Aleksey
Господа, на 3.4.13 начала падать монга. на 3 гигах памяти. ранее ей было достаточно... нагрузки там нету. это просто ci система
Aleksey
пока из замеченного падает на дебиан 8+
Oleg
Други, подскажите. монга у меня около 300гб, сейчас понадобились еще мемберы в RS. я снял дамп тачки с базой, и залил дамп на новый хост, чтобы с нуля реплика не поднималась ибо долго, но оно пишет
2018-03-01T06:25:00.834+0000 I REPL [ReplicationExecutor] could not find member to sync from
2018-03-01T06:25:00.834+0000 E REPL [rsBackgroundSync] too stale to catch up -- entering maintenance mode
2018-03-01T06:25:00.834+0000 I REPL [rsBackgroundSync] our last optime : (term: -1, timestamp: Feb 28 00:15:16:33)
2018-03-01T06:25:00.834+0000 I REPL [rsBackgroundSync] oldest available is (term: -1, timestamp: Feb 28 16:05:42:b8)
2018-03-01T06:25:00.834+0000 I REPL [rsBackgroundSync] See http://dochub.mongodb.org/core/resyncingaverystalereplicasetmember
2018-03-01T06:25:00.834+0000 I REPL [ReplicationExecutor] going into maintenance mode with 5 other maintenance mode tasks in progress
вот читаю стэк, пишут с нуля поднимать, очищать data folder
можно ли как то еще?
SvPupok
А размер оплога какой?
Oleg
configured oplog size: 2768.711669921875MB
SvPupok
Необходимо увеличить размер оплога, для того что бы его хватило на время проведения копирования
Oleg
а как понять, до какого размера ?
SvPupok
Ну разница между временем последней и первой записи, даст вам понимание операционного окна