Skip to main content
Đôi khi chúng tôi cần thay đổi lược đồ dữ liệu trong cơ sở dữ liệu khi Overleaf phát triển, và các script di chuyển (migration) được dùng để tự động hóa quá trình này. Chúng sẽ được chạy trước trên overleaf.com, phiên bản Overleaf lớn nhất thế giới, nên hầu hết các tình huống đều đã được gặp phải; tuy nhiên chúng tôi không đảm bảo gì đối với dữ liệu của bạn. Vui lòng đảm bảo bạn tạo một bản sao lưu nhất quán dữ liệu của mình trước khi nâng cấp phiên bản.
Khi nâng cấp lên một Docker image mới, mọi migration chưa được chạy sẽ được tự động thực thi. Việc này có thể mất một khoảng thời gian tùy thuộc vào kích thước tập dữ liệu của bạn; theo dõi log sẽ cho bạn biết tiến độ. Để biết thêm thông tin, xem tài liệu Logging của chúng tôi.

Lưu trữ dữ liệu

Overleaf Community Edition và Server Pro lưu dữ liệu ở ba nơi riêng biệt:
  • Cơ sở dữ liệu MongoDB: Đây là nơi lưu trữ dữ liệu người dùng và dự án.
  • Redis: đóng vai trò bộ nhớ đệm hiệu năng cao cho dữ liệu đang xử lý, chủ yếu lưu thông tin liên quan đến các lần chỉnh sửa dự án và cộng tác.
  • Hệ thống tệp Overleaf: lưu các tệp dự án không thể chỉnh sửa (bao gồm hình ảnh) và cũng đóng vai trò bộ nhớ đệm đĩa tạm thời trong quá trình biên dịch dự án.
Thư mục này có thể là ~/sharelatex_data hoặc ~/overleaf_data, tùy thuộc vào thời điểm phiên bản của bạn được thiết lập.
Đối với tệp dự án và dữ liệu lịch sử dự án đầy đủ, chúng tôi cũng hỗ trợ các backend lưu trữ tương thích S3.
Xem phần Chi tiết các thư mục để biết thêm thông tin về cấu trúc thư mục trên đĩa.

Thực hiện sao lưu nhất quán

Có ba kho lưu trữ cần được đưa vào khi thực hiện sao lưu nhất quán:
  • MongoDB
  • Redis
  • Dữ liệu hệ thống tệp Overleaf
Để tạo ra một bản sao lưu nhất quán, bắt buộc phải ngăn người dùng tạo dữ liệu mới trong khi quá trình sao lưu đang chạy. Do đó, chúng tôi khuyên bạn nên lên lịch một khoảng thời gian bảo trì, trong đó người dùng không thể truy cập phiên bản hoặc chỉnh sửa dự án của họ. Trước khi bắt đầu quá trình sao lưu, bạn cần đưa phiên bản của mình về trạng thái ngoại tuyến. Kể từ Server Pro 3.5.0, quá trình tắt máy tự động đóng trang và ngắt kết nối người dùng. Để tắt phiên bản, bạn cần chạy bin/docker-compose stop sharelatex nếu bạn đang chạy triển khai bằng Toolkit, hoặc docker compose stop sharelatex nếu bạn đang chạy Docker Compose. Khi container sharelatex đã dừng, bạn có thể bắt đầu quá trình sao lưu. Khi quá trình sao lưu đã hoàn tất thành công, bạn cần khởi động container sharelatex. Để làm điều này, hãy chạy bin/docker-compose start sharelatex nếu bạn đang chạy triển khai bằng Toolkit, hoặc docker compose start sharelatex nếu bạn đang chạy Docker Compose.
  • Các bản sao lưu nên được lưu trên một máy chủ tách biệt với máy chủ đang chạy phiên bản Overleaf của bạn, lý tưởng nhất là ở một địa điểm hoàn toàn khác.
  • Sao chép cơ sở dữ liệu sang nhiều phiên bản MongoDB có thể mang lại một mức độ dự phòng, nhưng không bảo vệ được trước việc dữ liệu bị hỏng.
  • Kiểm thử các bản sao lưu là cách tốt nhất để đảm bảo chúng đầy đủ và hoạt động được.

MongoDB

MongoDB đi kèm một công cụ dòng lệnh tên là mongodump, có thể dùng để tạo bản sao lưu dữ liệu người dùng và dự án được lưu trong cơ sở dữ liệu.

Dữ liệu hệ thống tệp Overleaf

Đối với triển khai bằng Toolkit, đường dẫn lưu các tệp không thể chỉnh sửa được chỉ định trong config/overleaf.rc bằng biến môi trường OVERLEAF_DATA_PATH, nhưng tùy thuộc vào thời điểm phiên bản của bạn được tạo, đường dẫn này có thể là data/sharelatex. Cần sử dụng một công cụ như rsync để sao chép đệ quy thư mục này nhằm đảm bảo tạo ra bản sao lưu đầy đủ.

Redis

Redis lưu các phiên người dùng và các cập nhật tài liệu đang chờ trước khi chúng được ghi vào MongoDB. Cơ chế lưu bền Append Only File (AOF) là cấu hình được khuyến nghị cho việc lưu bền dữ liệu Redis. Người dùng Toolkit có AOF được bật theo mặc định đối với các bản cài đặt mới; người dùng hiện tại có thể tìm thêm thông tin về việc bật AOF tại đây. Nếu bạn quyết định tiếp tục sử dụng snapshot RDB cùng với AOF, bạn có thể sao chép tệp RDB đến một vị trí an toàn để làm bản sao lưu.

Di chuyển dữ liệu giữa các máy chủ

Tốt nhất là phiên bản mới của bạn chưa có dữ liệu quan trọng nào. Chúng tôi không có quy trình hợp nhất dữ liệu của các phiên bản. Giả sử phiên bản mới chưa có dữ liệu, dưới đây là một số bước bạn có thể làm theo. Nói một cách tổng quát, chúng ta tạo một tar-ball của các volume mongo, redis và overleaf, sao chép nó sang máy chủ mới, rồi giải nén lại ở đó.

Toolkit

Docker Compose

Tùy thuộc vào tệp docker-compose.yml của bạn, bạn có thể cần điều chỉnh đường dẫn của các volume mongo, redis, overleaf.
Khi chạy với người dùng root (hoặc với sudo), tar sẽ giữ lại chủ sở hữu/nhóm và quyền của tệp, điều này rất quan trọng khi khôi phục bản sao lưu.

Chi tiết các thư mục

Các thư mục sau có thêm ký hiệu gợi ý:
  • (b) đưa vào bản sao lưu, tốt nhất là khi phiên bản đã dừng để đảm bảo tính nhất quán
  • (d) có thể xóa
  • (e) tệp tạm thời, có thể xóa khi phiên bản đã dừng
  1. ~/mongo_data (b)
    • thư mục dữ liệu của mongodb
  2. ~/redis_data (b)
    • thư mục dữ liệu của redis db
  3. ~/overleaf_data
    1. bin
      1. synctex (d)
        • không còn được dùng trong bản phát hành mới nhất, trước đây sử dụng một tệp nhị phân synctex tùy chỉnh (synctex được dùng để ánh xạ nguồn giữa các tệp .tex và pdf)
    2. data
      1. cache (e)
        • bộ nhớ đệm tệp nhị phân cho việc biên dịch
      2. compiles (e)
        • nơi diễn ra quá trình biên dịch latex
      3. db.sqlite (d)
        • không còn được dùng trong bản phát hành mới nhất, trước đây lưu thông tin bộ nhớ đệm của clsi (nay đã chuyển sang các map đơn giản trong bộ nhớ hoặc quét đĩa)
      4. db.sqlite-wal (d)
        • không còn được dùng trong bản phát hành mới nhất, xem db.sqlite
      5. output (e)
        • nơi lưu đầu ra biên dịch latex để phục vụ cho client
      6. template_files (b)
        • ảnh xem trước của hệ thống mẫu (chỉ dành cho Server Pro)
      7. user_files (b)
        • các tệp nhị phân của dự án
      8. history (b)
        • các tệp lịch sử dự án đầy đủ
    3. tmp
      1. dumpFolder (e)
        • các tệp tạm thời từ việc xử lý tệp zip
      2. uploads (e)
        • bộ đệm cho việc tải tệp lên (tải lên tệp nhị phân/tạo dự án mới từ zip)
      3. projectHistories (e)
        • các tệp tạm thời cho việc di chuyển lịch sử dự án đầy đủ
Lần sửa đổi cuối 5 tháng 10, 2026