Basicamente, existem dois tipos principais disponíveis: snapsnots assíncronos e fsync()
. Eles são chamados de RDB e AOF, respectivamente. Mais sobre modos de persistência na página oficial .
O tratamento do sinal do processo daemonizado sincroniza com o disco quando ele recebe um SIGTERM, por exemplo, para que os dados ainda estejam lá após uma reinicialização. Acho que o daemon ou o sistema operacional precisa travar antes que você veja uma corrupção de integridade, mesmo com as configurações padrão (instantâneos RDB).
A configuração AOF usa um arquivo somente anexo que registra os comandos que o servidor recebe e recria o banco de dados desde o início na inicialização a frio, a partir do arquivo salvo. A política de sincronização de disco padrão é liberar uma vez a cada segundo (IIRC), mas pode ser definida para bloquear e gravar em cada comando.
Usar os instantâneos e o log incremental parece oferecer uma abordagem de longo prazo para não se importar se eu perder alguns segundos de dados com um log incremental mais seguro, mas caro. O Redis oferece suporte a clustering pronto para uso, portanto, ao que parece, a replicação também pode ser feita.
Estou usando a configuração de RDB padrão e salvando os instantâneos no FTP remoto. Ainda não vi uma falha que tenha causado perda de dados. Provavelmente, falha aguda de hardware ou falta de energia, mas estou hospedado em um VPS. Pouca chance de isso acontecer :)