yopp
Самый надежный с точки зрения консистентност вариант — лочить базу и делать снепшот
yopp
Делаем hidden members, перед бекарам лочим базу, дожидаемся когда все hidden members догребут оплог, останавливаем на них репликацию и делаем снепшот
Svyatoslav
yopp
и да, нужно выключить балансироващик и с CSRS тоже самое сделать
yopp
после остановки репликации базу можно анлочить
yopp
при небольшом replication lag операция должна занять несколько секунд
yopp
https://docs.mongodb.com/manual/tutorial/backup-sharded-cluster-with-filesystem-snapshots/
yopp
Не обращайте внимания на «If the journal and data files are on the same logical volume, you can use a single point-in-time snapshot to capture a consistent copy of the data files.»
Тут имеется ввиду storage level consistency. Консистентность данных между двумя и более шардами это очевидно не гарантирует
yopp
Там есть рецепт с маркером в специальной коллекции, но тут тоже такая история что по хорошему его надо на всех шардах одновременно воткнуть, а это нетривиально. Проще всего временно локнуть
Svyatoslav
yopp
монгосы и держат карту чанков
yopp
в целом, для клиента совершенно не важно с кем он соединяется
yopp
по этому нужны монгосы, которые работают как роутеры, при сохрании обычного протокола. монгосы кешируют карту шарда с конфиг серверов и дальше уже на базе этой карты роутят запросы
Svyatoslav
монгосы и держат карту чанков
Эту часть я знаю и понимаю, но дальше как? Через кого идут клиентские запросы
Поясню вопрос: у меня разрабочики утверждают, что при secondaryPrefered у них работает insert, но не работает select
yopp
а в реплике есть secondary хоть один?
Svyatoslav
Да. У каждой реплики по одному secondary
yopp
Клиентские запросы в шард _всегда_ должны идти через монгосы
yopp
Если это не так, значит вы очень крупно накосячили
Svyatoslav
Это так. Значит что-то с фаерволом
Svyatoslav
Спасибо
yopp
Все монгосы должны видеть все остальные ноды в кластере
yopp
А как secondaryPrefered на вставку вообще получился?
yopp
Невозможно вставить данные на secondary, только на текущий primary
Svyatoslav
В доке так написано
yopp
Эм. secondaryPrefered вообще к вставке никакого отношения не имеет. Это read concern
yopp
тьфу, не concern а preference
yopp
Ого. А что, 3.6 таки зарелизили? https://docs.mongodb.com/manual/release-notes/3.6/
yopp
https://www.mongodb.com/blog/post/announcing-the-general-availability-of-mongodb-36
yopp
Stable: 3.6.0 (Dec 1, 2017), Bugfix: 3.4.10 (Oct 31, 2017)
3.6.0: https://docs.mongodb.com/manual/release-notes/3.6
3.4.10: https://docs.mongodb.com/manual/release-notes/3.4/#oct-31-2017
3.2.17: https://docs.mongodb.com/manual/release-notes/3.2/#sept-28-2017
yopp
yopp
Клиенты по спецификации могут после соединения с монгосом получить список дополнительных серверов, кроме тех что в uri и закешировать его
yopp
но это касается опять-же только mongos
yopp
yopp
Там обычно всё написано
yopp
Вообще с secondaryPrefered фоллбек на праймари должен идти, даже если secondary не доступны
yopp
ОООООО
yopp
https://docs.mongodb.com/manual/reference/connection-string/#connections-dns-seedlist
yopp
In addition to the standard connection format, MongoDB supports a DNS-constructed seedlist. Using DNS to construct the available servers list allows more flexibility of deployment and the ability to change the servers in rotation without reconfiguring clients.
yopp
Дискач!
yopp
Даже более того, почти двойной дискач:
The DNS seedlist connection string can also provide options as a query string, with a trailing “/?” as in the standard connection string above. However, the +srv appended to the standard connection string signals the driver to query the DNS for options as a configured TXT record.
Only two options are available for configuration via a TXT record – replicaSet and authSource, and only one TXT record is allowed per server. If multiple TXT records appear in the DNS and/or if the TXT record contains an option other than replicaSet or authSource, an error will be thrown by the driver.
Svyatoslav
Svyatoslav
Спасибо за информацию
yopp
Глядишь к 4.0 и x509 в порядок приведут
yopp
Ничоси: An index can cover a query on fields within nested documents.
Anonymous
Ребят, всем привет) возник такой вопрос: иногда надо на удаленном сервере посмотреть данные с монги, удалить что-то, протестировать или измнеить, для локальной такого рода работы я использую Robo 3T, посоветуйте как лучше работать с удаленной? открывать монгу на доступ извне и подключаться к ней? или есть способы более надежные и практичные? Прошу поделиться тех, кто реально в боевых проектах чем пользуется) Большое спасибо)
yopp
SSH тунель
yopp
И прочие бастионы
Anonymous
нагуглил такое https://www.8host.com/blog/ustanovka-i-zashhita-mongodb-v-ubuntu-16-04/
yopp
Но вообще ходить в монгу на продакшене руками — к беде
yopp
Большой
Anonymous
yopp
А зачем вам туда ходить?
Anonymous
Anonymous
на ты плиз, а то не удобно))
Anonymous
Ребят, кто нить может растолковать по поводу подключения по ssh к монге?
Anonymous
Есть такая строка ssh -fN -L 6666:localhost:27017 user@host
Anonymous
что значит user@host
Anonymous
и как потом подключиться
CC-BY-SA-4.0/Docker-ce30.0
что?
CC-BY-SA-4.0/Docker-ce30.0
как это к монге по ссш
CC-BY-SA-4.0/Docker-ce30.0
на хост где крутится монга?
Dan
O.o
Anonymous
CC-BY-SA-4.0/Docker-ce30.0
зачем тунель?
CC-BY-SA-4.0/Docker-ce30.0
откуда строка кстати?
CC-BY-SA-4.0/Docker-ce30.0
а тунель зачем?
CC-BY-SA-4.0/Docker-ce30.0
Или тунель с хоста с монгой куда-то
CC-BY-SA-4.0/Docker-ce30.0
ну это дичь какая-то.
CC-BY-SA-4.0/Docker-ce30.0
типа чтобы сделать mongo -h localhost -p 6666 чвтоли
Anonymous
https://docs.mongodb.com/compass/master/connect/
Anonymous
Вот есть еще такое
Anonymous
Но чет не могу вкурить
CC-BY-SA-4.0/Docker-ce30.0
можно просто зайти на монго хост и набрать mongo
Anonymous
И вот еще нашел https://stackoverflow.com/questions/16619598/sync-mongodb-via-ssh/16620593#16620593
CC-BY-SA-4.0/Docker-ce30.0
Так.