Какво е репликация на MongoDB?
Репликацията се отнася до процеса на гарантиране, че едни и същи данни са налични на повече от един сървър на Mongo DB. Това понякога се изисква с цел увеличаване на наличността на данни.
Защото, ако основният ви сървър на MongoDB по някаква причина откаже, няма да има достъп до данните. Но ако редовно сте репликирали данните на друг сървър, ще можете да получите достъп до данните от друг сървър, дори ако основният сървър не успее.
Друга цел на репликацията е възможността за балансиране на натоварването. Ако има много потребители, които се свързват към системата, вместо да се свързват всички към една система, потребителите могат да бъдат свързани към множество сървъри, така че да има равномерно разпределение на товара.
В MongoDB множество сървъри на MongDB са групирани в набори, наречени реплики. Комплектът Replica ще има първичен сървър, който ще приеме цялата операция за запис от клиенти. Всички други екземпляри, добавени към набора след това, ще се наричат вторични екземпляри, които могат да се използват предимно за всички операции на четене.
В този урок ще научите -
- Комплект реплики: Добавяне на първия член с помощта на rs.initiate ()
- Комплект реплики: Добавяне на вторичен с помощта на rs.add ()
- Комплект реплики: Преконфигуриране или премахване с помощта на rs.remove ()
- Отстраняване на неизправности с реплики
Комплект реплики: Добавяне на първия член с помощта на rs.initiate ()
Както беше споменато в предишния раздел, за да активираме репликацията, първо трябва да създадем набор от реплики на екземпляри MongoDB.
Нека приемем, че за нашия пример имаме 3 сървъра, наречени ServerA, ServerB и ServerC. В тази конфигурация ServerA ще бъде нашият основен сървър, а ServerB и ServerC ще бъдат нашите вторични сървъри. По-долу екранната снимка ще даде по-добра представа за нея.
По-долу са описани стъпките, които трябва да бъдат изпълнени за създаване на набор от реплики, заедно с добавянето на първия член към комплекта.
Стъпка 1) Уверете се, че всички екземпляри на mongod.exe, които ще бъдат добавени към репликата, са инсталирани на различни сървъри. Това е, за да се гарантира, че дори един сървър да падне, останалите ще са налични и следователно ще бъдат налични други копия на MongoDB.
Стъпка 2) Уверете се, че всички копия на mongo.exe могат да се свързват помежду си. От ServerA издайте командите по-долу 2
mongo -host ServerB -port 27017
mongo -host ServerC -port 27017
По същия начин направете същото от останалите сървъри.
Стъпка 3) Стартирайте първия екземпляр mongod.exe с опцията replSet. Тази опция осигурява групиране за всички сървъри, които ще бъдат част от този набор от реплики.
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. От сървър А, издайте следните 2 команди
mongo -host ServerB -port 27017mongo -host ServerC -port 27017
- Изпълнете командата rs.status. Тази команда дава състоянието на набора реплики. По подразбиране всеки член ще изпраща съобщения един към друг, наречени съобщения "heartbeat", което просто показва, че сървърът е жив и работи. Командата "status" получава състоянието на тези съобщения и показва дали има проблеми с членове в набора от реплики.
- Проверете размера на Oplog - Oplog е колекция в MongoDB, която съхранява историята на записите, извършени в базата данни на MongoDB. След това MongoDB използва този Oplog, за да репликира записите на останалите членове в репликата. За да проверите Oplog, свържете се с необходимия потребителски екземпляр и изпълнете командата rs.printReplicationInfo. Тази команда ще покаже размера на регистрационния файл и колко дълго може да държи транзакции в своя регистрационен файл, преди да се запълни.
Резюме: