Это 10-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
содержание
Два режима сохранения данных Redis
В-четвертых, проблема ретроспективного анализа
Итак, как включить режим инкрементного резервного копирования AOF?
2. Измените переключатель AOF онлайн.
Вот в чем дело...
Сегодня программа, которая работала хорошо, внезапно зависла, и я спросил коллегу, который отвечает за обслуживание Redis. Коллеги рассказали, что по требованиям руководителей модифицировали режим резервного копирования Redis, а также включили режим инкрементного резервного копирования AOF (AppendOnlyFile).
Я запаниковал, когда услышал это. . .
Спросите его: "Вы изменили файл конфигурации? Тогда... перезагрузитесь?!?!"
Коллега сказал "да"
Он также сказал: «Режим RDB включен по умолчанию, а полное резервное копирование всегда включено. Чего вы боитесь?»
После его прослушивания через мое сердце прошло 10 000 альпак. . .
эммм~~~~ Почему перезагрузка создает такой большой беспорядок?
Мое сердце было разбито в то время~~~
Но я все же сдержался и рассказал ему о двух режимах локализации данных Redis.
Два режима сохранения данных Redis
1. Режим РБД
1. Режим локализации включен по умолчанию в Redis.
2. Полное резервное копирование через регулярные промежутки времени, при этом система создает резервную копию экспортированного файла dump.rdb.
save 900 1 #900秒内 至少1个key 被更新 就全量备份RDB
save 300 10
save 60 10000
3. Принцип: Redis создаст новый процесс для полного структурирования rdb. (Сам Redis читает и пишет в одном процессе)
4. Недостатки: потеря данных после резервного копирования и между сбоями, дочерний процесс нового форка будет копировать данные памяти в родительском процессе для резервного копирования, что приведет к мгновенному удвоению памяти.
2. Режим АОФ
1. Аббревиатура AppendOnlyFile — это режим инкрементного резервного копирования, а Redis по умолчанию не включен.
2. Подобно binlog базы данных mysql, записывает все записи операций Redis.
appendonly yes #开启AOF
appendfilename "appendonly.aof" #设置备份文件名
appendfsync everysec #每秒更新一次操作记录
3. Redis повторно разветвит дочерний процесс для записи на основе исходного процесса.
4. Запишите операцию записи в виде журнала, запишите ее в виде добавления файла (добавьте запись операции в тот же файл резервной копии)
3. Связь между RDB и AOF
1. Приоритет AOF>RDB
2. RDB и AOF не будут взаимодействовать друг с другом
В-четвертых, проблема ретроспективного анализа
Коллеги открывают AOF после изменения конфигурационного файла
#开启AOF
appendonly yes
перезапустил redis --server
redis-server redis.conf
AOF вступает в силу только после перезапуска Redis.
После перезапуска Redis сначала загружает файл резервной копии AOF (поскольку переключатель AOF включен), но AOF пуст, и вся память Redis загружается как пустая.
В настоящее время, как только условия для полного резервного копирования RDB будут инициированы или удовлетворены, Redis выполнит полное резервное копирование всей базы данных в памяти и перезапишет исходный файл резервной копии.
НО В это время память Redis пуста.После завершения RDB полная резервная копия пустой библиотеки памяти перезапишет исходный файл резервной копии RDB.
Следовательно, память пуста, в AOF ничего нет, и предыдущий файл резервной копии RDB также перезаписывается. . .
Идеально гладкое, не оставляющее следов техническое средство для удаления библиотеки
Я просто хотел преклонить колени перед этим большим парнем.
эммм... Подводя итог, после волны операций AOF после перезагрузки занял память, а память полностью покрыла RDB, которая была полностью заархивирована перед перезагрузкой, и данные все пропали.
Наконец, к счастью, файл резервной копии RDB для redis создается раз в день, но данные из последнего резервного копирования до перезапуска все равно не могут быть восстановлены.
-----------------End Of The Story----------------
Итак, как включить режим инкрементного резервного копирования AOF?
Решение:
Изменить переключатель AOF онлайн
Не перезапускайте Redis! ! ! Поскольку перезапуск потребует перезагрузки памяти Redis.
1. Войдите в Redis
#链接到redis
[root@mail ~]# redis-cli -a 123456[你的密码] -p 6379
2. Измените переключатель AOF онлайн.
#redis中查看AOF状态
127.0.0.1:7001> config get appendonly
1) "appendonly"
2) "no"
#在线设置AOF开关为yes
127.0.0.1:7001> config set appendonly yes
OK
127.0.0.1:7001>
3. Просмотр данных
#数据都在
127.0.0.1:7001> keys *
1) "name"
2) "gender"
3) "age"
127.0.0.1:7001>
И файлы бэкапа AOF и RDB тоже нормально сохраняются