Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Як я можу стежити за ходом міграції даних між осколками в mongodb


Як я можу стежити за ходом міграції даних між осколками в mongodb


Моніторинг прогресу міграції даних між осколками в MongoDB передбачає розуміння декількох аспектів того, як MongoDB керує осколливими кластерами, поведінкою процесу балансира та механізмами відстеження міграції шматок та загального здоров’я кластера.

Монгодб Шардінг розподіляє дані по декількох осколках для підтримки горизонтального масштабування. Міграція даних між осколками насамперед відбувається за допомогою міграції шматки, якими керує автоматично балансир MongoDB або може бути запущений вручну. Моніторинг цього процесу міграції має вирішальне значення для забезпечення продуктивності, доступності та збалансованого розподілу даних у кластері.

Розуміння Mongodb Sharding та балансир

У осколеному кластері дані MongoDB розділяє в шматки. Ці шматки розповсюджуються через осколки відповідно до ключа. Баланкер - це фоновий процес, який працює на первинному наборі репліки конфігурації та активно контролює розподіл даних для підтримки балансу на черепах. Балансер вирішує, коли і які шматки потрібно перенести на основі конкретних порогів, пов'язаних з різницею розміру даних по всій осколці. Міграція відбувається для забезпечення навіть розподілу даних та оптимізації ефективності запитів.

Баланкер працює прозоро, але може бути налаштований або відключений за потребою. Він мігрує шматки контрольованим чином, що дозволяє лише одну міграцію на осколок одночасно, щоб мінімізувати вплив на продуктивність. За умов високого дисбалансу (наприклад, коли різниця розмірів даних між осколками перевищує поріг â за замовчуванням, втричі перевищує налаштований розмір шматка), міграція запускається.

Перевірка балансира та статусу міграції

Для моніторингу ходу міграції SHARD корисні кілька команд та перевірок журналу:

- sh.status () або db.printshardingstatus (): ці команди забезпечують огляд стану осколювачів, включаючи розподіл шматки через осколки для кожної збірки. Хоча вони не дають прямого відсотка прогресу міграції, контекст розподілу шматок, який вони надають, може слугувати проксі для розуміння того, наскільки збалансованими даними та чи триває міграція.

- Журнали активності балансира: Баланзер реєструє свою діяльність, включаючи міграцію шматки, в журналах конфігураційних серверів та екземплярів Mongos. Моніторинг цих журналів може виявити, які шматки переміщуються, а також їх джерела та осколки призначення та будь -які помилки або затримки, що виникають під час міграції.

- Поточні міграції: MongoDB обмежує осколку на одну міграцію за один раз, але з декількома осколками він може запустити кілька міграцій паралельно кластер (до половини кількості осколків). Спостереження за активними міграціями можна здійснити опосередковано, перевіряючи журнали балансира або використовуючи адміністративні команди на конфігураційному сервері, щоб побачити міграційні блокування та лічильники, пов'язані з міграцією.

Команди та метрики для моніторингу

- Команда Balancerstatus: Запуск `sh.getBalancerstate ()` або перевіряючи кластер за допомогою команд, які виявляють активність балансира, допомагає побачити, чи ввімкнено або активний балансир.

- ChunkMigrActockTimeOut COUNT: MongoDB відстежує конкретні показники, такі як `ShardingStatistics.CountDonormoveChunkLockTimeOut`, щоб зрозуміти, чи переміщуються шматки через час через замки, що може вказувати на проблеми з міграцією або вузькі місця продуктивності.

- Команда Mongos ConnpoolStats: Моніторинг підключення до осколків за допомогою `db.runcommand ({connpoolstats: 1})` з екземпляра Mongos допомагає перевірити, чи спричиняють міграції збільшення використання з'єднання або вузьких місць на праймерах осколки. Статистика підключення вказує на розподіл навантаження.

- Моніторинг розміру даних на осколок: Запитувавши метадані бази даних Config Bactabase, можна перевірити розмір та кількість шматочків, призначених на осколок. Велика невідповідність говорить про постійні міграції або дисбаланс.

Ручний моніторинг міграції

Коли ручні міграції шматка спрацьовують за допомогою таких команд, як `MoveChunk` або` Moverange`, операція блокується до завершення міграції. Ця синхронна поведінка дозволяє негайно підтвердити успіх або невдачу міграції. Однак для довготривалого автоматизованого міграції, якими керує балансир, MongoDB не піддається жодному відсотковому відсотку прогресу.

Використання неодноразових перевірок стану через `sh.status ()` між етапами міграції допомагає зробити прогрес, спостерігаючи зменшення шматочків на джерельному осколці та збільшенням цільового осколювача.

Інструменти та інформаційні панелі

Mongodb Atlas, керована хмарна служба, надає міграційний домашній екран для візуального відстеження міграцій, включаючи їх статус та будь -які історичні міграції. Цей інтерфейс може допомогти в моніторингу в середовищах ATLAS.

У самостійних розгортаннях адміністратори часто налаштовують моніторинг приладів за допомогою інструментів моніторингу MongoDB, таких як MMS (служба управління MongoDB) або сторонні інструменти, що розбирають журнали та метрики MongoDB (наприклад, Prometheus з Grafana). Ці налаштування можуть відстежувати показники, пов'язані з активністю балансира, міграцією шматки, використанням диска та пропускною здатністю мережі, всі вони опосередковано вказують на прогрес міграції.

Обробка документів -сиріт та послідовність читання під час міграції

Під час міграції фрагментів документи в міграційному шматці копіюються в цільовий осколок, і після підтвердження документи на джерельному осколці відзначаються як сирота до очищення. Ця затримка очищення (`Orphancleanupdelaysecs`) призначена для того, щоб забезпечити постійні запити не впливають.

Важливо контролювати будь -які пропущені документи у вторинних читаннях, оскільки вторинні читання під час міграції можуть пропустити документи, якщо запити охоплюють міграційні діапазони. Поінформованість про цю поведінку є важливою при оцінці прогресу міграції та послідовності читання.

Підсумок кроків моніторингу

1. Перевірте стан осколювачів: Використовуйте `sh.status ()` регулярно для моніторингу розподілу шматка.
2. Перевірте стан балансира: Перевірте балансир ввімкнено і активно працює через `sh.getbalancerstate ()`.
3. Журнали монітора: відстежувати балансир та журнали, пов'язані з міграцією, на серверах Mongos та Config.
4. Відстежуйте кількість шматків: Збірники конфігурації запитів Метаданих Колекцій (наприклад, `Config.Chunks`) для спостереження за шматками на осколок.
5. Вивчіть статистику з'єднання: Використовуйте `connpoolStats` для виявлення незвичайних шипів з'єднання під час міграції.
6. Дивіться замки та показники міграції: Визначте тайм -аути міграції або проблеми блокування в метриках.
7. Ручні команди: Використовуйте `MoveChunk` або` moverange` для контрольованої міграції та синхронного зворотного зв'язку.
8. Інструменти моніторингу важелів: Використовуйте екрани міграції атласів або на замовлення інформаційні панелі моніторингу.
9.

За допомогою цих засобів адміністратори можуть ефективно контролювати та оцінити хід міграції даних між осколками в MongoDB, забезпечуючи безперебійні операції балансу та оптимізовану ефективність кластера. Цей моніторинг є критичним для великих кластерів, де міграції можуть зайняти значну пропускну здатність часу та мережі, безпосередньо впливаючи на продуктивність та доступність програми.