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

Изменение размера журнала операций MongoDB

при загрузке данных в mongodb я продолжаю получать «ошибка RS102 слишком устарел, чтобы догнать» ... После исследования я обнаружил, что мой размер oplog по умолчанию для 32-битной машины Linux слишком мал. Хотелось бы чтобы было 300 мб .. Кто-нибудь знает, как сделать?

MongoDB версии 3.6 +

В MongoDB version 3.6 легче изменить размер oplog во время выполнения без перезапуска.

Проверить текущий размер журнала операций

use local
db.oplog.rs.stats().maxSize

Чтобы изменить размер журнала операций на 300 МБ

db.adminCommand({replSetResizeOplog: 1, size: 300})

MongoDB версии менее 3.6

Для более старых версий вам необходимо выполнить следующие шаги:

Выключите основной сервер

use admin

db.shutdownServer()

Запустить основной как автономный и запустить на другом порту, скажем, 37017

Войдите в mongo через порт 37017

mongo --port 37017

Удалить старое содержимое в локальной базе данных

Для безопасности сделайте резервную копию старого журнала перед сбросом

mongodump --db local --collection 'oplog.rs' --port 37017

Отбросьте старое содержимое в локальную базу данных

use local

db.oplog.rs.drop()

db.me.drop()

db.replset.election.drop()

db.replset.minvalid.drop()

db.startup_log.drop()

Коллекция Replset не может быть удалена, поэтому удалите ее с требуемым идентификатором:

db.system.replset.remove({ "_id" : "your_replsetname"})

Создайте новый журнал операций требуемого размера, скажем, 300 МБ

db.runCommand( { create: "oplog.rs", capped: true, size: (300 * 1024 * 1024) } )

Также вы можете указать размер журнала операций в МБ в файле mongod.conf, скажем, для 300 МБ:

replication:
   oplogSizeMB: 300

Надеюсь это поможет !!!

По умолчанию oplog составляет 5% свободного места в Linux, поэтому я подозреваю, что у вас не так много свободного места. Чтобы изменить размер вашего журнала операций, вам необходимо выполнить процедуру, описанную здесь:

http://docs.mongodb.org/manual/tutorial/change-oplog-size/