Лучше всего сделать fsync + lock на вторичном устройстве, затем сделать снимок тома на уровне диска или тома (например, с помощью lvm2, hyper-v, btrfs), разблокировать базу данных, а затем скопировать файлы снимков со снимками. Это сводит к минимуму время простоя дополнительного устройства и его легко восстановить.
" Снимок " в этом контексте относится к функциям снимка, предлагаемым некоторыми менеджерами томов, файловыми системами и гипервизорами. По сути, это функция «копировать при записи» для блочных устройств: вместо перезаписи данных, когда этого требует ОС, она будет записывать новые данные в другое место и сохранять как старую, так и новую версию для чтения. Снимок обычно не занимает много времени, но в некоторых системах не рекомендуется хранить много снимков одних и тех же файлов, поскольку это может значительно замедлить запись в будущем.
Почему я считаю, что это лучшая стратегия для полных резервных копий :
Использование mongodump не сохранит данные индекса Индексы будут восстановлены, но восстановление индексов для восстановления может занять несколько часов - последнее, что вам нужно, когда все кричат на вас, это операция это занимает часы и не может быть ускорено.
Fsync + lock блокирует устройства записи и может блокировать устройства чтения , поэтому лучше делать это на (пассивном) вторичном, а не на первичном.
Остановка вторичной системы заполнит оплог , поэтому вам следует максимально сократить время блокировки. Вместо копирования всех файлов данных (что может занять несколько часов) во время блокировки, простое создание снимка должно занять всего пару секунд. Следовательно, пределы оплогов не имеют значения.
Все возвращается к нормальной работе, пока выполняется текущая копия , что дает вам душевное спокойствие. Единственным отличием будет более высокая нагрузка на вторичное устройство во время резервного копирования, что не должно вызывать серьезных проблем.
На ваши вопросы:
относительно блокировок в наборах реплик: сокращайте время блокировки и используйте пассивный вторичный сервер (который не может быть выбран мастером), чтобы очередь писателя не могла остановиться.
«Что делать, если за вторичное устройство проголосовали как за основное, пока выполняется резервное копирование» не может произойти, если ваша система резервного копирования пассивна
А пока я хотел бы получить простое решение и просто скопировать каталог data / db с файлами журнала и подождать с набором реплик. MongoDB работает на 64-битном сервере Windows (RackSpace Cloud).
Вы можете сделать это. Снимок томов, вероятно, по-прежнему остается лучшим способом, дающим вам всего несколько секунд простоя. Если ваши данные небольшие, простой mongodump
может быть даже проще, но убедитесь, что время восстановления приемлемо (зависит от ваших индексов).