Migrações

Traga projetos de outra instância do Mira ou envie os desta para outra, sem copiar o banco.

Quem faz: administrador, nas duas instâncias.

Uma migração copia projetos de uma instância do Mira, a origem, para outra, o destino. As duas instâncias conversam pela API, então a migração não depende de versão de banco nem de pg_dump. Os projetos mantêm os ids, as chaves de ingestão e os links internos, e as apps que já usam o DSN continuam enviando erros depois da troca.

Quando usar

  • Você troca o Mira de servidor ou de domínio e quer levar os projetos.
  • Você junta duas instâncias, ou separa um projeto numa instância nova.
  • Você quer uma cópia de um projeto para teste.

A migração não é um retrato do momento. A origem continua recebendo dados enquanto ela roda. Para trazer o que entrou depois, rode de novo com a regra Manter o do destino.

Antes de começar

  1. Seja Administrador nas duas instâncias.
  2. Emita um token de migração na outra instância. Para trazer, o escopo é Exportar, emitido na origem. Para enviar, o escopo é Importar, emitido no destino. Veja Tokens de migração.
  3. Confirme o caminho de rede. Ao trazer, o servidor do destino precisa alcançar a origem. Ao enviar, o servidor da origem precisa alcançar o destino. Escolha o sentido em que a rede permite: uma origem em rede interna envia para um destino público.
  4. Use uma URL https://. Só http://localhost é aceito, e fora de produção.

Tokens de migração

Abra Administração do Mira → Migrações → Tokens de migração e use Novo token.

CampoO que define
NomeIdentifica o token na lista.
EscopoExportar deixa outra instância trazer projetos desta. Importar deixa outra instância enviar projetos para esta.
ValidadeDe 1 a 7 dias. O padrão é 7.

O token (mira_mig_...) aparece uma vez, em Copie o token agora. Cole na outra instância ao começar a migração. A lista mostra o escopo, a validade e o último uso. Para revogar, use o menu da linha: a outra instância perde o acesso na hora.

O token vale só nas rotas da migração e só enquanto quem o emitiu continuar sendo administrador ativo. Ele não abre nenhuma outra rota da API.

Trazer de outra instância

Faça no destino.

Abrir o formulário

Em Migrações, clique em Nova migração e escolha Trazer de outra instância.

Lista de Migrações vazia, com os botões Tokens de migração e Nova migração
A lista de Migrações, com Nova migração em destaque.

Conectar à origem

Informe a URL da origem e o Token de migração da origem, com escopo Exportar, e clique em Conectar. Se der certo, a tela mostra Conectado a e a versão do Mira da origem. Trocar a URL ou o token descarta a leitura.

Formulário Trazer de outra instância, com a URL e o token da origem e o botão Conectar
O formulário de Trazer, antes de conectar.

TODO print: a tela depois de conectar, com os projetos e as opções, precisa de uma segunda instância no pipeline de prints.

Escolher projetos e opções

Em Projetos, marque os projetos da origem. Cada linha mostra a contagem de reports, anexos, membros e erros. Em Opções, decida se entra o grupo Incluir os Erros e escolha a regra de conflito.

Iniciar

Clique em Iniciar migração e confirme. O Mira abre o detalhe da migração.

Enviar para outra instância

Faça na origem. O formulário é o mesmo, com duas diferenças: os campos são URL do destino e Token de migração do destino, com escopo Importar, e a tela confere as chaves de projeto no destino ao conectar.

Escolha Enviar quando a origem está numa rede interna e o destino é público, como na troca de um servidor interno para uma instância na internet.

O que migra

Por projeto marcado:

  • O projeto e as configurações, os ambientes e as chaves de ingestão, os membros, as tags e os templates.
  • Os reports, com tags, vínculo de duplicado e anexos.
  • Os comentários, com anexos, e a atividade dos reports.
  • Os vínculos com issues do Jira e do GitHub.
  • Com Incluir os Erros: releases, Erros, contadores, Ocorrências, a atividade do projeto, os vínculos com reports e os source maps. A opção vem ligada.

As contas entram só quando algum dado migrado cita a pessoa, e são casadas pelo email. Uma conta que não existe no destino nasce como Usuário, sem senha, com o bloqueio que tinha na origem. A pessoa entra pelo Google ou por um link de redefinição de senha. O papel Administrador nunca vem da origem, e uma conta que já existe no destino não muda de papel, de senha nem de bloqueio.

A migração não dispara webhook, notificação, email nem envio ao Jira.

O que não migra

  • Segredos. O token do Jira, a chave privada do GitHub e o segredo dos webhooks ficam na origem. Veja Avisos.
  • Convites pendentes, sessões, tokens, serviços de API e vínculos com o Google.
  • Notificações e entregas de email, resumos semanais e as execuções e sugestões do assistente.
  • Eventos e entregas de webhook.
  • O log de auditoria. O destino registra só o começo e o fim da migração.

Conflitos

Um registro já existe no destino quando tem o mesmo id ou a mesma chave natural: a chave do projeto, o email da conta, o nome da tag no projeto, a chave de ingestão ou o Debug ID do source map. Em Quando o registro já existe no destino, uma regra vale para a migração inteira.

RegraEfeito
Manter o do destinoO registro do destino fica como está, e as referências passam a apontar para ele.
Sobrescrever com o da origemO registro do destino recebe os dados da origem.

Uma conta nunca é sobrescrita, em nenhuma das regras.

A chave do projeto

Se a chave de um projeto já pertence a outro projeto do destino, a tela mostra que a chave é de outro projeto e pede uma decisão. Em Chave no destino, escolha outra chave, com 2 a 32 letras minúsculas, números ou hífens. Ou marque Juntar ao projeto para levar os dados ao projeto que já existe.

Um report cujo número já pertence a outro report do projeto ganha o próximo número livre. O detalhe da migração lista cada troca como aviso.

Duas migrações ativas não escrevem no mesmo projeto do destino. Se outra migração usa a chave, o Mira recusa o início com Outra migração ativa já usa uma dessas chaves. Espere ela terminar.

Acompanhar

A lista de Migrações mostra a outra instância, a Direção (Trazida, Enviada ou Recebida), o Estado e quando foi criada. A Recebida é o registro que o destino guarda de um envio.

EstadoSignifica
Na filaAguarda o servidor pegar o trabalho.
RodandoEstá copiando. A tela atualiza sozinha a cada 3 segundos.
ConcluídaTudo foi copiado.
Concluída com falhasTerminou, e alguns registros falharam.
InterrompidaParou num erro, como queda de rede ou token recusado.
CanceladaUm administrador cancelou.

Abra uma migração para ver o detalhe: as Etapas, uma por recurso, com o progresso e as contagens de Importados, Mantidos, Sobrescritos e Falhas, e as listas de Falhas e Avisos. Use Filtrar por recurso para achar um tipo. Uma falha traz o Id na origem, o tipo (Registro inválido, Referência ausente, Conflito, Arquivo ausente ou Falha ao gravar) e o Motivo.

Erro de rede, timeout e erro 5xx da outra instância repetem sozinhos, com espera crescente, até 5 vezes. Token recusado e erro 4xx interrompem na hora, com a mensagem em Último erro.

Retomar, tentar as falhas e cancelar

As ações aparecem no detalhe, conforme o estado.

AçãoQuandoO que faz
RetomarInterrompidaContinua do ponto onde parou, sem repetir o que já foi copiado.
Tentar de novo as falhasConcluída com falhasRefaz só os registros com falha. Os que dão certo saem da lista de falhas.
Cancelar migraçãoNa fila, Rodando ou InterrompidaPara depois da página em gravação. O que já foi importado fica no destino.

Retomar e Tentar de novo as falhas chamam a outra instância de novo, então o token precisa continuar válido. Se ele expirou, emita outro e comece uma migração nova com a regra Manter o do destino: ela pula o que já chegou. Uma migração Cancelada não volta. Para continuar, comece outra.

No destino, uma migração Recebida que ficou em Rodando porque a origem caiu pode ser cancelada para liberar o projeto.

Avisos

Os avisos listam o que a migração gravou e pede atenção. Há dois tipos.

  • Pede ação: uma integração que não veio inteira e que você refaz no destino.
    • Jira: o destino do Jira vem sem credencial. Cadastre a conexão com o mesmo site em Configurações do projeto, e o destino volta a valer.
    • GitHub: a conexão não é criada. Conecte de novo.
    • Webhook: o destino entra desligado e com segredo novo. Revele o segredo, atualize o consumidor e só então ligue.
  • Report renumerado: o report ganhou outro número porque o original já era de outro report do projeto.

Pela CLI

Cada rota de administração da migração vira um comando da CLI: preview-migration, create-migration, list-migrations, get-migration, list-migration-failures, list-migration-notices, resume-migration, retry-migration-failures e cancel-migration, além dos três comandos de tokens de migração.

Nesta página