Мы запускаем набор реплик MongoDB с тремя участниками в производственной среде.
Нам нужно будет поддерживать клон этого набора реплик, который называется «зеркалом», для внутренней аналитики. Это зеркало не обязательно должно быть в режиме реального времени, но чем больше оно обновлено, тем лучше (может быть отставание максимум на 1 день).
Каковы наиболее подходящие методы обслуживания такой зеркальной базы данных? (Обратите внимание, что это зеркало может быть набором реплик с 1 участником или автономным экземпляром)
К вашему сведению, мы пробовали 2 варианта, но их скорость оказалась неприемлемой:
- Переигрывание оплога. Но это заняло так много времени (~ 40 часов, чтобы воспроизвести оплог из первичного набора реплсетов).
- Периодически использовал снимок из производственного набора, но новый том (созданный из снапшота) был очень медленным, потому что он не прогревался (мы используем AWS EBS, прогрев занял ~12 часов)
Update #1
: Мы также пытались сделать зеркало членом набора реплик, но мы хотели отделить зеркало от набора реплик, поэтому этот вариант не удовлетворяет требованиям.
Update #2
: Причина, по которой мы не хотим, чтобы это зеркало было членом replset: мы выполняли тяжелые запросы к этому зеркалу и привели к тому, что у него закончились кредиты ресурсов (дисковый ввод-вывод, сетевой ввод-вывод, ЦП), и экземпляр стал временно недоступен. Это изменило всю структуру набора повторений (потому что он потерял один узел). Когда экземпляр снова стал доступен, он снова изменил структуру replset (добавил еще один узел). Эти изменения сильно повлияли на реплсет.
Спасибо.