MongoDB Реплікація: як створити MongoDB Набір копій
⚡ Розумний підсумок
MongoDB Реплікація зберігає ідентичні дані на кількох MongoDB сервер, захищаючи від збоїв сервера та забезпечуючи балансування навантаження. Згруповано MongoDB екземпляри утворюють набір реплік з одним основним членом, який приймає записи, та вторинними членами, які обробляють операції читання та відновлення після відмови.
Що таке MongoDB тиражування?
Реплікацією називають процес забезпечення доступності тих самих даних на кількох MongoDB Сервер. Іноді це потрібно для підвищення доступності даних.
Тому що якщо ваш головний MongoDB Сервер вимикається з будь-якої причини, доступу до даних не буде. Але якщо ваші дані реплікувались на інший сервер через регулярні проміжки часу, ви зможете отримати доступ до даних з іншого сервера, навіть якщо основний сервер вийде з ладу.
Ще однією метою реплікації є можливість балансування навантаження. Якщо до системи підключається багато користувачів, замість того, щоб усі підключалися до однієї системи, користувачів можна підключити до кількох серверів, щоб рівномірно розподілити навантаження.
In MongoDB, множинні MongoDB Сервери групуються в набори, які називаються наборами реплік. Набір реплік матиме первинний сервер, який прийматиме всі операції запису від клієнтів. Усі інші екземпляри, додані до набору після цього, називатимуться вторинними екземплярами, які можна використовувати переважно для всіх операцій читання.
Як створити репліку MongoDB Додавання першого члена за допомогою rs.initiate()
Як згадувалося в попередньому розділі, щоб увімкнути реплікацію, нам спочатку потрібно створити набір реплік MongoDB екземпляри.
Припустимо, що для нашого прикладу у нас є 3 сервери під назвою ServerA, ServerB та ServerC. У цій конфігурації ServerA буде нашим основним сервером, а ServerB та ServerC – нашими вторинними серверами. Знімок екрана нижче дасть краще уявлення про це.
Нижче наведено кроки, які потрібно виконати для створення 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")
Усунення несправностей наборів реплік
Нижче наведено ті самі способи усунення несправностей, що виникають під час використання наборів реплік.
- Переконайтеся, що всі екземпляри mongo.exe можуть підключатися один до одного. Припустимо, у вас є 3 сервери з назвами ServerA, ServerB та ServerC. З ServerA виконайте 2 команди нижче:
mongo --host ServerB --port 27017 mongo --host ServerC --port 27017
- Виконайте команду rs.status. Ця команда надає статус набору реплік. За замовчуванням кожен учасник надсилатиме один одному повідомлення, які називаються повідомленнями «heartbeat», що просто вказують на те, що сервер активний та працює. Команда «status» отримує статус цих повідомлень і показує, чи є якісь проблеми з будь-якими учасниками набору реплік.
- Перевірте розмір Oplog. Oplog – це колекція в MongoDB який зберігає історію записів, зроблених у MongoDB , що постійно розширюється. MongoDB потім використовує цей Oplog для реплікації записів іншим членам набору реплік. Щоб перевірити Oplog, підключіться до потрібного екземпляра члена та запустіть команду rs.printReplicationInfo. Ця команда покаже розмір журналу та скільки часу він може зберігати транзакції у своєму файлі журналу, перш ніж він заповниться.


