Migração de arquivos binários
A próxima versão principal6.0 do Server Pro e da Community Edition reduzirá pela metade o uso de armazenamento dos arquivos binários. Uma migração online está incluída na versão 5.5.7 , permitindo um tempo de inatividade mínimo como parte da atualização.
Desde o Server Pro 4.x, os arquivos binários são armazenados duas vezes: no armazenamento de arquivos ativos do “filestore” e no sistema de histórico completo do projeto. Daqui em diante, uma única cópia de cada arquivo será armazenada no sistema de histórico completo do projeto.
A migração para o sistema de armazenamento consolidado é composta por duas partes: uma nova flag para controlar a fase da migração e um script que processa todos os projetos ativos e excluídos de forma reversível (soft-deleted).
Fases:
OVERLEAF_FILESTORE_MIGRATION_LEVEL=0(padrão): os arquivos são lidos e gravados no filestore. Os arquivos são gravados no histórico de forma assíncrona.OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: os arquivos são lidos do histórico, com fallback para o filestore, e gravados tanto no filestore quanto no histórico. É possível fazer downgrade paraOVERLEAF_FILESTORE_MIGRATION_LEVEL=0.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: os arquivos são lidos e gravados apenas no histórico. Não é possível fazer downgrade paraOVERLEAF_FILESTORE_MIGRATION_LEVEL=1, a menos que a migração tenha sido realizada “offline”.
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) e para o histórico (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID): conceda ao usuário do filestore acesso de leitura ao bucket de blobs do histórico OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET . Daqui em diante, o serviço filestore atenderá às leituras do serviço de compilação.
A licença padrão do Server Pro permite executar a aplicação em um ambiente de produção e também em um ambiente que não seja de produção/sandbox; é altamente recomendável que você provisione um ambiente que não seja de produção para testes.
Se você atualizar para a versão
6.0 do Server Pro/CE e depois decidir fazer downgrade para uma versão anterior, deverá restaurar a partir de um backup completo do sistema.Procedimento de migração
1
Crie um backup
Crie um backup completo da sua instância, com um snapshot consistente dos diretórios mongo, redis e sharelatex.
2
Atualize
Toolkit: use o script
$ bin/upgrade para atualizar o toolkit para a versão mais recente. Quando solicitado, não confirme a pergunta Upgrade image? — em vez disso, edite manualmente o arquivo config/version e defina o valor como 5.5.7.docker-compose.yml legado: atualize a versão do serviço sharelatex para 5.5.7.3
Estime o número de projetos afetados
4
Esvazie as filas de histórico dos projetos
"project_ids":0).Caso “failedProjects” não seja zero, entre em contato com o suporte e não continue com a migração de arquivos binários.
5
Avance a fase da migração para 1
Toolkit: defina
OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 em config/variables.env.docker-compose.yml legado: defina OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' na seção environment do serviço sharelatex.6
Aplique a alteração de configuração e inicie a instância
Toolkit:
bin/up -ddocker-compose.yml legado: docker compose up -d7
Verifique o acesso aos arquivos binários
Abra um projeto no editor do Overleaf no navegador e selecione um arquivo binário, como uma imagem.
8
Execute o script de migração
Se você estiver persistindo os arquivos de log fora do contêiner sharelatex, certifique-se de que o proprietário do diretório de logs seja o usuário
www-data (uid=33), para que o arquivo de log gerado possa ser gravado.0 e as últimas linhas indicarão que não houve falhas:9
Pare a instância
Toolkit:
bin/stop sharelatexdocker-compose.yml legado: docker compose stop sharelatex10
Torne os arquivos antigos inacessíveis para a aplicação
Agora você pode mover os arquivos antigos para um armazenamento secundário. Recomendamos manter os arquivos por um tempo, caso surjam problemas mais tarde.
11
Avance a fase da migração para 2
Toolkit: defina
OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 em config/variables.env.docker-compose.yml legado: defina OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' na seção environment do serviço sharelatex.12
Aplique a alteração de configuração e inicie a instância
Toolkit:
bin/up -ddocker-compose.yml legado: docker compose up -d13
Verifique o acesso aos arquivos binários
Abra um projeto no editor do Overleaf no navegador e selecione um arquivo binário, como uma imagem.
Migração offline
Se você quiser impedir que os usuários façam login enquanto o script de migração de arquivos binários estiver em execução, siga estas etapas:- Faça login na sua instância do Overleaf com uma conta de administrador
- Clique no botão Admin e escolha Manage Site
- Clique na aba Open/Close Editor
- Clique no botão Close Editor
- Clique no botão Disconnect all users
Migração online
É possível executar os scripts de migração enquanto a aplicação ainda está em execução. Há algumas considerações a serem levadas em conta:- O processo de migração faz uso intensivo de IO; você deve monitorar o uso de recursos enquanto o script estiver em execução.
- Com uma concorrência de processamento alta, o event loop do serviço
filestorepode sofrer algum bloqueio, o que levaria a uma experiência de usuário degradada. Recomendamos começar com os valores padrão de--concurrency=10e--concurrent-batches=1. - Você pode interromper o script a qualquer momento. Ao iniciá-lo novamente, ele validará os projetos anteriores e pulará os arquivos que já foram processados. Isso é útil caso você prefira executar a migração em horários de menor movimento (por exemplo, à noite).
--report). Se o número de projetos for grande, você pode executar o script e monitorar seu progresso e, então, decidir se continua executando-o online ou offline, de acordo com o seu caso específico.
Limpeza dos dados legados de arquivos binários
Quando terminar a migração e verificar que os projetos ainda conseguem acessar todos os seus arquivos, você poderá remover o armazenamento de arquivos antigo em/var/lib/overleaf/data/user_files. Recomendamos fortemente manter esses arquivos por um tempo — você pode torná-los inacessíveis para a aplicação renomeando a pasta primeiro.
Solução de problemas
Adicionaremos aqui orientações para solução de problemas. Observe que, embora normalmente ofereçamos suporte apenas a clientes do Server Pro, dada a natureza desta migração, também faremos o possível para ajudar clientes da CE que enfrentarem problemas específicos da migração de arquivos binários. Se o script de migração de arquivos binários falhar (ou seja, terminar com um erro ou exibir um número diferente de zero de projetos com falha), envie os seguintes detalhes à nossa equipe de suporte pelo e-mail support+filestoremigration@overleaf.com, informando: Assunto: Binary file migration problem Corpo:- Tipo de instância: CE ou Server Pro (apague o que não se aplica)
- Tipo de instalação: Overleaf toolkit,
docker-compose.ymlou outro (apague o que não se aplica) - Versão: 5.5.x (toolkit:
$ cat config/version) - Saída do script de migração (que deve estar localizada no contêiner, em
/var/log/overleaf) - Relatório: (execute o script de migração com
--report) - Projetos processados: (conforme a última execução do script)
- Duração da migração:
- Saída de
bin/doctor(ao usar o toolkit) - Versão do Toolkit:
$ git rev-parse HEAD(ao usar o Toolkit)
filestore. Você os encontra em /var/log/overleaf/filestore.log, dentro do contêiner sharelatex, e pode exportá-los assim:
Arquivos ausentes
Versões mais antigas do Server Pro/CE criavam entradas na árvore de arquivos antes de os envios dos usuários serem concluídos, o que podia fazer com que arquivos aparecessem como ausentes quando um envio falhava. Você poderá encontrar alguns desses casos relatados como erros ao processar todas as árvores de arquivos. Caso o número de arquivos ausentes seja pequeno, considere revisar esses casos manualmente e excluí-los pelo editor no navegador. Caso o número de arquivos ausentes seja grande, considere entrar em contato com o suporte; veja o modelo de e-mail acima.Encontrando árvores de arquivos corrompidas
A migração pode falhar para projetos que têm uma árvore de arquivos malformada (por exemplo, quando os nomes de arquivos estão vazios). Você pode obter uma lista desses problemas usando o scriptfind_malformed_filetrees, que verifica todos os projetos no banco de dados:
fix_malformed_filetree, executando o comando uma vez para cada caminho inválido:

