Міграція бінарних файлів
Майбутній мажорний випуск6.0 Server Pro та Community Edition удвічі зменшить обсяг сховища, що займають бінарні файли. У версію 5.5.7 включено онлайн-міграцію, що дає змогу мінімізувати час простою під час оновлення.
Починаючи із Server Pro 4.x, бінарні файли зберігаються двічі: в активному сховищі файлів у «filestore» та в системі повної історії проєктів. Надалі в системі повної історії проєктів зберігатиметься лише одна копія кожного файлу.
Міграція до консолідованої системи зберігання складається з двох частин: нового прапорця для керування фазою міграції та скрипта, який обробляє всі активні та м’яко видалені проєкти.
Фази:
OVERLEAF_FILESTORE_MIGRATION_LEVEL=0(за замовчуванням): файли читаються з filestore і записуються туди ж. В історію файли записуються асинхронно.OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: файли читаються з історії з резервним переходом на filestore і записуються як у filestore, так і в історію. Повернення доOVERLEAF_FILESTORE_MIGRATION_LEVEL=0можливе.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: файли читаються та записуються лише в історію. Повернення доOVERLEAF_FILESTORE_MIGRATION_LEVEL=1неможливе, якщо міграцію не було виконано «офлайн».
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) та history (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID), надайте користувачеві filestore доступ на читання до bucket історії для blob-об’єктів OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET. Надалі сервіс filestore обслуговуватиме запити на читання від сервісу компіляції.
Стандартна ліцензія Server Pro дозволяє запускати застосунок як у продакшн-середовищі, так і в одному непродакшн/тестовому середовищі; наполегливо рекомендуємо підготувати непродакшн-середовище для тестування.
Якщо ви оновитеся до Server Pro/CE версії
6.0, а згодом вирішите повернутися до попередньої версії, вам слід відновити систему з повної резервної копії.Процедура міграції
1
Створіть резервну копію
Створіть повну резервну копію свого екземпляра з узгодженим знімком каталогів mongo, redis і sharelatex.
2
Оновіть
Toolkit: скористайтеся скриптом
$ bin/upgrade, щоб оновити toolkit до найновішої версії. Коли з’явиться запит Upgrade image?, не підтверджуйте його — натомість вручну відредагуйте файл config/version і встановіть значення 5.5.7.Застарілий docker-compose.yml: оновіть версію сервісу sharelatex до 5.5.7.3
Оцініть кількість проєктів, яких це стосується
4
Скиньте черги історії проєктів
"project_ids":0).Якщо значення “failedProjects” не дорівнює нулю, зверніться до служби підтримки й не продовжуйте міграцію бінарних файлів.
5
Переведіть міграцію у фазу 1
Toolkit: встановіть
OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 у config/variables.env.Застарілий docker-compose.yml: встановіть OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' у розділі environment сервісу sharelatex.6
Застосуйте зміну конфігурації та запустіть екземпляр
Toolkit:
bin/up -dЗастарілий docker-compose.yml: docker compose up -d7
Перевірте доступ до бінарних файлів
Відкрийте проєкт у редакторі Overleaf у браузері й виберіть бінарний файл, наприклад зображення.
8
Запустіть скрипт міграції
Якщо ви зберігаєте файли журналів поза контейнером sharelatex, переконайтеся, що власником каталогу журналів є користувач
www-data (uid=33), щоб файл журналу можна було записати.0, а останні рядки вказуватимуть на відсутність збоїв:9
Зупиніть екземпляр
Toolkit:
bin/stop sharelatexЗастарілий docker-compose.yml: docker compose stop sharelatex10
Зробіть старі файли недоступними для застосунку
Тепер можна перенести старі файли у вторинне сховище. Рекомендуємо деякий час зберігати ці файли на випадок, якщо пізніше виникнуть проблеми.
11
Переведіть міграцію у фазу 2
Toolkit: встановіть
OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 у config/variables.env.Застарілий docker-compose.yml: встановіть OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' у розділі environment сервісу sharelatex.12
Застосуйте зміну конфігурації та запустіть екземпляр
Toolkit:
bin/up -dЗастарілий docker-compose.yml: docker compose up -d13
Перевірте доступ до бінарних файлів
Відкрийте проєкт у редакторі Overleaf у браузері й виберіть бінарний файл, наприклад зображення.
Офлайн-міграція
Якщо ви хочете не дати користувачам входити в систему, поки виконується скрипт міграції бінарних файлів, виконайте такі кроки:- Увійдіть у свій екземпляр Overleaf з обліковим записом адміністратора
- Натисніть кнопку Admin і виберіть Manage Site
- Перейдіть на вкладку Open/Close Editor
- Натисніть кнопку Close Editor
- Натисніть кнопку Disconnect all users
Онлайн-міграція
Скрипти міграції можна запускати, поки застосунок ще працює. Слід урахувати кілька моментів:- Процес міграції інтенсивно використовує введення-виведення, тому під час роботи скрипта слід стежити за використанням ресурсів.
- За високої паралельності обробки цикл подій у сервісі
filestoreможе зазнавати певних блокувань, що погіршить роботу користувачів. Рекомендуємо починати зі значень за замовчуванням--concurrency=10і--concurrent-batches=1. - Скрипт можна зупинити будь-коли. Повторний запуск перевірить попередні проєкти й пропустить уже оброблені файли. Це корисно, якщо ви віддаєте перевагу виконанню міграції в менш завантажені години (наприклад, уночі).
--report). Якщо проєктів багато, можна запустити скрипт і стежити за його перебігом, а потім вирішити, чи продовжувати його онлайн або офлайн, залежно від вашої ситуації.
Очищення застарілих даних бінарних файлів
Коли ви завершите міграцію й переконаєтеся, що проєкти й далі мають доступ до всіх своїх файлів, можна видалити старе сховище файлів у/var/lib/overleaf/data/user_files. Наполегливо рекомендуємо деякий час зберігати ці файли — спершу можна зробити їх недоступними для застосунку, перейменувавши каталог.
Усунення несправностей
Ми додаватимемо сюди поради щодо усунення несправностей. Зверніть увагу: хоча зазвичай ми надаємо підтримку лише клієнтам Server Pro, з огляду на характер цієї міграції ми також докладемо всіх зусиль, щоб підтримати користувачів CE, які зіткнулися з проблемами, специфічними для міграції бінарних файлів. Якщо скрипт міграції бінарних файлів завершився невдало (тобто завершився з помилкою або вивів ненульову кількість невдалих проєктів), надішліть нашій службі підтримки на адресу support+filestoremigration@overleaf.com такі відомості: Тема: Binary file migration problem Текст листа:- Instance Type: CE або Server Pro (видаліть зайве)
- Installation Type: Overleaf toolkit,
docker-compose.ymlчи інше (видаліть зайве) - Version: 5.5.x (toolkit:
$ cat config/version) - Вивід скрипта міграції (має бути в контейнері в
/var/log/overleaf) - Report: (запустіть скрипт міграції з
--report) - Processed projects: (за результатами останнього запуску скрипта)
- Тривалість міграції:
- Вивід
bin/doctor(якщо використовується toolkit) - Версія Toolkit:
$ git rev-parse HEAD(якщо використовується Toolkit)
filestore. Їх можна знайти в /var/log/overleaf/filestore.log у контейнері sharelatex та експортувати так:
Відсутні файли
Старіші версії Server Pro/CE створювали записи в дереві файлів до завершення завантаження файлів користувачами, через що файли могли відображатися як відсутні, якщо завантаження не вдалося. Під час обробки всіх дерев файлів кілька таких випадків можуть бути позначені як помилки. Якщо відсутніх файлів небагато, радимо переглянути ці випадки вручну й видалити їх у редакторі в браузері. Якщо відсутніх файлів багато, радимо звернутися до служби підтримки, див. шаблон листа вище.Пошук пошкоджених дерев файлів
Міграція може завершитися невдало для проєктів із некоректним деревом файлів (наприклад, з порожніми іменами файлів). Список таких проблем можна отримати за допомогою скриптаfind_malformed_filetrees, який перевіряє всі проєкти в базі даних:
fix_malformed_filetree, запускаючи команду по одному разу для кожного некоректного шляху:

