Механизм сохраняемости Redis (RDB&AOF)

Redis задняя часть база данных сервер

Чтобы иметь возможность повторно использоватьRedisданных или для предотвращения сбоя системы нам необходимоRedisДанные записываются в дисковое пространство, то есть являются постоянными.RedisПредоставляет два разных метода сохраняемости для хранения данных на диске, один из которых называется моментальным снимком.RDB, другой называемый файлом только для добавленияAOF

RDB

что

   Записывает моментальный снимок набора данных в памяти на диск с заданным интервалом (Snapshot), он считывает файл моментального снимка непосредственно в память при восстановлении.

  Redisбудет создан отдельно (fork) Дочерний процесс для сохранения сначала запишет данные во временный файл.После завершения процесса сохранения временный файл будет использоваться для замены последнего постоянного файла. В течение всего процесса основной процесс не выполняет никаких операций ввода-вывода, что обеспечивает чрезвычайно высокую производительность.Если требуется масштабное восстановление данных и целостность восстановления данных не очень чувствительна, тоRDBпуть, чемAOFкуда эффективнее.RDBНедостатком является то, что данные могут быть потеряны после последнего сохранения.

Fork

  ForkРоль заключается в копировании процесса, который совпадает с текущим процессом. Значения всех данных (переменных, переменных среды, программных счетчиков и т. д.) нового процесса такие же, как у исходного процесса, но это совершенно новый процесс и используется как дочерний процесс исходного процесс.Rdbсохраненоdump.rdbдокумент.

Расположение конфигурации

  RedisКонфигурация в основном размещена вredis.conf, чего можно добиться, изменив файл конфигурацииRedisМногие функции, такие как репликация, постоянство, кластеризация и т. д.

Как запустить моментальный снимок RDB

  • Конфигурация моментального снимка по умолчанию в файле конфигурации
  • Заказsaveилиbgsave
Save:save时只管保存,其它不管,全部阻塞。
BGSAVE:Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。
        可以通过lastsave命令获取最后一次成功执行快照的时间。
  • воплощать в жизньflushallкоманда, также производитdump.rdbдокумент

Как восстановить

сделает резервную копию файловdump.rdbперейти кredisУстановите каталог и запустите службу

Преимущество

Подходит для крупномасштабного восстановления данных
Низкие требования к целостности и непротиворечивости данных

недостаток

Делайте резервную копию через определенные промежутки времени, поэтому, еслиredisНесчастный случайdownЕсли его удалить, все изменения с момента последнего снимка будут потеряны.

как остановить

Динамически все способы остановить правила сохранения RDB:redis-cli config set save " "

AOF(Append Only File)

что

   записывает каждую операцию записи в виде лога, которыйRedisВсе выполненные команды записи записываются (операции чтения не записываются), только файлы могут быть добавлены, но не перезаписаны,redisВ начале запуска файл будет прочитан для восстановления данных, другими словами,redisПри перезапуске команда записи будет выполняться от начала к концу в соответствии с содержимым файла журнала для завершения восстановления данных.AOF сохраняет файл appendonly.aof

Загрузка/восстановление/восстановление AOF

  • Обычное восстановление:
    • Запуск: Настройкиyes; изменить значение по умолчаниюappendonly no, изменился наyes
    • будут данныеaofСкопируйте файл и сохраните его в соответствующем каталоге (config get dir)
    • восстановление: перезагрузкаredisзатем перезагрузить
  • Аномальное восстановление:
    • Запуск: Настройкиyes; изменить значение по умолчаниюappendonly no, изменился наyes
    • Резервная копия поврежденаAOFдокумент
    • ремонт:Redis-check-aof --fixсделать ремонт
    • восстановление: перезагрузкаredisзатем перезагрузить

Rewrite

  • Что:
AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,
Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof
  • Принцип перезаписи:
AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),遍历新进程的内存中数据,
每条记录有一条的set语句。重写aof文件的操作,并没有读取旧的aof文件,
而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似。
  • Спусковой механизм:
Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。

Преимущество

  • Синхронизация на модификацию:appendfsync alwaysСинхронное сохранение, каждый раз, когда происходит изменение данных, оно будет немедленно записано на диск с низкой производительностью, но лучшей целостностью данных.
  • Синхронизация в секунду:appendfsync everysecАсинхронная работа, запись каждую секунду, если она выйдет из строя в течение одной секунды, произойдет потеря данных
  • не синхронизировано:appendfsync noникогда не синхронизировать

недостаток

  • данные из того же набора данныхaofфайл намного больше, чемrdbфайлов, восстановление происходит медленнее, чемrdb
  • aofработать эффективнее, чемrdb, эффективность стратегии синхронизации в секунду лучше, а асинхронная эффективность иrdbтакой же

Резюме (какое?)

  RDBPersistence может хранить моментальные снимки ваших данных через определенные промежутки времени.

  AOFМетод сохраняемости записывает каждую операцию записи на сервер, и при перезапуске сервера эти команды выполняются повторно для восстановления исходных данных.AOFкоманда сredisПротокол append сохраняет каждую операцию записи в конец файла.Redisвсе еще правAOFФайл перезаписывается в фоновом режиме, чтобыAOFРазмер файла не должен быть слишком большим.

  Только кэширование: если вы хотите, чтобы ваши данные существовали только при работающем сервере, вы также не можете использовать какой-либо метод сохранения.

Включить два метода сохраняемости одновременно

   В этом случае, когдаredisОн будет загружен первым при перезапускеAOFфайл для восстановления исходных данных, как в обычном случаеAOFФайл сохраняет набор данных, чемRDBНабор данных, сохраненный в файле, должен быть полным.   Данные RDB не в режиме реального времени, и когда оба используются одновременно, перезапуск сервера найдет толькоAOFдокумент. тогда ты просто используешьAOFШерстяная ткань? Автор не советует, потому чтоRDBБольше подходит для резервного копирования баз данных (AOFплохие бэкапы в постоянных изменениях), быстрых перезапусков, и не будетAOFпотенциальноbug, сохраните его в качестве меры предосторожности.

Рекомендации по производительности

так какRDBФайл используется только для целей резервного копирования, рекомендуется использовать толькоSlaveнастойчивыйRDB, и его резервную копию нужно создавать каждые 15 минут, сохраняйте толькоsave 900 1это правило.

еслиEnalbe AOF, преимущество в том, что в худшем случае будет потеряно не более двух секунд данных, а скрипт запуска проще и всегоloadмой собственныйAOFфайл в порядке. Стоимость одного состоит в том, чтобы принести прочныйIO, дваAOFrewriteпоследняя воляrewriteБлокировка, вызванная записью новых данных, сгенерированных в процессе, в новые файлы, практически неизбежна. Пока позволяет жесткий диск, его следует свернутьAOFrewriteЧастота,AOFПереопределенный базовый размер по умолчанию64Mслишком мал, можно установить5Gвыше. Когда размер по умолчанию превышает 100 % от исходного размера, его можно переписать на соответствующее значение.

если неEnable AOF, только поMaster-Slave ReplicationТакже возможна высокая доступность. сэкономить много денегIOтакже уменьшеноrewriteколебания системы. Цена еслиMaster/SlaveВ то же время он потеряет более десяти минут данных, и сценарий запуска также должен сравнить дваMaster/SlaveсерединаRDBфайл, загрузите более новый, Sina Weibo выбрала эту структуру.