Skip to main content

Migrasi file biner

Rilis versi mayor 6.0 mendatang dari Server Pro dan Community Edition akan mengurangi penggunaan penyimpanan file biner hingga setengahnya. Migrasi online disertakan dalam versi 5.5.7 , sehingga downtime selama proses pembaruan dapat diminimalkan. Sejak Server Pro 4.x, file biner disimpan dua kali: di penyimpanan file aktif di “filestore” dan di sistem riwayat proyek lengkap. Ke depannya, hanya satu salinan dari setiap file yang akan disimpan di sistem riwayat proyek lengkap. Migrasi ke sistem penyimpanan terkonsolidasi terdiri dari dua bagian: flag baru untuk mengendalikan fase migrasi dan skrip yang memproses semua proyek aktif dan proyek yang dihapus sementara (soft-deleted). Fase:
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=0 (default), file dibaca dari dan ditulis ke filestore. File ditulis ke history secara asinkron.
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 , file dibaca dari history dengan fallback ke filestore, dan ditulis ke filestore maupun history. Penurunan ke OVERLEAF_FILESTORE_MIGRATION_LEVEL=0 dimungkinkan.
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 file hanya dibaca dari dan ditulis ke history. Penurunan ke OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 tidak dimungkinkan, kecuali migrasi dilakukan secara “offline”.
Saat menyimpan data di S3 dan menggunakan akun layanan terpisah untuk filestore (OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) dan history (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID): Berikan pengguna filestore akses baca ke bucket history untuk blob OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET . Ke depannya, layanan filestore akan melayani pembacaan dari layanan compiler.
Sangat disarankan untuk melakukan migrasi file biner di lingkungan non-produksi/sandbox terlebih dahulu.
Lisensi standar Server Pro memungkinkan Anda menjalankan aplikasi di lingkungan produksi serta satu lingkungan non-produksi/sandbox; sangat disarankan agar Anda menyediakan lingkungan non-produksi untuk pengujian.
Jika Anda memperbarui ke Server Pro/CE versi 6.0 lalu memutuskan untuk menurunkan ke versi sebelumnya, Anda harus memulihkan dari cadangan sistem lengkap.

Prosedur migrasi

1

Buat cadangan

Buat cadangan lengkap instance Anda dengan snapshot yang konsisten dari direktori mongo, redis, dan sharelatex.
2

Perbarui

Toolkit: Gunakan skrip $ bin/upgrade untuk memperbarui toolkit ke versi terbaru. Saat ditanya, jangan konfirmasi prompt Upgrade image? — sebagai gantinya, sunting file config/version secara manual dan atur nilainya ke 5.5.7.docker-compose.yml lama: Perbarui versi layanan sharelatex ke 5.5.7.
3

Perkirakan jumlah proyek yang terdampak

Contoh output:
4

Flush antrean riwayat proyek

Ulangi flush hingga semua proyek telah di-flush ("project_ids":0).
Jika “failedProjects” tidak bernilai nol, silakan hubungi tim dukungan dan jangan lanjutkan migrasi file biner.
5

Naikkan fase migrasi ke 1

Toolkit: Atur OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 di config/variables.env.docker-compose.yml lama: Atur OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' di bagian environment pada layanan sharelatex.
6

Terapkan perubahan konfigurasi dan jalankan instance

Toolkit: bin/up -ddocker-compose.yml lama: docker compose up -d
7

Verifikasi akses ke file biner

Buka sebuah proyek di editor Overleaf di browser dan pilih file biner, misalnya gambar.
8

Jalankan skrip migrasi

Jika Anda menyimpan file log secara persisten di luar kontainer sharelatex, pastikan pemilik direktori log diatur ke pengguna www-data (uid=33) agar file log yang dihasilkan dapat ditulis.
Output-nya akan terlihat seperti ini:
Jika migrasi berhasil, Anda akan mendapatkan kode keluar 0, dan baris terakhir yang menunjukkan tidak ada kegagalan:
File log akan terlihat seperti ini (gunakan path seperti yang ditampilkan oleh skrip):
9

Hentikan instance

Toolkit: bin/stop sharelatexdocker-compose.yml lama: docker compose stop sharelatex
10

Buat file lama tidak dapat diakses oleh aplikasi

Sekarang Anda dapat memindahkan file lama ke penyimpanan sekunder. Kami menyarankan untuk menyimpan file tersebut selama beberapa waktu jika muncul masalah di kemudian hari.
11

Naikkan fase migrasi ke 2

Toolkit: Atur OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 di config/variables.env.docker-compose.yml lama: Atur OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' di bagian environment pada layanan sharelatex.
12

Terapkan perubahan konfigurasi dan jalankan instance

Toolkit: bin/up -ddocker-compose.yml lama: docker compose up -d
13

Verifikasi akses ke file biner

Buka sebuah proyek di editor Overleaf di browser dan pilih file biner, misalnya gambar.

Migrasi offline

Jika Anda ingin mencegah pengguna masuk selama skrip migrasi file biner berjalan, ikuti langkah-langkah berikut:
  • Masuk ke instance Overleaf Anda dengan akun admin
  • Klik tombol Admin dan pilih Manage Site
  • Klik tab Open/Close Editor
  • Klik tombol Close Editor
  • Klik tombol Disconnect all users
Setelah ini dilakukan, pengguna yang sedang masuk akan dialihkan ke halaman pemeliharaan, dan pengguna baru yang mengunjungi halaman login akan melihat halaman pemeliharaan dan tidak dapat masuk. Anda perlu mengulangi langkah-langkah ini saat memulai ulang instance. Untuk membuka kembali situs, cukup mulai ulang instance.

Migrasi online

Skrip migrasi dapat dijalankan selama aplikasi masih berjalan. Ada beberapa hal yang perlu dipertimbangkan:
  • Proses migrasi sangat intensif IO, sehingga Anda perlu memantau penggunaan sumber daya selama skrip berjalan.
  • Dengan konkurensi pemrosesan yang tinggi, event loop di layanan filestore mungkin mengalami pemblokiran, yang dapat menurunkan pengalaman pengguna. Kami menyarankan untuk memulai dengan nilai default --concurrency=10 dan --concurrent-batches=1 .
  • Anda dapat menghentikan skrip kapan saja. Menjalankannya kembali akan memvalidasi proyek-proyek sebelumnya dan melewati file yang sudah diproses. Ini berguna jika Anda lebih suka menjalankan migrasi pada jam-jam yang tidak terlalu sibuk (misalnya pada malam hari).
Rekomendasi kami adalah menutup situs dan menjalankan migrasi secara offline dalam jendela pemeliharaan jika jumlah proyek Anda kurang dari 1000 proyek (lihat output skrip migrasi saat dijalankan dengan --report). Jika jumlah proyek besar, Anda dapat menjalankan skrip dan memantau kemajuannya, lalu memutuskan apakah akan melanjutkannya secara online atau offline sesuai dengan kasus Anda.

Membersihkan data file biner lama

Setelah migrasi selesai dan Anda telah memverifikasi bahwa proyek masih dapat mengakses semua file-nya, Anda dapat menghapus penyimpanan file lama di /var/lib/overleaf/data/user_files. Kami sangat menyarankan untuk menyimpan file-file ini selama beberapa waktu - Anda dapat membuatnya tidak dapat diakses oleh aplikasi dengan mengganti nama foldernya terlebih dahulu.

Pemecahan masalah

Kami akan menambahkan saran pemecahan masalah di sini. Perlu diperhatikan bahwa meskipun biasanya kami hanya memberikan dukungan kepada pelanggan Server Pro, mengingat sifat migrasi ini, kami juga akan berusaha sebaik mungkin membantu pengguna CE yang mengalami masalah khusus terkait migrasi file biner. Jika skrip migrasi file biner gagal (yaitu keluar dengan error atau menampilkan jumlah proyek gagal yang tidak nol), kirimkan detail berikut ke tim dukungan kami melalui email support+filestoremigration@overleaf.com, dengan rincian: Subjek: Binary file migration problem Isi:
  • Instance Type: CE atau Server Pro (hapus yang tidak sesuai)
  • Installation Type: Overleaf toolkit atau docker-compose.yml atau lainnya (hapus yang tidak sesuai)
  • Versi: 5.5.x (toolkit: $ cat config/version)
  • Output skrip migrasi (yang seharusnya berada di dalam kontainer di bawah /var/log/overleaf)
  • Laporan: (jalankan skrip migrasi dengan --report)
  • Proyek yang diproses: (berdasarkan eksekusi skrip terakhir)
  • Durasi migrasi:
  • Output bin/doctor (saat menggunakan toolkit)
  • Versi toolkit: $ git rev-parse HEAD (saat menggunakan Toolkit)
Pertimbangkan untuk melampirkan file log layanan filestore ke email. Anda dapat menemukannya di /var/log/overleaf/filestore.log di dalam kontainer sharelatex dan mengekspornya seperti ini:
Harap sunting (redact) informasi sensitif apa pun dari file log sebelum melampirkannya.

File yang hilang

Versi lama Server Pro/CE membuat entri file-tree sebelum unggahan pengguna selesai, yang dapat menyebabkan file tampak hilang ketika unggahan gagal. Anda mungkin menemukan beberapa kasus seperti ini dilaporkan sebagai error saat memproses semua file-tree. Jika jumlah file yang hilang sedikit, pertimbangkan untuk meninjau kasus-kasus ini secara manual dan menghapusnya dari editor di browser. Jika jumlah file yang hilang banyak, pertimbangkan untuk menghubungi tim dukungan, lihat templat email di atas.

Menemukan file tree yang rusak

Migrasi mungkin gagal untuk proyek yang memiliki file tree yang tidak valid (misalnya, nama file kosong). Anda dapat menemukan daftar masalah ini menggunakan skrip find_malformed_filetrees yang memeriksa semua proyek di database:
Untuk memperbaiki path yang tidak valid, gunakan skrip fix_malformed_filetree, dengan menjalankan perintah satu kali untuk setiap path yang bermasalah:
Terakhir diubah pada 5 Oktober 2026