Назад | Перейти на главную страницу

MongoDB - какой самый безопасный и эффективный способ перейти с Master-Slave на ReplicaSet?

Теперь у меня есть два сервера mongo с конфигурацией Master-Slave (все чтение-запись выполняются с помощью Master, Slave - это просто холодное резервное копирование), обслуживающих довольно требовательное веб-приложение. Я хочу переключиться на ReplicaSet из 3 серверов - у меня эти 3 уже настроены и работают (все еще не подключены к веб-приложению). Просто интересно, каков наиболее эффективный способ (кратчайшее время простоя и передача всех данных без потерь) для передачи всех данных от ведущего / ведомого устройства к RS.

Самый простой способ сделать это - следовать приведенным здесь инструкциям:

http://www.mongodb.org/display/DOCS/Upgrading+to+Replica+Sets#UpgradingtoReplicaSets-UpgradingFromReplicaPairsorMaster%2FSlave

Единственное время простоя - перезапустить mongod с новой опцией, а затем запустить команду initiate. Как только он будет установлен, вы затем добавите другие вторичные файлы, синхронизируете их, и все будет хорошо. Вы можете уйти в отставку и продвигать одну из новых машин, если захотите, после того, как они будут синхронизированы, чтобы завершить переключение.

Другой вариант - создать новый мастер, а затем использовать его в качестве основного для вашего набора реплик. Для этого используйте fsync и заблокируйте мастер, как если бы он выполнял резервное копирование (это отключает запись, поэтому будьте осторожны!):

http://www.mongodb.org/display/DOCS/Backups#Backups-WriteLock%2CFsync%2CandBackup

Затем скопируйте файлы данных с текущего мастера в основную базу данных набора реплик (сначала выключите ее), а затем запустите ее как обычно. Затем вторичные компоненты следует стереть и повторно синхронизировать с нуля с этого нового первичного звена.

Вы должны использовать ведущее устройство, потому что ведомые устройства не имеют oplog в настройке ведущего / ведомого устройства, и вы хотите, чтобы один для основного набора реплик выполнялся как можно проще.

Какое тестирование вам нужно провести, чтобы убедиться, что набор реплик работает для вас, зависит от вас, как и то, как вы управляете переключением записей из вашего приложения. Для нулевого времени простоя (кроме fsync и блокировки, когда запись невозможна) вы можете временно записать в оба, а затем переключиться, когда будете довольны. Конечно, это будет зависеть от того, сможет ли ваш сервер приложений обрабатывать удвоенный объем записи.

Самое приятное в этом то, что вы можете протестировать его, прежде чем выполнять какое-либо фактическое переключение, и посмотреть, как у вас дела.