Backups e recuperação
Armazenamento
Adicione um armazenamento compatível com S3 em Backups (Cloudflare R2, Backblaze B2, AWS S3, MinIO ou qualquer outro) com uma chave de acesso limitada a um bucket. O Orbit escreve, lê e apaga um objeto de teste antes de aceitá-lo.
A política
Cada banco tem a sua: quando roda, em qual fuso horário, por quantos dias os backups são mantidos e para onde vão. Guardar backups no próprio servidor protege contra erros, não contra a perda do servidor.
- Quando: a cada hora ou a cada algumas horas num minuto escolhido, todo dia num horário escolhido, em dias da semana escolhidos, ou um cron próprio (
30 2 * * 1-5). Um banco tem backup no máximo uma vez por hora. - Fuso horário: qualquer fuso IANA (
America/Sao_Paulo,Europe/Berlin). Mudanças de horário de verão são seguidas: um horário que a mudança pula roda quando o relógio salta. - A política mostra os três próximos backups antes de você salvar.
Backups verificados
Um backup só aparece como verificado depois que o Orbit o baixou de novo e o restaurou num contêiner isolado que nada consegue alcançar. Um backup que falha nesse teste fica guardado, mas não verificado, e a operação mostra o motivo.
Um backup é um pg_dump em formato custom para PostgreSQL, um arquivo do mysqldump para MySQL ou um arquivo RDB para Redis. Ele é enviado com o seu SHA-256 e lido de volta antes de contar como guardado.
Restaurando
Escolha um backup verificado na página do banco e digite o nome do banco.
- Por padrão o Orbit faz antes um backup dos dados atuais, então sempre há um caminho de volta.
- Um restore de PostgreSQL roda numa transação só, então ele termina inteiro ou deixa os dados intocados.
- As aplicações que usam o banco são reiniciadas, e o Orbit compara as tabelas e linhas (ou chaves) restauradas com o que o teste do backup encontrou.
Importando dados
Importar dados traz dados de outro lugar como um backup marcado como Importado. Ele passa pelo mesmo checksum e pelo mesmo teste isolado, e nada muda até você restaurá-lo.
- De outro banco: cole a URL de conexão com a senha (
postgresql://,mysql://ouredis://). O dump roda no seu servidor, então a origem precisa aceitar conexões do IP do servidor. A URL fica selada enquanto a importação roda, é apagada quando termina e nunca vai para os logs. - De um arquivo: um
pg_dump -Fcem formato custom, um.sqldomysqldumpou umdump.rdb, até 64 GiB. - O
pg_dumpdo PostgreSQL recusa um servidor mais novo que ele, então importe da mesma versão major ou de uma mais antiga.
Recuperação até um momento
Um banco PostgreSQL no CloudNativePG cuja política manda os backups para um armazenamento externo também arquiva o WAL ali, continuamente.
- Ligando: salvar essa política reinicia o banco uma vez e começa um primeiro backup base. Cada backup seguinte também faz um backup base.
- O arquivo: no mesmo bucket, em
<prefixo>/orbit/pitr/<id do banco>, com a retenção da política. Um arquivo WAL que não está cheio é arquivado em no máximo um minuto. Depois de um upgrade de versão major, ele recomeça de um novo backup base. - A janela: a página do banco mostra, do backup base mais antigo mantido até agora. Quando há arquivos WAL esperando para serem arquivados, ou o arquivamento falha, ela termina no último arquivo arquivado. Um arquivamento falhando, ou WAL esperando há mais de 10 minutos, marca o banco como degradado.
Restaurar até um momento aceita qualquer segundo dentro da janela e o nome do banco:
- O Orbit guarda uma cópia dos dados atuais, como em todo restore.
- Ele recupera o arquivo num cluster temporário naquele momento e copia os dados dele para o banco numa transação só.
- Ele reinicia as aplicações que usam o banco e confere as tabelas e linhas.
Num cluster de teste, restaurar para o segundo anterior a uma mudança destrutiva levou cerca de um minuto.
Reconstruindo a partir do arquivo
Quando nenhuma instância do banco responde (todos os servidores ou volumes que o guardavam se foram), a página avisa e oferece Reconstruir a partir do arquivo, pedindo o nome do banco para confirmar.
- O Orbit remove o que sobrou das instâncias e dos volumes delas.
- Ele recupera o último backup base e todo arquivo WAL arquivado em novas instâncias, nos mesmos servidores. Elas arquivam com um nome novo na mesma pasta, então o WAL de onde vieram fica intocado.
- Ele reinicia as aplicações que usam o banco, confere as credenciais e faz um primeiro backup base, o que abre a janela de novo.
As escritas que não tinham chegado ao arquivo se perdem: até cerca de um minuto delas. A atividade diz até qual commit os dados voltaram. O Orbit recusa a reconstrução enquanto o banco ainda tem um primário respondendo.
Backup do próprio Orbit
Os backups dos bancos não incluem os dados do próprio Orbit. Veja Operando o Orbit para orbit backup e orbit restore.