#redis #persistence
#повторная загрузка #сохранение
Вопрос:
Я работаю в комбинированном режиме — RDB AOF.
Я ищу способ загрузки после перезагрузки из файла RDB — в основном для быстрых перезапусков.
Кроме того, я хочу продолжить написание AOF.
Как только я узнаю, что произошла авария, я вручную загружу из AOF.
Это моя текущая конфигурация: (Я знаю, что appendonly yes
это говорит о том, что AOF будет загружен после перезапуска, я ищу ожидание загрузки из RDB и продолжаю писать AOF.)
aof-use-rdb-preamble yes
aof-load-truncated yes
aof-rewrite-incremental-fsync yes
appendfilename "appendonly.aof"
appendfsync everysec
appendonly yes
Спасибо
Ответ №1:
Redis всегда будет загружать AOF, если оба параметра включены, поскольку AOF обеспечивает лучшую долговечность.
Используя aof-use-rdb-preamble
yes
, вы уже получаете лучшее из обоих миров. Ваш AOF время от времени автоматически перезаписывается автоматически, сначала файл RDB, а затем файл AOF в конце. Смотрите redis.conf
L1157.
Поскольку вы хотите иметь предсказуемое среднее время восстановления (MTTR), вы хотите настроить параметры для автоматической перезаписи AOF, как описано в redis.conf
LL113
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
Вы также можете вручную запустить перезапись AOF с помощью BGREWRITEAOF
команды
BGREWRITEAOF
будет работать, даже если appendonly
настроен на no
. Однако обратите внимание, что при каждом вызове BGREWRITEAOF
вы получаете в значительной степени файл rdb внутри appendonly.файл aof.
Затем, если appendonly
настроено на yes
, вы также получите хвост AOF (команды добавляются только в appendonly.файл aof).
BGREWRITEAOF
и BGSAVE
являются дорогостоящими операциями и приведут к снижению производительности вашего сервера во время работы. Поэтому я предлагаю вам использовать только AOF, который уже обеспечивает сжатие журнала либо автоматически, либо при каждом запуске BGREWRITEAOF
.
Вы можете установить auto-aof-rewrite-percentage
низкое значение, скажем, 2 или 5 процентов. Затем вы можете протестировать MTTR (время, необходимое для перезапуска) с использованием обеих стратегий. Я уверен, вы обнаружите, что разница слишком мала, чтобы имело смысл комбинировать две стратегии по отдельности (RDB и AOF). AOF уже предоставляет вам RDB-inside, если aof-use-rdb-preamble
yes
Комментарии:
1. Спасибо, значит, наличие
BGREWRITEAOF
команды в corn mod иappendonly no
приведет к загрузке системы из RDB и продолжению записи AOF?2. Что вы имеете в виду под «модом кукурузы»?
3. позвольте REDIS полностью работать с RDB. Затем я хочу сохранять AOF каждую секунду в качестве фонового задания. таким образом, мои перезапуски будут очень быстрыми, и в случае сбоя я смогу работать с AOF для восстановления потерянных данных.
4. Обновленный ответ на ваш комментарий