Migrering av binärfiler
Den kommande huvudversionen6.0 av Server Pro och Community Edition halverar lagringsanvändningen för binärfiler. En onlinemigrering ingår i version 5.5.7, vilket ger minimal driftstopp i samband med uppgraderingen.
Sedan Server Pro 4.x lagras binärfiler två gånger: i lagringen för aktiva filer i “filestore” och i systemet för fullständig projekthistorik. Framöver lagras en enda kopia av varje fil i systemet för fullständig projekthistorik.
Migreringen till det konsoliderade lagringssystemet består av två delar: en ny flagga för att styra migreringens fas och ett skript som bearbetar alla aktiva och mjukt borttagna projekt.
Faser:
OVERLEAF_FILESTORE_MIGRATION_LEVEL=0(standard): filer läses från och skrivs till filestore. Filer skrivs asynkront till historiken.OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: filer läses från historiken med filestore som reserv och skrivs till både filestore och historiken. Nedgradering tillOVERLEAF_FILESTORE_MIGRATION_LEVEL=0är möjlig.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: filer läses från och skrivs endast till historiken. Nedgradering tillOVERLEAF_FILESTORE_MIGRATION_LEVEL=1är inte möjlig, såvida den inte utfördes “offline”.
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) och historik (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID): ge filestore-användaren läsbehörighet till historikens bucket för blobbar, OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET. Framöver kommer filestore-tjänsten att hantera läsningar från kompileringstjänsten.
Standardlicensen för Server Pro tillåter att du kör applikationen både i en produktionsmiljö och i en miljö som inte är produktion (sandlåda); det rekommenderas starkt att du sätter upp en miljö utanför produktion för tester.
Om du uppgraderar till Server Pro/CE version
6.0 och senare bestämmer dig för att nedgradera till en tidigare version bör du återställa från en fullständig säkerhetskopia av systemet.Migreringsprocedur
1
Skapa en säkerhetskopia
Skapa en fullständig säkerhetskopia av din instans med en konsekvent ögonblicksbild av katalogerna mongo, redis och sharelatex.
2
Uppdatera
Toolkit: Använd skriptet
$ bin/upgrade för att uppgradera toolkit till den senaste versionen. När du tillfrågas ska du inte bekräfta frågan Upgrade image? — redigera i stället filen config/version manuellt och sätt värdet till 5.5.7.Äldre docker-compose.yml: Uppdatera versionen av tjänsten sharelatex till 5.5.7.3
Uppskatta antalet berörda projekt
4
Töm köerna för projekthistorik
"project_ids":0).Om “failedProjects” inte är noll ska du kontakta supporten och inte fortsätta med migreringen av binärfiler.
5
Flytta fram migreringsfasen till 1
Toolkit: Sätt
OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 i config/variables.env.Äldre docker-compose.yml: Sätt OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' i avsnittet environment för tjänsten sharelatex.6
Tillämpa konfigurationsändringen och starta instansen
Toolkit:
bin/up -dÄldre docker-compose.yml: docker compose up -d7
Verifiera åtkomsten till binärfiler
Öppna ett projekt i Overleaf-editorn i webbläsaren och välj en binärfil, till exempel en bild.
8
Kör migreringsskriptet
Om du sparar loggfiler utanför containern sharelatex ska du se till att loggkatalogens ägare är användaren
www-data (uid=33) så att loggfilen kan skrivas.0, och de sista raderna visar att inga fel uppstod:9
Stoppa instansen
Toolkit:
bin/stop sharelatexÄldre docker-compose.yml: docker compose stop sharelatex10
Gör gamla filer oåtkomliga för applikationen
Nu kan du flytta de gamla filerna till sekundär lagring. Vi rekommenderar att du behåller filerna ett tag ifall problem skulle uppstå senare.
11
Flytta fram migreringsfasen till 2
Toolkit: Sätt
OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 i config/variables.env.Äldre docker-compose.yml: Sätt OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' i avsnittet environment för tjänsten sharelatex.12
Tillämpa konfigurationsändringen och starta instansen
Toolkit:
bin/up -dÄldre docker-compose.yml: docker compose up -d13
Verifiera åtkomsten till binärfiler
Öppna ett projekt i Overleaf-editorn i webbläsaren och välj en binärfil, till exempel en bild.
Offlinemigrering
Om du vill förhindra att användare kan logga in medan migreringsskriptet för binärfiler körs följer du dessa steg:- Logga in på din Overleaf-instans med ett administratörskonto
- Klicka på knappen Admin och välj Manage Site
- Klicka på fliken Open/Close Editor
- Klicka på knappen Close Editor
- Klicka på knappen Disconnect all users
Onlinemigrering
Det går att köra migreringsskripten medan applikationen fortfarande körs. Det finns några saker att ta hänsyn till:- Migreringsprocessen är I/O-intensiv, så du bör övervaka resursanvändningen medan skriptet körs.
- Med hög samtidighet i bearbetningen kan händelseloopen i tjänsten
filestoreblockeras i viss mån, vilket försämrar användarupplevelsen. Vi rekommenderar att du börjar med standardvärdena--concurrency=10och--concurrent-batches=1. - Du kan stoppa skriptet när som helst. När det startas igen valideras tidigare projekt och filer som redan har bearbetats hoppas över. Det är användbart om du föredrar att köra migreringen under lugnare timmar (t.ex. på natten).
--report). Om antalet projekt är stort kan du köra skriptet och övervaka förloppet, och sedan avgöra om du ska fortsätta köra det online eller offline utifrån din situation.
Rensa äldre binärfilsdata
När du är klar med migreringen och har verifierat att projekten fortfarande kan komma åt alla sina filer kan du ta bort den gamla fillagringen i/var/lib/overleaf/data/user_files. Vi rekommenderar starkt att du behåller filerna ett tag – du kan göra dem oåtkomliga för applikationen genom att först byta namn på mappen.
Felsökning
Vi kommer att lägga till felsökningsråd här. Observera att även om vi normalt bara erbjuder support till Server Pro-kunder kommer vi, med tanke på den här migreringens natur, att göra vårt bästa för att även hjälpa CE-kunder som får problem som är specifika för migreringen av binärfiler. Om migreringsskriptet för binärfiler misslyckas (dvs. avslutas med ett fel eller skriver ut ett antal misslyckade projekt som inte är noll) skickar du följande uppgifter till vårt supportteam via e-post till support+filestoremigration@overleaf.com, med följande: Ämne: Binary file migration problem Brödtext:- Instance Type: CE eller Server Pro (stryk det som inte gäller)
- Installation Type: Overleaf toolkit eller
docker-compose.ymleller annat (stryk det som inte gäller) - Version: 5.5.x (toolkit:
$ cat config/version) - Utdata från migreringsskriptet (som bör finnas i containern under
/var/log/overleaf) - Rapport: (kör migreringsskriptet med
--report) - Bearbetade projekt: (enligt skriptets senaste körning)
- Migreringens varaktighet:
- Utdata från
bin/doctor(vid användning av toolkit) - Toolkit-version:
$ git rev-parse HEAD(vid användning av Toolkit)
filestore i e-postmeddelandet. Du hittar dem på /var/log/overleaf/filestore.log i containern sharelatex och kan exportera dem så här:
Saknade filer
Äldre versioner av Server Pro/CE skapade poster i filträdet innan användarnas uppladdningar var klara, vilket kunde göra att filer såg ut att saknas när en uppladdning misslyckades. Du kan hitta några sådana fall rapporterade som fel när alla filträd bearbetas. Om antalet saknade filer är litet kan du överväga att granska dessa fall manuellt och ta bort dem från editorn i webbläsaren. Om antalet saknade filer är stort kan du överväga att kontakta supporten, se e-postmallen ovan.Hitta trasiga filträd
Migreringen kan misslyckas för projekt som har ett felaktigt filträd (till exempel där filnamn är tomma). Du kan få en lista över sådana problem med skriptetfind_malformed_filetrees, som kontrollerar alla projekt i databasen:
fix_malformed_filetree och kör kommandot en gång för varje felaktig sökväg:

