при загрузке данных в 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, поэтому я подозреваю, что у вас не так много свободного места. Чтобы изменить размер вашего журнала операций, вам необходимо выполнить процедуру, описанную здесь: