Redis Tutorial: Redis persistência

modo de persistência Redis

RDB Snapshot

esboço

Por padrão, instantâneos de banco de dados Redis armazenado em um arquivo binário chamado dump.rdb no. Você pode definir o Redis, quando "N segundos conjunto de dados tem pelo menos M muda" esta condição é satisfeita, automaticamente salvar um conjunto de dados.

Você também pode fazer conjuntos de dados Redis armazenados chamando o SAVE ou BGSAVE, manualmente. Por exemplo, o seguinte é fornecido Redis se reunirá "pelo menos 60 segundos foram alterados chave 1000" quando a condição, automaticamente salvar um conjunto de dados:

salvar 60 1000

Esta abordagem é chamada instantâneos persistentes snapshotting.

Quando um instantâneo

As seguintes situações surgirão Redis instantâneo de dados na memória

  • Os usuários enviam comando bgsave (desta vez Redis vai desembolsar um processo filho, o processo filho é responsável por gerar o arquivo no disco rígido, o pai é responsável por continuar a aceitar comandos)
  • Os usuários enviam um comando Salvar (comando e bgsave diferente, após o envio do comando Salvar, o sistema cria o sistema não vai mais receber o novo comando antes o instantâneo for concluída, em outras palavras salvar comando irá bloquear por trás do comando, mas não bgsave)
  • configuração do perfil do usuário tais comandos semelhantes salvar 60 mil
  • Isso significava que, desde a data bem sucedida último instantâneo, se satisfeito "Há 1.000 escrito no prazo de 60 segundos," esta condição, o sistema liga automaticamente para bgsave, se houver vários arquivo de configuração de economia de comando, apenas para atender uma chamada comando bgsave
  • Os usuários enviam um desligamento, o sistema irá primeiro comando Salvar bloqueando cliente e, em seguida, encerrar o servidor
  • Quando o Senhor enviou a partir do servidor quando a arquitetura servidor primário do comando sync para executar a operação de cópia, apenas o servidor primário era nenhuma operação bgsave, o servidor principal vai executar a operação bgsave.

snapshots de configuração

save 60 1000
stop-writes-on-bgsave-error no rdbcompression yes
dbfilename dump.rdb
dir ./

trabalho

Quando Redis necessidade dump.rdb para salvar o arquivo, o servidor executa as seguintes ações: Redis chama garfos têm ambos os processos pai e filho.

O conjunto de dados processo filho é gravado em um RDB arquivo temporário.

Quando o processo filho para completar a escrita de um novo arquivo de RDB, Redis substituir o arquivo original com o novo arquivo RDB RDB, e excluir o antigo RDB arquivo. Esta forma de trabalhar faz Redis pode ser copiado benefício (copy-on-write) do mecanismo de gravação.

Acrescentar apenas as operações de arquivo (Anexar somente fi le, AOF)

esboço

O recurso instantâneo não é muito durável (dura ble): Se por algum motivo Redis causado o tempo de inatividade, o servidor perderá o mais recentemente escrito, e esses dados ainda não são salvos para o instantâneo. A partir da versão 1.1, Redis acrescenta uma maneira persistente completamente durável: AOF persistência.

AOF forma, você pode abrir o arquivo de configuração:

appendOnly sim

De agora em diante, sempre que uma mudança Redis executar conjuntos de dados de comando (tais como SET), este comando será anexado ao arquivo final AOF. Neste caso, quando Redis reiniciado, o programa pode atingir o objectivo de conjuntos de dados de reconstrução por comandos re-execução no AOF arquivo.

reescrita log

Como o modo de AOF operação é continuamente acrescentados ao final do arquivo de comando, assim com o comando aumentando a gravação, o volume de documentos AOF se tornará cada vez maior. Por exemplo, se você chamar 100 vezes incr em um contador, por isso só para salvar o valor atual do contador, arquivo AOF você precisa usar 100 registro (entrada). Na prática, no entanto, usar o comando SET tem apenas um grande o suficiente para manter o valor atual do contador, e os restantes 99 registros são realmente redundante.

Para lidar com esta situação, Redis suporta uma característica interessante: você pode, sem interromper os clientes do serviço, para documentos AOF para a reconstrução

(Reconstrução). BGREWRITEAOF executar comandos, Redis AOF irá gerar um novo arquivo, este arquivo contém os comandos necessários para reconstruir, pelo menos, o conjunto de dados atual. Redis necessidade 2.2 BGREWRITEAOF para executar manualmente o comando; Redis 2.4, você pode automaticamente gatilho AOF reescrita, informações específicas, consulte um arquivo de configuração exemplo 2.4.

Como AOF durável

Quanto tempo antes que você possa configurar Redis vai fsync dados no disco em primeiro lugar. Há três maneiras:

Cada vez que um novo comando é adicionado ao documento AOF sobre a implementação de um fsync: muito lento, muito seguro

fsync uma vez por segundo: rápido o suficiente (e RDB uso quase persistente), e apenas um segundo de perda de dados em caso de falha. Nunca fsync: os dados para o sistema operacional de manusear. Mais rápido e escolha menos seguro.

(e também o padrão) medidas recomendadas para fsync uma vez por segundo, esta estratégia pode levar em conta a velocidade fsync e segurança.

Se o arquivo está corrompido AOF como fazer?

O servidor pode ser desligado quando o programa está sendo ficheiro AOF para a escrita, se o tempo de inatividade causado erro de arquivo AOF (corrupto), reinicie Redis em AOF se recusará a carregar este arquivo, assegurando a consistência dos dados não será destruído. Quando isso acontece, você pode usar os seguintes métodos para reparar os erros dos documentos AOF:

  1. Criar um backup para o arquivo AOF existente.
  2. Usando o Redis fornecido de Redis-check-AOF procedimentos, o original de conserto de arquivo AOF: Redis-check-AOF-fi x
  3. (Opcional) utilizando di ff-u contraste reparado backup de arquivos AOF AOF e o arquivo original para ver as diferenças entre dois arquivos.
  4. reinicialização do servidor Redis, espera arquivo AOF reparação carga do servidor e recuperação de dados.

princípio reescrita AOP

AOF reescrita e RDB criar um instantâneo, como é o uso inteligente de mecanismo de copy-on-write: Redis executar fork (), e agora tem dois processos pai e filho.

O conteúdo do novo processo filho começou arquivo AOF gravados em um arquivo temporário.

Para todos os novos execução comando de escrita, o processo pai enquanto eles se acumulam em um cache de memória, enquanto que estas mudanças irão acrescentar ao AOF arquivo existente, mesmo neste tipo de reescrever a meio caminho do arquivo existente AOF ainda seguro.

Quando o processo filho é um trabalho reescrita completa, ele envia um sinal para o processo pai, o processo pai depois de receber o sinal, todos os dados adicionais na memória cache para o fim do novo arquivo AOF.

Obter! Agora Redis atomicamente substituir o arquivo antigo com um novo arquivo, depois de todos os comandos serão adicionados diretamente para o final do novo arquivo AOF.

Como mudar de RDB maneira de AOF maneira

2.2 ou posterior Redis, pode reiniciar sem mudar de RDB para AOF: criar um arquivo de backup para a última dump.rdb.

O backup em um local seguro.

Executar os dois comandos a seguir:

-redis-cli con fi g set appendOnly sim Redis-cli con fi g definir save “”

Certifique-se de que o comando de gravação está corretamente anexado ao arquivo final AOF.

O primeiro comando abre AOF apresenta: Redis irá bloquear até que o arquivo é criado até a conclusão da AOF inicial, após Redis continuará a processar o comando de solicitação e inicia um comando de gravação anexada ao arquivo final AOF.

A segunda função execução de comandos para fechar RDB. Este passo é opcional, se você preferir, você também pode usar o RDB e AOF ambas as funções de persistência simultaneamente.

Importante: Não se esqueça de abrir a função AOF em redis.conf in! Caso contrário, após a reinicialização do servidor, antes de ser esquecido por configurar as definições CONFIG SET, o programa para iniciar o servidor de acordo com a configuração original.

AOF e a interacção entre o RDB

No número da versão 2.4 ou superior Redis, a execução BGSAVE processo, não pode ser realizada BGREWRITEAOF. Por outro lado, no curso da execução BGREWRITEAOF, você não pode executar BGSAVE. Isso evita que dois processos Redis fundo ao mesmo tempo uma grande quantidade de S operações / I de disco.

Se BGSAVE está sendo realizada, e que o usuário explicitamente invocar comando BGREWRITEAOF, o servidor responderá a um status do usuário OK, e informar o usuário, BGREWRITEAOF foi programado para ser executado: BGSAVE Uma vez terminado, BGREWRITEAOF começará oficialmente. Quando Redis começar, se RDB AOF persistência e persistência foram abertas, o programa dará prioridade ao uso de arquivo de AOF para restaurar o conjunto de dados porque AOF arquivos de dados salvos é geralmente o mais completo.

AOF VS RDB

RDB forma persistente podem ser espaçadas capaz de armazenar um instantâneo de seus dados em um determinado momento.

AOF persistente registradas a cada operação de gravação para o servidor quando a reinicialização do servidor irá re-executar estes comandos para restaurar os dados originais, comando AOF para salvar um protocolo adicional Redis cada operação de gravação no final do arquivo .Redis também na AOF arquivos para o fundo reescrito para que AOF

O tamanho do arquivo não será muito grande.

Se você quer apenas existe seus dados no momento em que o servidor está em execução, você não pode usar qualquer maneira persistente.

Você também pode abrir dois tipos de persistência simultaneamente, neste caso, quando Redis reiniciar arquivo carga AOF prioridade para restaurar os dados originais, como armazenado em circunstâncias normais AOF conjunto de dados de arquivo que o arquivo é salvo RDB ao conjunto de dados completo.

A coisa mais importante é entender o RDB e AOF persistência de maneiras diferentes, vamos RDB forma persistente para começar:

vantagens e desvantagens RDB

vantagem

RDB é um arquivo muito compacto, que detém algum ponto no tempo foi o conjunto de dados, ideal para conjuntos de dados de backup, como o que você pode salvar os dados nas últimas 24 horas em cada um dos tempos, preservando os últimos 30 dias todos os dias de dados, de modo que mesmo se um problema você pode restaurar para uma versão diferente do conjunto de dados de acordo com a demanda.

RDB é um arquivo compacto, único, facilmente transferidos para outro centro de dados remoto ou S3 da Amazon (pode ser criptografada), ideal para recuperação de desastres.

RDB arquivo RDB quando você salvar o apenas as necessidades de pais a fazer é garfo um processo filho, então todo o trabalho feito pela criança, o pai não é obrigado a fazer outras operações de IO, então RDB forma persistente para maximizar o desempenho do Redis .

Comparado com o AOF, ao restaurar grandes conjuntos de dados, forma RDB mais rápido.

deficiência

O caso se você quiser parar de trabalhar acidente Redis (por exemplo, falha de energia) dos dados em falta para dizer o mínimo, o RDB não é para você. Embora seja possível configurar diferentes salvar pontos de tempo (por exemplo, a cada cinco minutos e o conjunto de dados tem 100 operação de gravação) é Redis completas para salvar todo o conjunto de dados é um trabalho relativamente pesado, normalmente você vai a cada 5 minutos mais longos ou efectuar um inteiro guardar, em caso de paradas não planejadas Redis, você pode perder alguns dados minuto.

RDB requer processo filho garfo frequentes para salvar o conjunto de dados para o disco rígido, quando o conjunto de dados é relativamente grande quando, processo de garfo é muito demorado, pode levar a Redis dentro de alguns milissegundos não pode responder às solicitações do cliente. Huge se o conjunto de dados e menor desempenho da CPU não é uma situação boa, esta situação vai durar um segundo, AOF também precisa garfo, mas a freqüência reescrever o arquivo de log que você pode ajustar para melhorar a durabilidade do conjunto de dados.

AOF vantagens e desvantagens

benefícios -

AOF fará Redis seu uso mais duráveis: Você pode usar diferentes estratégias fsync: Não fsync, fsync por segundo, cada vez para escrever usando a estratégia fsync fsync padrão por segundo, o desempenho Redis ainda é muito bom (fsync é feita. discussão de fundo para o processamento, o segmento principal será tentar lidar com as solicitações do cliente), caso de falha, você perde um máximo de 1 segundo de dados.

AOF arquivo é um arquivo de log única adicional, por isso não write procurar, mesmo que por algum motivo (espaço em disco está cheio, o processo de escrever, etc.) não é um comando completo de gravação, você também pode uso redis-check-AOF ferramentas para corrigir esses problemas.

Quando Redis AOF pode tornar-se demasiado grande tamanho do arquivo, automaticamente em segundo plano reescrita da AOF: AOF novo arquivo após o comando sobrescrever contém um conjunto mínimo de dados necessários para restaurar a coleção atual. Reescrever toda a operação é absolutamente seguro, porque, no processo de criação de um novo arquivo Redis AOF, o comando continuará a anexar a um dentro do arquivo AOF existente, mesmo durante o tempo de inatividade reescrita arquivos AOF existentes não serão perdidos . Uma vez que o novo arquivo AOF é criado, Redis irá mudar do velho para o arquivo AOF AOF novo arquivo e iniciar a nova operação de arquivo AOF acréscimo.

AOF salvar o arquivo em uma forma ordenada todas as operações de gravação realizada no banco de dados, a operação de gravação para salvar o protocolo Redis formato, então o conteúdo do arquivo AOF é muito fácil de ler as pessoas, para arquivo para análise (análise) é também muito fácil. Export (exportação) arquivo AOF é muito simples: Por exemplo, se você não for cuidadoso FLUSHALL executar o comando, mas enquanto arquivo AOF não foi substituído, desde que o servidor parar, remova FLUSHALL final comando AOF do arquivo, e reiniciar Redis, você pode restaurar o conjunto de dados para o estado antes da execução FLUSHALL.

contras -

Para os mesmos conjuntos de dados, arquivos de maior volume geralmente AOF que o arquivo de volume RDB.

De acordo com a estratégia de fsync sendo usado, AOF velocidade pode ser mais lento do que RDB. Em geral, fsync por segundo desempenho ainda é muito alta, e perto fsync permite que a velocidade AOF e RDB tão rápido, mesmo sob cargas elevadas. Mas quando se lida com uma enorme carga de gravação, RDB pode fornecer o tempo máximo de atraso (latência) é mais garantida.

backup de dados Redis

Ao ler esta pequena pré-feriado, tenha em mente a seguinte frase: Certifique-se de sua falha no disco de dados, uma falha de nó de backup completo pelo tipo de problemas pode tornar seus dados desaparecer, nenhum backup é muito perigoso.

Redis para backup de dados é muito amigável, porque você pode fazer cópias de arquivo RDB enquanto o servidor está em execução: Uma vez arquivo RDB é criado, ele não vai fazer quaisquer alterações. Quando o servidor que você deseja criar um novo arquivo de RDB, ele arquivos primeiro conteúdo armazenado em um arquivo temporário que, quando gravação temporária arquivos completos, use o programa só renomear (2) atomicamente substituir o arquivo original com o RDB arquivo temporário.

Isto significa que sempre que um RDB cópia de arquivo é absolutamente seguro.

Criar uma tarefa (cron) recorrentes, por hora backup de um arquivo para uma pasta RDB, RDB e um backup de arquivos diários para outra pasta.

backups de instantâneo a certeza de que com a data adequada e informações em tempo cada vez que você executar script de tarefa periódica, usando o fi nd comando para excluir snapshot ultrapassada: Por exemplo, você pode manter snapshots por hora dentro das últimas 48 horas, você pode manter o último snapshots diárias de um ou dois meses.

Pelo menos uma vez por dia, RDB fará o backup de seu centro de dados para o exterior, ou pelo menos de volta para além da máquina física você executar servidor Redis.

#! /bin/bash
PATH=/usr/local/bin:$PATH
redis-cli SAVE
date=$(date +"%Y%m%d")
cp /var/lib/redis/6379/dump.rdb /data01/cache_backup/$date.rdb
echo "done!"

Recuperação de Desastres

Redis, basicamente, backup de dados de recuperação de desastres e transferi-los para uma pluralidade de diferentes externa centro de dados backup. Disaster Recovery pode ser

Quando um problema sério Redis funcionando e gerando um instantâneo de data center principal, de modo que os dados ainda está em um estado seguro.

Redis porque muitos usuários são empresários, eles não têm um monte um monte de dinheiro para o lixo, então a introdução do seguinte são alguns dos métodos práticos e de baixo custo de backup de recuperação de desastres:

Amazon S3, S3 e outros serviços similares, é um bom lugar para construir um sistema de recuperação de desastres. A maneira mais fácil é RDB seus backups horários ou diários codificados e transmitidos para S3. Criptografia de dados pode ser feito (modo de criptografia simétrica) de comando gpg -c. Lembre-se de colocar sua senha em vários diferente, lugar seguro para ir (por exemplo, você pode copiar a senha para pessoa mais importante da sua organização). Usar vários serviços de armazenamento para armazenar arquivos de dados, você pode melhorar a segurança dos dados.

Instantâneos podem ser transmitidos utilizando o SCP completo (SSH de montagem). O seguinte é um método de entrega seguro simples e: comprar um centro de dados perto de você muito longe VPS, SSH instalado, crie uma chave de cliente SSH sem senha, e adicione a chave para o arquivo do VPS authorized_keys, de modo que você pode este instantâneo de transferência de arquivos de backup para o VPS. A fim de alcançar a melhor segurança de dados, pelo menos de dois fornecedores diferentes, onde cada comprar um VPS para recuperação de desastres de dados.

Note-se que este tipo de sistema de recuperação de desastres se não for cuidadosamente tratado, é muito fácil de falhar. Se o volume e o arquivo de volume instantâneo original No mínimo, você deve ser após a transferência do arquivo estiver concluída, verifique a transferência do arquivo de backup é o mesmo. Se você estiver usando um VPS, você também pode verificar se a transferência completa, comparando arquivos SHA1 e documentos para confirmar.

Além disso, você também precisa de um sistema de alarme separado e deixá-lo dizer-lhe quando o transportador (transferência) é responsável por enviar um falhas de backup.

Publicado 682 artigos originais · Louvor obteve 1.391 · Visualizações 1,71 milhões +

Acho que você gosta

Origin blog.csdn.net/itcast_cn/article/details/104773744
Recomendado
Clasificación