Если Вы купили vps, некоторые поставщики обеспечивают своего рода спасательную систему, удаленно доступную, который имеет удаленный терминал для доступа к Вашей виртуальной машине, не запуская операционную систему. Если это - Ваш случай, можно загрузить спасательную систему и сделать полный образ жесткого диска. Иначе Вы просто не можете с помощью ssh.
copytruncate очень хорошо работает для ротации журнала.
конфигурация, подобная этой, должна сделать эту работу за вас:
/var/log/mongodb/*.log {
daily
missingok
rotate 5
compress
dateext
delaycompress
copytruncate
notifempty
}
У меня сработало следующее:
/var/log/mongo/mongod.log {
missingok
rotate 3
size 100M
nodateext
postrotate
/usr/bin/kill -USR1 $(cat /var/run/mongod.pid)
rm -f /var/log/mongo/mongod.log.[0-9][0-9][0-9][0-9]-*
endscript
}
Примечания:
kill
- встроенная функция Bash, но logrotate работает под / bin / sh
, который не распознает SIGUSR1
в RedHat 6.5 compress
, но это должно быть простое добавление Сервер упал для меня, если вы отправите SIGUSR1 на mongod после того, как вы сдвинули лог-файл с места с помощью логротата.
Следующий конфиг безопасен для версии, которую я тестировал - 2.6.6 на ubuntu 12.04 - в предыдущих примерах сервер упал. Положите это в /etc/logrotate.d/mongod:
/var/log/mongodb/mongodb.log {
weekly
missingok
rotate 4
compress
notifempty
create
postrotate
/usr/bin/pkill -USR1 mongod
rm /var/log/mongodb/mongodb.log.????-??-??T??-??-??
endscript
}
Смотрите: https://jira.mongodb.org/browse/SERVER-11087 для более подробной информации и предложения от Акшай Кумар, которое я использовал в вышеуказанном (используйте create вместо nocreate и cp /dev/null в лог-файле).
В более поздних релизах должна быть опция logRotate, которую вы можете использовать для переоткрытия файла - а не для его переименования - что сработает вокруг проблемы переименования - но в моей версии это не сработало (это не поддерживалось).
Смотрите: https://github.com/mongodb/mongo/commit/616461d294bd9f5054ca38b302b6fc5d70fde20c
Я протестировал это с
logrotate -v -f /etc/logrotate.d/mongod
Начиная с mongodb 3.0, вы можете изменить поведение mongodb с помощью параметра logRotate, изменив в /etc/mongod.conf
systemLog:
logAppend: true
logRotate: reopen
См. Также Руководства по Mongo .
Затем вы можете используйте эту конфигурацию logrotate:
/var/log/mongodb/*.log {
daily
rotate 30
size 50M
compress
dateext
missingok
notifempty
sharedscripts
postrotate
/bin/kill -SIGUSR1 `cat /var/lib/mongodb/mongod.lock 2> /dev/null` 2> /dev/null || true
endscript
}
Обратите внимание, что в версии 3.0 и выше не требуется убивать демон базы данных просто для ротации журнала. Обратитесь к документации здесь: