Migrace na úplnou historii projektů
Vydání3.5.x Community Edition obsahuje funkci úplné historie projektů (Full Project History), která je již k dispozici v naší nabídce SaaS, overleaf.com
Po aktualizaci vaší instance na Overleaf CE 3.5.13 budou všechny nové projekty ve výchozím nastavení používat úplnou historii projektů. Stávající projekty budou nadále používat starší systém historie, dokud nebudou migrovány.
Pokud provedete upgrade na
3.5.13 a rozhodnete se přejít zpět na starší verzi, měli byste obnovit data z úplné zálohy systému. Historie projektů vytvořených ve verzi 3.5.13 není kompatibilní se staršími verzemi Overleaf CE.- Sleduje změny v binárních souborech, což starší systém nepodporuje.
- Podporuje pojmenované (označené) verze.
- Systém je obecně robustnější a riziko ztráty dat je menší.
Migrace stávajících projektů
1
Vytvořte zálohu
Vytvořte úplnou zálohu své instance s konzistentním snímkem adresářů mongo, redis a sharelatex.
2
Aktualizujte
Aktualizujte verzi obrazu sharelatex/sharelatex na 3.5.13.Toolkit: Pomocí skriptu
$ bin/upgrade aktualizujte toolkit na nejnovější verzi a upravte config/version na 3.5.13.3
Spusťte instanci
V ideálním případě byste měli během migrace zabránit uživatelům v přístupu k instanci, abyste předešli ztrátě dat v případě, že budete muset obnovit zálohu. Více informací o tom, jak to provést, najdete v části Offline migrace.
4
Počkejte, až budou všechny služby spuštěny
Počkejte, až budou všechny služby spuštěny a v provozu (viz příkaz níže)
5
Spusťte migrační skript
--force-clean vymaže částečně migrovaná data historie projektů v novém systému, což umožňuje opakovat migraci u jednotlivých projektů, u kterých předchozí pokusy selhaly;--fix-invalid-characters nahradí netisknutelné znaky, které nový systém historie nepodporuje;--convert-large-docs-to-file převede dokumenty, které překračují limit 2 MB pro upravitelnou velikost, na neupravitelné soubory)Výstup by měl vypadat takto:0 a poslední řádky budou uvádět, že nedošlo k žádným selháním:6
Znovu otevřete web
Pokud jste se rozhodli provést offline migraci, budete muset web znovu otevřít. Pokud jste stále přihlášeni, postupujte takto:
- Klikněte na tlačítko Admin a zvolte Manage Site
- Klikněte na kartu Open/Close Editor
- Klikněte na tlačítko Reopen Editor
$ bin/up.Offline migrace
Chcete-li zabránit uživatelům v přihlášení během běhu skriptu pro migraci historie, postupujte takto:- Přihlaste se do své instance Overleaf administrátorským účtem
- Klikněte na tlačítko Admin a zvolte Manage Site
- Klikněte na kartu Open/Close Editor
- Klikněte na tlačítko Close Editor
- Klikněte na tlačítko Disconnect all users
Online migrace
Migrační skripty je možné spustit i za běhu aplikace. Je však třeba vzít v úvahu několik věcí:- Proces migrace je náročný na CPU, proto byste měli během běhu skriptu sledovat využití prostředků.
- Při vysoké hodnotě
--concurrencymůže u některých služeb (zejménatrack-changes) docházet k blokování smyčky událostí, což by vedlo ke zhoršení uživatelského zážitku. Doporučujeme začít s výchozí hodnotou--concurrency=1. - Skript můžete kdykoli zastavit. Po opětovném spuštění bude migrace pokračovat tam, kde jste skončili. To se hodí, pokud dáváte přednost spouštění migrace v méně vytížených hodinách (např. v noci).
db.projects.count()). Pokud je projektů hodně, můžete skript spustit a sledovat jeho průběh a poté se podle své konkrétní situace rozhodnout, zda v něm budete pokračovat online, nebo offline.
Vyčištění dat starší historie
Skript pro vyčištění dat starší historie byl přidán ve verzích Server Pro3.5.6, 4.0.6 a 4.1.0.
V Server Pro starším než verze 3.5.13 skript maže obsah kolekcí
docHistory a docHistoryIndex. MongoDB po smazání dokumentů neuvolňuje místo na disku; místo toho jej znovu použije pro budoucí dokumenty ve stejné kolekci. Po migraci historie už do těchto kolekcí nic zapisovat nebude, takže místo na disku zůstane nevyužité.Pokud chcete místo na disku znovu zpřístupnit, můžete provést upgrade na Server Pro 3.5.13 (pokud stále používáte řadu 3.x) nebo Server Pro 4.2.5 (pokud používáte řadu 4.x) a skript pro vyčištění spustit znovu.Skript pro vyčištění obsažený v nejnovějších opravných vydáních Server Pro řady 3.5.x a v nejnovější verzi 4.x.x jako poslední krok kolekce odstraňuje.Skript pro vyčištění je bezpečné spustit opakovaně.Řešení problémů
Sem budeme přidávat rady k řešení problémů. Upozorňujeme, že ačkoli běžně poskytujeme podporu pouze zákazníkům Server Pro, vzhledem k povaze této migrace se budeme snažit pomoci i zákazníkům CE, kteří narazí na problémy specifické pro migraci na úplnou historii projektů. Pokud skript pro migraci na úplnou historii projektů selže (tj. skončí s chybou nebo vypíše nenulový počet neúspěšných projektů), pošlete prosím našemu týmu podpory e-mailem na support+historymigration@overleaf.com následující podrobnosti: Předmět: Full project history migration problem- Typ instance: CE nebo Server Pro (nehodící se škrtněte)
- Typ instalace: Overleaf toolkit,
docker-compose.ymlnebo jiný (nehodící se škrtněte) - Verze: 3.5.x (toolkit:
$ cat config/version) - Výstup migračního skriptu (měl by se nacházet v kontejneru pod
/overleaf/services/web) - Migrated Projects: (podle výstupu migračního skriptu)
- Total Projects: (podle výstupu migračního skriptu)
- Remaining Projects: (podle výstupu migračního skriptu)
- Doba trvání migrace:
- Výstup
bin/doctor(při použití toolkitu) - Verze Toolkitu:
$ git rev-parse HEAD(při použití Toolkitu)
history-v1, project-history a track-changes k e-mailu. Najdete je ve složce /var/log/sharelatex uvnitř kontejneru sharelatex a můžete je exportovat takto:
Hledání poškozených stromů souborů
Migrace může selhat u projektů s chybně vytvořeným stromem souborů (například tam, kde jsou názvy souborů prázdné). Seznam těchto problémů zjistíte pomocí skriptufind_malformed_filetrees, který zkontroluje všechny projekty v databázi:
fix_malformed_filetree, přičemž příkaz spustíte jednou pro každou chybnou cestu:
Převod projektů z úplné historie projektů zpět na starší historii
Pokud byl některý projekt migrován na úplnou historii projektů, ale chcete se vrátit ke starší historii, použijte skriptdowngrade_project následovně:

