Migrasi file biner
Rilis versi mayor6.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 keOVERLEAF_FILESTORE_MIGRATION_LEVEL=0dimungkinkan.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2file hanya dibaca dari dan ditulis ke history. Penurunan keOVERLEAF_FILESTORE_MIGRATION_LEVEL=1tidak dimungkinkan, kecuali migrasi dilakukan secara “offline”.
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.
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
4
Flush antrean riwayat proyek
"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 -d7
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.0, dan baris terakhir yang menunjukkan tidak ada kegagalan:9
Hentikan instance
Toolkit:
bin/stop sharelatexdocker-compose.yml lama: docker compose stop sharelatex10
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 -d13
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
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
filestoremungkin mengalami pemblokiran, yang dapat menurunkan pengalaman pengguna. Kami menyarankan untuk memulai dengan nilai default--concurrency=10dan--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).
--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.ymlatau 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)
filestore ke email. Anda dapat menemukannya di /var/log/overleaf/filestore.log di dalam kontainer sharelatex dan mengekspornya seperti ini:
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 skripfind_malformed_filetrees yang memeriksa semua proyek di database:
fix_malformed_filetree, dengan menjalankan perintah satu kali untuk setiap path yang bermasalah:

