Недавно у меня была потеря данных из-за неработающего bgsave / save (он зависает, всегда давая мне сообщение об ошибке «ERR Background save already in progress»)
Это мой серверный раздел команды redis info:
# Server
redis_version:2.8.19
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:9968db13395be4aa
redis_mode:standalone
os:Windows
arch_bits:64
multiplexing_api:winsock_IOCP
gcc_version:0.0.0
process_id:5968
run_id:3cf27bdbead6bc8d37d9eb8e0de5eb7898b72ede
tcp_port:6379
uptime_in_seconds:883
uptime_in_days:0
hz:10
lru_clock:11936623
config_file:C:\Program Files\Redis\redis_store.conf
это мои настройки моментального снимка:
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename store.rdb
dir ./
сервер также работает в роли мастера. (не знаю, актуально ли это, однако: похоже, что репликация остановилась в тот же момент, когда bgsave зависает)
Я использую Redis как службу. Кажется, проблема началась, когда недавно служба упала по неизвестной (мне) причине:
У меня активна функция автоматического восстановления (которая автоматически перезапускает службу после сбоя).
С этого момента redis прекратил делать снимки (я вижу в этой форме временную метку файлов резервных копий).
Мои вопросы:
К сожалению, у меня нет информации о состоянии "зависания", так как мне пришлось перезапустить службу из-за неудачной попытки восстановления (я пытался перенести ключи в новый redis db через lua-скрипт, но это заблокировало мою службу)
Отвечая на свой вопрос:
Похоже, что сбой был вызван неправильной настройкой сервера. Размер системного файла подкачки недостаточен. Поэтому я уменьшил значение параметра maxmemory - теперь проблема, похоже, исчезла.