Di chuyển toàn bộ lịch sử dự án
Bản phát hành3.5.x của Community Edition bao gồm tính năng Full Project History vốn đã có trong dịch vụ SaaS của chúng tôi, overleaf.com
Sau khi nâng cấp phiên bản của bạn lên Overleaf CE 3.5.13, tất cả các dự án mới sẽ sử dụng Full Project History theo mặc định. Các dự án hiện có sẽ tiếp tục sử dụng hệ thống History cũ cho đến khi được di chuyển.
Nếu bạn nâng cấp lên
3.5.13 rồi quyết định hạ cấp xuống một phiên bản cũ hơn, bạn nên khôi phục từ một bản sao lưu toàn bộ hệ thống. Lịch sử của các dự án được tạo trong 3.5.13 không tương thích với các phiên bản Overleaf CE cũ hơn.- Theo dõi các thay đổi trong tệp nhị phân, điều mà hệ thống cũ không hỗ trợ.
- Hỗ trợ các phiên bản được gắn nhãn.
- Hệ thống nhìn chung ổn định hơn, ít có nguy cơ mất dữ liệu hơn.
Di chuyển các dự án hiện có
1
Tạo bản sao lưu
Tạo một bản sao lưu đầy đủ cho phiên bản của bạn với một snapshot nhất quán của các thư mục mongo, redis và sharelatex.
2
Cập nhật
Cập nhật phiên bản image sharelatex/sharelatex lên 3.5.13.Toolkit: Dùng script
$ bin/upgrade để nâng cấp toolkit lên phiên bản mới nhất và chỉnh sửa config/version thành 3.5.13.3
Khởi động phiên bản
Lý tưởng nhất là bạn nên ngăn người dùng truy cập vào phiên bản của mình trong khi quá trình di chuyển diễn ra, để tránh mất dữ liệu trong trường hợp bạn cần khôi phục bản sao lưu. Xem Di chuyển ngoại tuyến để biết thêm thông tin về cách thực hiện.
4
Chờ cho đến khi tất cả dịch vụ hoạt động
Chờ cho đến khi tất cả dịch vụ đã khởi động và đang chạy (xem lệnh bên dưới)
5
Chạy script di chuyển
--force-clean xóa dữ liệu lịch sử dự án đã được di chuyển một phần trong hệ thống mới, cho phép thử lại việc di chuyển đối với từng dự án đã thất bại trong các lần thử trước;--fix-invalid-characters thay thế các ký tự không in được mà hệ thống lịch sử mới không hỗ trợ;--convert-large-docs-to-file chuyển đổi các tài liệu vượt quá ngưỡng kích thước có thể chỉnh sửa 2MB thành tệp không thể chỉnh sửa)Kết quả đầu ra sẽ trông như sau:0, và các dòng cuối cùng cho biết không có lỗi nào:6
Mở lại trang
Nếu bạn đã chọn thực hiện di chuyển ngoại tuyến thì bạn sẽ cần mở lại trang. Nếu bạn vẫn đang đăng nhập, bạn cần:
- Nhấp vào nút Admin và chọn Manage Site
- Nhấp vào tab Open/Close Editor
- Nhấp vào nút Reopen Editor
$ bin/up.Di chuyển ngoại tuyến
Để ngăn người dùng đăng nhập trong khi script di chuyển lịch sử đang chạy, vui lòng làm theo các bước sau:- Đăng nhập vào phiên bản Overleaf của bạn bằng tài khoản quản trị viên
- Nhấp vào nút Admin và chọn Manage Site
- Nhấp vào tab Open/Close Editor
- Nhấp vào nút Close Editor
- Nhấp vào nút Disconnect all users
Di chuyển trực tuyến
Có thể chạy các script di chuyển trong khi ứng dụng vẫn đang chạy. Có một vài điểm cần cân nhắc:- Quá trình di chuyển tiêu tốn nhiều CPU, bạn nên theo dõi mức sử dụng tài nguyên trong khi script đang chạy.
- Với giá trị
--concurrencycao, vòng lặp sự kiện (event loop) trong một số dịch vụ (đặc biệt làtrack-changes) có thể bị chặn, dẫn đến trải nghiệm người dùng bị suy giảm. Chúng tôi khuyến nghị bắt đầu với giá trị mặc định--concurrency=1. - Bạn có thể dừng script bất cứ lúc nào. Khi khởi động lại, quá trình di chuyển sẽ tiếp tục từ chỗ bạn đã dừng. Điều này hữu ích nếu bạn muốn chạy việc di chuyển vào những giờ ít bận rộn hơn (ví dụ: ban đêm).
db.projects.count()). Nếu số lượng dự án lớn, bạn có thể chạy script và theo dõi tiến trình, sau đó quyết định tiếp tục chạy trực tuyến hay ngoại tuyến tùy theo trường hợp cụ thể của bạn.
Dọn dẹp dữ liệu lịch sử cũ
Một script để dọn dẹp dữ liệu lịch sử cũ đã được thêm vào Server Pro3.5.6, 4.0.6 và 4.1.0.
Trong Server Pro trước phiên bản 3.5.13, script này xóa nội dung của các collection
docHistory và docHistoryIndex. MongoDB không giải phóng dung lượng đĩa sau khi bạn xóa tài liệu; thay vào đó, nó sẽ tái sử dụng dung lượng đó cho các tài liệu sau này trong cùng collection. Sau khi di chuyển lịch sử, sẽ không có gì ghi vào các collection này nữa, vì vậy dung lượng đĩa sẽ vẫn không được sử dụng.Nếu bạn muốn giải phóng lại dung lượng đĩa, bạn có thể nâng cấp lên Server Pro 3.5.13 (khi vẫn dùng bản phát hành 3.x) hoặc Server Pro 4.2.5 (khi dùng bản phát hành 4.x) và chạy lại script dọn dẹp.Script dọn dẹp đi kèm trong các bản vá mới nhất của Server Pro 3.5.x và 4.x.x mới nhất sẽ xóa bỏ (drop) các collection ở bước cuối cùng.Chạy lại script dọn dẹp là an toàn.Khắc phục sự cố
Chúng tôi sẽ bổ sung các lời khuyên khắc phục sự cố tại đây. Xin lưu ý rằng mặc dù thông thường chúng tôi chỉ hỗ trợ khách hàng Server Pro, nhưng do tính chất của đợt di chuyển này, chúng tôi cũng sẽ cố gắng hết sức để hỗ trợ người dùng CE gặp các vấn đề cụ thể liên quan đến việc di chuyển toàn bộ lịch sử dự án. Nếu script di chuyển toàn bộ lịch sử dự án thất bại (tức là thoát với lỗi hoặc in ra số dự án thất bại khác 0), vui lòng gửi các thông tin sau đến đội ngũ hỗ trợ của chúng tôi qua email support+historymigration@overleaf.com, bao gồm chi tiết: Tiêu đề: Full project history migration problem- Loại phiên bản: CE hoặc Server Pro (xóa mục không phù hợp)
- Kiểu cài đặt: Overleaf toolkit hoặc
docker-compose.ymlhoặc khác (xóa mục không phù hợp) - Phiên bản: 3.5.x (toolkit:
$ cat config/version) - Kết quả đầu ra của script di chuyển (nằm trong container tại
/overleaf/services/web) - Migrated Projects: (theo kết quả đầu ra của script di chuyển)
- Total Projects: (theo kết quả đầu ra của script di chuyển)
- Remaining Projects: (theo kết quả đầu ra của script di chuyển)
- Thời lượng di chuyển:
- Kết quả đầu ra của
bin/doctor(khi dùng toolkit) - Phiên bản Toolkit:
$ git rev-parse HEAD(khi dùng Toolkit)
history-v1, project-history và track-changes vào email. Bạn có thể tìm thấy chúng tại /var/log/sharelatex bên trong container sharelatex và xuất chúng ra như sau:
Tìm các cây tệp bị hỏng
Việc di chuyển có thể thất bại đối với các dự án có cây tệp bị lỗi định dạng (ví dụ: tên tệp bị trống). Bạn có thể tìm danh sách các vấn đề này bằng scriptfind_malformed_filetrees, script này kiểm tra tất cả các dự án trong cơ sở dữ liệu:
fix_malformed_filetree, chạy lệnh một lần cho mỗi đường dẫn bị lỗi:
Hạ cấp dự án từ Full Project History về lịch sử cũ
Nếu có một dự án đã được di chuyển sang Full Project History nhưng bạn muốn quay lại lịch sử cũ, hãy dùng scriptdowngrade_project như sau:

