yopp
Или изобретать какие-то маркеры для миграции, что очень сложно, особенно если документы не только добавляются, но и обновляются
Valdis
Самый надежный вариант это поднять репликацию
Там в чем проблема. Не просто физически, а допустим есть на одном серваке бд с названием a и там 3 коллекции. На другом серваке бд b и там 7 коллекций. После миграции должна быть только b и там 10 коллекций включая все данные из бд a
yopp
Как мне кажется, в этом случае самый простой вариант это обеспечить доступ к базам на время миграции, остановить запись обе базы, сделать дампы, восстановить дампы на новом сервере, если нужно всё дампы слить в базу с одним названием то указать необходимые флаги при восстановлении дампа
yopp
Ваш скрипт миграции при всех раскладах это попытка по новому изобрести mongodump из-за административных ограничений. Это очень дорого и вероятнее всего не даст гарантии консистентности данных. Дешевле временно снять административные ограничения и вопспольвоватться штатными инструментам
Valdis
понял. спасибо
Anonymous
можно делать дамп во время записи в базу?
Nick
можно делать дамп во время записи в базу?
https://docs.mongodb.com/manual/reference/program/mongodump/#cmdoption-mongodump-oplog
Nikolay
Насколько хороша идея ресторить дамп монги 3.6 на 4.0 сразу?
yopp
Нормальная
Nikolay
Тэкс, а почему может такой еррор лог быть в процессе рестора? error: EOF Не очень информативно
Nick
так там нет информации
Сейчас перепроверил есть, в двух словах есть опция позволяющая во время дампа сохранять дельту изменений. Возможно сайт лагает попробуйте еще
Anonymous
как опция называется
Nick
Сегодня у меня тож та страница не сразу грузанулась. Но с мобилы вск ок. Опция --oplog
Anonymous
C# Driver. Можно ли вернуть созданный Id при вставке InsertOne/InsertOneAsync ? Или какой-то другой метод использовать ? Синхронный - void Асинхронный - Task
Anonymous
http://mongodb.github.io/mongo-csharp-driver/2.10/apidocs/html/M_MongoDB_Driver_MongoCollectionBase_1_InsertOneAsync_1.htm
Dmitriy
C# Driver. Можно ли вернуть созданный Id при вставке InsertOne/InsertOneAsync ? Или какой-то другой метод использовать ? Синхронный - void Асинхронный - Task
я вообще не знаю c#, но самый простой способ, который вижу (и сам использую в других яп) - это сгенерить значение для поля _id на клиенте, т.е. в приложение. тогда его и возвращать не нужно будет
Anonymous
Можно, но незачем. Mongo сама всё делает. И даже возвращает его. Вопрос конечно к драйверу.
Dmitriy
Можно, но незачем. Mongo сама всё делает. И даже возвращает его. Вопрос конечно к драйверу.
ну зачем вопрос риторический, возможно для того чтобы не гонять лишние байтики по tcp, а возможно для того, чтобы обеспечивать управляемость данными со стороны приложения
Anonymous
Байтики все равно полетят либо в одну сторону, либо в другую.
Dmitriy
но можно избежать того чтобы они в обе бегали) но это уже холивар не по теме канала)
Vova
В драйвере C#
Anonymous
Автоматически не создаётся и не зачем. Можно создать и отправить, только вот тоже незачем.
Vova
Просто факт - если ты в модельке не задашь айди вручную, то запишет в бд с айдишником null, 0, ObjectId("0000000000...") и т.д.
Anonymous
Если в моделе не запишешь id, Монга в любом случае в документе создаст свой id, а вот при чтении этой модельки ты получишь ошибку, что такого поля у тебя нет.
Vova
Если в моделе не запишешь id, Монга в любом случае в документе создаст свой id, а вот при чтении этой модельки ты получишь ошибку, что такого поля у тебя нет.
Аа, вот что ты имеешь в виду, вообще отсутствие поля _id в моделе. Тогда тебе поможет атрибут [BsonIgnoreExtraElements]
Vova
Но вот прочитать ты его уже не сможешь
Vova
Либо попробуй ещё написать так [BsonIgnoreIfDefault] public ObjectId Id { get; set; }
Anonymous
нет, поле id ,я счиатаю в моделе обязательным. Вопрос про запись документа, и возврат его соданного значения id в Монго.
Vova
Оно так не работает
Anonymous
ок, спасибо
yopp
Многие драйвера/odm делают это автоматом
yopp
$or отражает вашу формулировку запроса. Почему такой запрос вас не устраивает?
yopp
у вас в условии «либо», что синоним «или» ($or). Такие запросы эффективнее всего писать так, как они звучат на языке бизнес логики. Потом легче будет понять :)
Anonymous
Многие драйвера/odm делают это автоматом
🤦‍♂️, в С# драйвер id задаёт автоматом. Только инспектором смог это увидеть.
Vitaly
Добрый вечер, подключаюсь к mongo с помощью параметров все ок mongo --tls --tlsCertificateKeyFile /mongodb/nopasswd.pem --tlsCAFile /mongodb/CAcerts.pem --host 127.0.0.1:27017 --authenticationDatabase admin с помощью uri mongo "mongodb://127.0.0.1:27017/?authSource=admin&tls=true&tlsCertificateKeyFile=/mongodb/nopasswd.pem&tlsCAFile=/mongodb/CAcerts.pem" ошибка SSL peer certificate validation failed: self signed certificate in certificate chain Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SSLHandshakeFailed: SSL peer certificate validation failed: self signed certificate in certificate chain подскажите, в чем может быть причина?
yopp
Либо там не вся цепочка
yopp
Либо у вас на сервере вашего CA нет в списке
yopp
Не помню точно
yopp
Короче с какой-то стороны цепочка подписей не верифицируется
yopp
Логичнее всего что на сервере, наверное
Anonymous
да чеж такое почему mongodb это ваш падает..
Anonymous
гик озу
Anonymous
cacheSizeGB: 0.3
Anonymous
что еще можно сделать?
madspectator
что еще можно сделать?
В логи посмотреть.
Anonymous
В логи посмотреть.
2020-01-16T21:27:10.605+0000 I NETWORK [conn1] end connection 127.0.0.1:34290 (0 connections now open) 2020-01-16T21:27:12.515+0000 I STORAGE [signalProcessingThread] shutdown: removing fs lock... 2020-01-16T21:27:12.532+0000 I CONTROL [signalProcessingThread] now exiting 2020-01-16T21:27:12.532+0000 I CONTROL [signalProcessingThread] shutting down with code:0
Anonymous
я так понимаю сама какая-то служба убивает, когда видит что озу на хосте закончился
Anonymous
что с этим делать?
Anonymous
как можно нормально ограничить использование озу? почему в начале оно жрет не так много, а потом всю память забирает?
madspectator
Монга жрёт память, когда вы обращаетесь к данным, она подгружает в память сами данные, а также индексы.
Anonymous
что с этим можно сделать?
Anonymous
мне не нужны данные в памяти
madspectator
С чем с этим? Надо понять для начала, почему mongodb прекращает работу.
Anonymous
и ос убивает его
Anonymous
потом что памяти нет в системе
Anonymous
как с этим бороться?
madspectator
Как вы поняли, что ОС убивает mongodb? Вы увидели это в логах где-то?
Egor
я только записываю в базу, ничего не читаю
индексы есть ? попробуй все удалить
Anonymous
индексы есть ? попробуй все удалить
не, удалять нельзя, зачем
Egor
так вы сами говорите, вам только на вставку
Anonymous
ну я не менял настройки, значит есть
Anonymous
да
Egor
ну при вставке монга может дергать индексы а те в памяти висят
yopp
cacheSizeGB: 0.3
Эта ручка не гарантирует ничего, кроме того что объём памяти под кеш будет указанного размера
Anonymous
Никак, только через контейнер
так и в контейнере оно упадет, не?
yopp
В монге нет инструментов ограничения памяти.
yopp
В контейнере не будет оом, плюс если контейнеру выделить квоту на память, то оом в рамках этой квоты не должен её отстреливать