yopp
ну легко могли ошибиться в настройке драйвера, могли что-то нахимичть с чанками
yopp
может быть с топологией проблемы: не все ноды друг другу видны
Alexey
Привет, народ. А расскажите про борьбу с jumbo чанками. Скажем, есть jumbo чанки...есть ли способ посмотреть их размеры?
yopp
берём чанк с флагом jumbo. берём диапазон ключа этого чанка, делаем find с этим диапазоном и считаем размер bson :)
Alexey
эм...а как считается размер bson?)
Alexey
Object.bsonsize?
Constantin
ᅠ ᅠ ᅠ ᅠ
ребят, может ли быть ошибка с подключением драйвера 3.6+ из-за вот этого:
ᅠ ᅠ ᅠ ᅠ
The mongodb+srv option will fail if there is no available DNS with records that correspond to the hostname identified in the connection string. In addition, use of the +srv connection string modifier automatically sets the ssl option to true for the connection. You can override this behavior by explicitly setting the ssl option to false with ssl=false in the query string. https://docs.mongodb.com/manual/reference/connection-string/#dns-seedlist-connection-format
ᅠ ᅠ ᅠ ᅠ
?
Nick
потому что если видно в shard-local и не видно через mongos — значит проблема где-то на уровне карты шарда
допустим я нашел, что док находит в чанке, который по мнению монгоса находится на другом шарде, какие действия?
Alexey
а вот такой вопрос...Для того, чтобы перенести эти jumbo чанки на другие шарды надо на конфигсерверах поднять chunkSize, в этом случае надо помечать jumbo как "уже не jumbo" или монга сама их пометит при следующей попытке смигрить?
ᅠ ᅠ ᅠ ᅠ
а вы какой версии драйвер используете для кластера ботов? Вы используете питоновский?
ᅠ ᅠ ᅠ ᅠ
а версия у вас 3.6+?
ᅠ ᅠ ᅠ ᅠ
у меня тоже, не могу подключиться никак к нему
ᅠ ᅠ ᅠ ᅠ
до 3.6 нет +srv и таких проблем не возникало, а тут пишет, что нельзя
ᅠ ᅠ ᅠ ᅠ
Вы кроме того, что прописываете client = pymongo.MongoClient("mongodb+srv://kay:myRealPassword@cluster0.mongodb.net/test") db = client.test что-то еще настраивали?
ᅠ ᅠ ᅠ ᅠ
IP Whitelist у меня настроен
ᅠ ᅠ ᅠ ᅠ
может еще что-то нужно
ᅠ ᅠ ᅠ ᅠ
пишет, что +srv не должно быть, хотя я использую 3.6.1 драйвер
ᅠ ᅠ ᅠ ᅠ
у нас с подключением принцип по идее один и тот же
ᅠ ᅠ ᅠ ᅠ
давайте, буду благодарен
Nick
ну легко могли ошибиться в настройке драйвера, могли что-то нахимичть с чанками
эм, получается чтото веселое, на разных шардах есть доки принадлежащие одному чанку
ᅠ ᅠ ᅠ ᅠ
3 реплики? Это разве не старые версии так подключаются?
yopp
искать как так вышло
yopp
вероятность заливки данных мимо монгоса повышается
Nick
а не было с балансером чтонит ьсвязанное что он не домигрировал бы данные?
yopp
всё может быть, но я ставлю на заливку мимо
yopp
потому что балансировка там многоступенчатая
yopp
балансер сейчас в каком состоянии?
ᅠ ᅠ ᅠ ᅠ
то есть я Вас правильно понимаю, Вы используя драйвер 3.6+ прописали подключение старого образца?
ᅠ ᅠ ᅠ ᅠ
client=MongoClient(os.environ['database']) db=client.mydb users=db.users
ᅠ ᅠ ᅠ ᅠ
В os.environ лежит ссылка такого вида: mongodb://egor5q:password@cluster0-shard-00-00-pgt7n.mongodb.net:27017,cluster0-shard-00-01-pgt7n.mongodb.net:27017,cluster0-shard-00-02-pgt7n.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true
Nick
балансер сейчас в каком состоянии?
сейчас балансит вторую коллекцию, его отключал на время первой разметки.
Nick
сейчас балансит вторую коллекцию, его отключал на время первой разметки.
там чанки здоровые по гигу, он их почти по часу перекидывает
ᅠ ᅠ ᅠ ᅠ
важно, потому что могут возникнуть проблемы потом с несовместимостью
ᅠ ᅠ ᅠ ᅠ
со старым 3.4 работает как и у Вас, с новым нет +srv вообще никак
Nick
действия УПС
допустим даже была лажа, или касячк монги, всетаки старая уже, вопрос как мне починить данные? пока вижу только напрямую цепляться к шардам и оттуда данные тянуть и заново их заливать
Nick
печальбеда
yopp
надо было тестировать™
Nick
)))
yopp
перед тем как заливать большие массивы, чтоб потом не было больно и обидно, лучше всегда на каком-то срезе пробовать
Nick
кстаит а если я сейчас кластер перезагружу он эти данные не потеряет? т.е. я все так же смогу на конкретном шарде их юзать?
yopp
потому что на условном 1 гигабайте отлаживать быстрее чем на десятке терабайт %)
yopp
а зачем его тогда назад сливать?
Nick
только реальных данных а не их копии. сначала поигрался никаких пробелм не было, когда перелил срез на 50лямов и шардинг начал на полную работать, то вылезла такая херь
Nick
есть коллекция дохера большая (9млрд доков/12Тб/4шарда) решил выделить горячий сет в отдельную коллекцию (50млн/70Гб/4шарда) , попереливал часть данных. прошло полторы недели, чекаю каунтеры по базе и вот наткнулся
Nick
на каждом шарде raid10 из обычных, 1500рпс не напрягаясь на кластер
yopp
зоны же есть
Nick
зоны не подходят, у меня шард ключ не позволяет отзонить свежие данные от старых
yopp
в ключе даты нет?
Nick
нет
yopp
а что в ключе есть?
Nick
некоторый индентификатор устройства
Nick
с которого идут доки
yopp
и всё?
Nick
да
yopp
пойти от обратного и выселить холодные устройства? :)
Nick
все горячие
Nick
поэтмоу и зоны не подходят
yopp
нет повести печальнее
yopp
конечно отсутствие механизма изменения шард ключа — одна из самых больших проблем
Nick
причем можно было бы выделить холодные данные, но изза необхоидмости иметь доступ по ключу, в котором нет даты - вот что обламывает
yopp
а в чём проблема? date: { gte: MinKey, lte: MaxKey }
yopp
дату всегда можно ставить в постфикс индекса
yopp
хотя для временных рядов я за дату в префиксе и постфикс какой-то, который хорошо дробится
yopp
и делать скрипт, который чанк с MaxKey будет пилить по постфиксу и балансировать по шарду, чтоб когда дата новая наступила, данные размазались
Alexey
вот и у нас похожая ситуация 10 млрд 4 шарда, все в одно коллекции и ключ не позволяет дробить. и тоже идентификатор устройства
yopp
если тоже временные ряды, то вот выше
yopp
к сожалению иначе hot/cold будет сложно сделать
yopp
так можно по дате сделать зоны
yopp
и подкручивать их постепенно