повторная загрузка из RDB и продолжение записи AOF

#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. Обновленный ответ на ваш комментарий