MongoDB Реплікація: як створити MongoDB Набір копій

⚡ Розумний підсумок

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

  • 🗄️ Основна концепція: Реплікація копіює ті самі дані на кілька серверів, тому інформація залишається доступною навіть у разі збою основного сервера.
  • ???? Початкова та середня: Набір реплік має один основний член, який приймає записи, та вторинні члени, які обслуговують читання.
  • ???? Створення набору: Команда rs.initiate() запускає набір реплік після запуску першого екземпляра mongod з параметром replSet.
  • Додавання учасників: Команда rs.add() підключає вторинні сервери, тоді як rs.remove() від'єднує члена від конфігурації.
  • 🔧 Вирішення проблем: Команди rs.status() та rs.printReplicationInfo() надають інформацію про стан серцевого ритму та розмір Oplog для діагностики.

MongoDB Реплікація: як створити MongoDB Набір копій

Що таке MongoDB тиражування?

Реплікацією називають процес забезпечення доступності тих самих даних на кількох MongoDB Сервер. Іноді це потрібно для підвищення доступності даних.

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

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

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

Як створити репліку MongoDB Додавання першого члена за допомогою rs.initiate()

Як згадувалося в попередньому розділі, щоб увімкнути реплікацію, нам спочатку потрібно створити набір реплік MongoDB екземпляри.

Припустимо, що для нашого прикладу у нас є 3 сервери під назвою ServerA, ServerB та ServerC. У цій конфігурації ServerA буде нашим основним сервером, а ServerB та ServerC – нашими вторинними серверами. Знімок екрана нижче дасть краще уявлення про це.

Створити репліку MongoDB

Нижче наведено кроки, які потрібно виконати для створення MongoDB набір копій разом із додаванням першого члена набору.

Крок 1) Переконайтеся, що всі екземпляри mongod.exe додано

Переконайтеся, що всі екземпляри mongod.exe, які будуть додані до набору реплік, встановлені на різних серверах. Це гарантує, що навіть якщо один сервер вийде з ладу, інші будуть доступні, а отже, інші екземпляри... MongoDB будуть доступні.

Крок 2) Усі екземпляри mongo.exe підключаються один до одного

Переконайтеся, що всі екземпляри mongo.exe можуть підключатися один до одного. З ServerA виконайте наведені нижче 2 команди.

mongo --host ServerB --port 27017
mongo --host ServerC --port 27017

Аналогічно виконайте те ж саме з решти серверів.

Крок 3) Запустіть перший екземпляр mongod.exe

Запустіть перший екземпляр mongod.exe з параметром replSet. Цей параметр надає групуping для всіх серверів, які будуть частиною цього набору реплік.

mongo --replSet "Replica1"

Де «Replica1» — це ім’я вашого набору реплік. Ви можете вибрати будь-яку значущу назву для імені набору реплік.

Крок 4) Перший сервер додано до набору реплік

Тепер, коли перший сервер додано до набору реплік, наступним кроком є ​​ініціалізація набору реплік, виконавши таку команду rs.initiate().

Крок 5) Перевірка набору реплік

Перевірте набір реплік, виконавши команду rs.conf(), щоб переконатися, що набір реплік налаштовано правильно.

Набір реплік: додавання вторинного за допомогою rs.add()

Додаткові сервери можна додати до набору реплік просто за допомогою команди rs.add. Ця команда приймає ім’я вторинних серверів і додає сервери до набору реплікації.

Крок 1) Припустимо, у вас є ServerA, ServerB та ServerC, які мають бути частиною вашого набору реплік, а ServerA визначено як основний сервер у наборі реплік.

Щоб додати ServerB та ServerC до набору реплік, виконайте такі команди:

rs.add("ServerB")
rs.add("ServerC")

Набір реплік: перенастроювання або видалення за допомогою rs.remove()

Щоб видалити сервер з набору конфігурації, нам потрібно скористатися командою “rs.remove”.

Крок 1) Спочатку завершіть роботу екземпляра, який ви хочете видалити. Це можна зробити, виконавши команду db.shutdownServer з оболонки mongo.

Крок 2) Підключіться до основного сервера.

Крок 3) Використайте команду rs.remove, щоб видалити потрібний сервер з набору реплік. Припустимо, у вас є набір реплік із ServerA, ServerB та ServerC, і ви хочете видалити ServerC з набору реплік, виконайте команду:

rs.remove("ServerC")

Усунення несправностей наборів реплік

Нижче наведено ті самі способи усунення несправностей, що виникають під час використання наборів реплік.

  1. Переконайтеся, що всі екземпляри mongo.exe можуть підключатися один до одного. Припустимо, у вас є 3 сервери з назвами ServerA, ServerB та ServerC. З ServerA виконайте 2 команди нижче:
    mongo --host ServerB --port 27017
    mongo --host ServerC --port 27017
  2. Виконайте команду rs.status. Ця команда надає статус набору реплік. За замовчуванням кожен учасник надсилатиме один одному повідомлення, які називаються повідомленнями «heartbeat», що просто вказують на те, що сервер активний та працює. Команда «status» отримує статус цих повідомлень і показує, чи є якісь проблеми з будь-якими учасниками набору реплік.
  3. Перевірте розмір Oplog. Oplog – це колекція в MongoDB який зберігає історію записів, зроблених у MongoDB , що постійно розширюється. MongoDB потім використовує цей Oplog для реплікації записів іншим членам набору реплік. Щоб перевірити Oplog, підключіться до потрібного екземпляра члена та запустіть команду rs.printReplicationInfo. Ця команда покаже розмір журналу та скільки часу він може зберігати транзакції у своєму файлі журналу, перш ніж він заповниться.

Поширені запитання

Так. Помічники ШІ можуть генерувати параметри запуску mongod, конфігурацію rs.initiate() та команди rs.add() для набору реплік. Завжди перевіряйте імена хостів, порти та пріоритети учасників, перш ніж застосовувати конфігурацію до робочих серверів.

Так. Інструменти моніторингу на основі штучного інтелекту можуть зчитувати метрики rs.status() та Oplog, щоб позначити вторинні диски, які відстають від основного. Вони можуть запропонувати такі причини, як затримка мережі або повільні диски, але інженери повинні підтвердити це, перш ніж діяти.

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

Коли первинний кандидат стає недоступним, решта членів проводять вибори та автоматично підвищують відповідного вторинного кандидата до первинного. Операції запису відновлюються після вибору нового первинного кандидата, зберігаючи...ping додаток доступний з мінімальним часом простою.

Підсумуйте цей пост за допомогою: