Mỗi bản phát hành mới của Server CE/Server Pro sẽ ghi rõ mọi thay đổi về phiên bản MongoDB được hỗ trợ trong ghi chú phát hành của nó.
Tôi có nên cập nhật MongoDB không?
Bạn chỉ nên cân nhắc cập nhật phiên bản MongoDB nếu bạn đang lên kế hoạch nâng cấp phiên bản Server CE/Server Pro của mình. Nếu bạn đang chạy một phiên bản MongoDB mới hơn phiên bản được khuyến nghị cho phiên bản hiện tại (hoặc phiên bản mục tiêu) của bạn, thì không cần thực hiện bất kỳ thay đổi nào. Nếu bạn gặp một vấn đề cụ thể mà bạn cho rằng có thể liên quan đến phiên bản MongoDB hiện tại, hãy thoải mái tạo issue nếu bạn là người dùng Server CE, hoặc liên hệ với bộ phận hỗ trợ của Overleaf nếu bạn là người dùng Server Pro.Kiểm tra phiên bản MongoDB của bạn
Mở shellmongo sẽ in ra phiên bản hiện tại ngay lập tức.
Người dùng Overleaf Toolkit:
Quy trình cập nhật
Việc cập nhật phiên bản MongoDB trong quá trình nâng cấp phiên bản Server CE/Server Pro được thực hiện như sau:- Quyết định phiên bản Server CE/Server Pro mà bạn dự định nâng cấp lên.
- Tìm phiên bản MongoDB được khuyến nghị cho bản phát hành Overleaf Server CE/Server Pro cụ thể đó.
- Làm theo hướng dẫn để nâng cấp MongoDB lên phiên bản mục tiêu.
- Nâng cấp phiên bản image Server CE/Server Pro và khởi động lại phiên bản.
Khi nâng cấp Server CE/Pro, chúng tôi khuyến nghị nâng cấp lên bản phát hành mới nhất của phiên bản chính (major) đang triển khai trước khi nâng cấp lên bản phát hành mới nhất của phiên bản chính tiếp theo. Nếu bản triển khai của bạn chậm hơn bản mới nhất từ hai phiên bản chính trở lên, bạn sẽ phải thực hiện nâng cấp qua nhiều bước.Ví dụ, nếu bạn đang chạy 3.5.10, bạn sẽ cần nâng cấp lên 3.5.13 -> Thực hiện di chuyển Full Project History -> 4.2.9 -> 5.5.4.Bạn không bao giờ nên bỏ qua các phiên bản chính (3.5.10 -> 5.5.4). Nếu bạn đang dùng Toolkit và chậm hơn bản mới nhất từ hai phiên bản chính trở lên, bạn không được dùng script
bin/upgrade vì bạn sẽ cần thực hiện nâng cấp thủ công qua nhiều bước.Thông tin hỗ trợ phiên bản
Trong trường hợp bạn quyết định dùng một phiên bản cũ hơn, bảng này cho thấy phiên bản MongoDB được khuyến nghị cho các bản phát hành Server CE/Server Pro trước đây, nhưng bạn không bao giờ nên hạ cấp phiên bản MongoDB của mình.| Server CE/Server Pro | Phiên bản MongoDB | Phiên bản tương thích tính năng tối thiểu | Phiên bản tối đa được trình điều khiển Node.js hỗ trợ |
|---|---|---|---|
| 2.0.x | 3.4 | - | - |
| 2.1.x đến 2.4.x | 3.6 | - | - |
| >=2.5.0 | 4.0 | - | - |
| >=3.1.0 | 4.2 | - | - |
| >=3.2.0 | 4.4 | - | - |
| >=4.2.0 | 5.0 | - | - |
| >=5.1.0 | 6.0 | - | - |
| >=5.3.1 | 6.0 | 5.0 | 8.0 |
| >=5.5.0 | 6.0 | 6.0 | 8.0 |
| 6.0.0 | 8.0 | 8.0 | 8.0 |
Phiên bản tương thích tính năng tối thiểu ở trên dựa trên phiên bản MongoDB tương ứng được khuyến nghị sử dụng với phiên bản Overleaf được nêu. Nếu bạn dự định sử dụng phiên bản cao hơn, MongoDB sẽ có yêu cầu tối thiểu riêng.
Nâng cấp MongoDB
MongoDB yêu cầu nâng cấp từng bước. Điều đó có nghĩa là bạn không thể đi thẳng từ, chẳng hạn,4.0 lên 5.0. Trước tiên bạn cần cập nhật từ 4.2 lên 4.4, rồi sau đó mới lên 5.0.
MongoDB dùng số chẵn cho các phiên bản ổn định của họ.
Hướng dẫn cập nhật khi chạy MongoDB bên ngoài Docker
Dưới đây là các liên kết đến hướng dẫn cập nhật từ mongodb.com khi nâng cấp MongoDB.- Ghi chú phát hành MongoDB - nâng cấp MongoDB từ
4.2lên4.4 - Ghi chú phát hành MongoDB - nâng cấp MongoDB từ
4.4lên5.0 - Ghi chú phát hành MongoDB - nâng cấp MongoDB từ
5.0lên6.0 - Ghi chú phát hành MongoDB - nâng cấp MongoDB từ
6.0lên7.0 - Ghi chú phát hành MongoDB - nâng cấp MongoDB từ
7.0lên8.0
Hướng dẫn cho
5.0 trở lên hướng đến cài đặt dạng replica set thay vì standalone. Vì Server Pro/CE 4.0.1+ sử dụng transaction, MongoDB cần được chạy dưới dạng replica set.- Đặt cờ tương thích như mô tả trong ghi chú phát hành của MongoDB (xem các ví dụ bên dưới).
- Sau đó cập nhật image mongo:
- Người dùng Toolkit Cập nhật
MONGO_VERSION, ví dụ:MONGO_VERSION=6.0 - Người dùng Docker Compose Cập nhật phiên bản của tag image
mongo,
ví dụ:services -> mongo -> image: mongo:6.0;
- Người dùng Toolkit Cập nhật
5.0 lên 6.0
Hãy bắt đầu bằng việc đảm bảo rằng chúng ta đang chạy MongoDB 6.0:
Người dùng Overleaf Toolkit:
featureCompatibilityVersion phải được đặt thành 5.0. Chúng ta thực hiện điều này bằng cách mở một shell MongoDB và chạy lệnh được chỉ định:
Người dùng Overleaf Toolkit:
Người dùng Docker Compose có thể chạy
docker compose exec mongo mongosh để mở shell và chạy các lệnh tương tự như người dùng Toolkit.bin/stop, đặt MONGO_VERSION=6.0 trong config/overleaf.rc, rồi khởi động lại dịch vụ mongo bằng bin/up mongo) để xác nhận việc cập nhật diễn ra suôn sẻ.
Cuối cùng, chúng ta sẽ cập nhật phiên bản image Server CE/Server Pro lên phiên bản mục tiêu và tạo lại tất cả dịch vụ bằng lệnh bin/up -d.
Người dùng Docker Compose:
Sau đó, chúng ta sẽ dừng các phiên bản Server CE/Server Pro và MongoDB bằng lệnh docker compose stop, cập nhật tệp docker-compose.yml để dùng image: mongo:6.0, rồi khởi động lại dịch vụ mongo bằng lệnh docker compose up mongo để xác nhận việc cập nhật diễn ra suôn sẻ.
Cuối cùng, chúng ta sẽ cập nhật phiên bản image Server CE/Server Pro lên phiên bản mục tiêu và tạo lại tất cả dịch vụ bằng lệnh docker compose up.
Bắt đầu bằng việc đảm bảo rằng bạn đang chạy MongoDB 6.0 bằng các lệnh mongod --version ở trên.
Theo hướng dẫn nâng cấp, yêu cầu duy nhất là featureCompatibilityVersion phải được đặt thành 6.0. Chúng ta thực hiện điều này bằng cách mở một shell MongoDB và chạy lệnh db.adminCommand({ setFeatureCompatibilityVersion: "6.0" }).
Người dùng Overleaf Toolkit:
bin/stop, đặt MONGO_VERSION=7.0 trong config/overleaf.rc, rồi khởi động lại dịch vụ mongo bằng bin/up mongo) để xác nhận việc cập nhật diễn ra suôn sẻ.
Cuối cùng, chúng ta sẽ cập nhật phiên bản image Server CE/Server Pro lên phiên bản mục tiêu và tạo lại tất cả dịch vụ bằng lệnh bin/up -d.
Bắt đầu bằng việc đảm bảo rằng bạn đang chạy MongoDB 7.0 bằng các lệnh mongod --version ở trên.
Theo hướng dẫn nâng cấp, yêu cầu duy nhất là featureCompatibilityVersion phải được đặt thành 7.0. Chúng ta thực hiện điều này bằng cách mở một shell MongoDB và chạy lệnh db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true }). Lưu ý rằng lệnh này giờ đây yêu cầu thêm tham số confirm: true.
bin/stop, đặt MONGO_VERSION=8.0 trong config/overleaf.rc, rồi khởi động lại dịch vụ mongo bằng bin/up mongo) để xác nhận việc cập nhật diễn ra suôn sẻ.
Cuối cùng, chúng ta sẽ cập nhật phiên bản image Server CE/Server Pro lên phiên bản mục tiêu và tạo lại tất cả dịch vụ bằng lệnh bin/up -d.
Các lệnh tương đương cho người dùng docker compose
Đối với người dùng docker compose, các lệnh tương đương là:docker compose exec mongo mongod --versionđể hiển thị phiên bản mongodocker compose exec mongo mongoshđể mở shell mongo cho các lệnh quản trị- Lệnh
docker compose stopđể dừng máy chủ - Chỉnh sửa tệp
docker-compose.ymlđể dùngimage: mongo:6.0nhằm nâng cấp phiên bản mongo docker compose up mongođể khởi động lại dịch vụ mongo và xác nhận việc cập nhật diễn ra suôn sẻ- Chỉnh sửa tệp
docker-compose.ymlđể dùngimage: sharelatex:VERSIONnhằm nâng cấp phiên bản image docker compose upđể tạo lại tất cả dịch vụ.
Tạo role tùy chỉnh
Trong phiên bản5.5.1, chúng tôi đã thêm một bước kiểm tra khi khởi động để xác minh phiên bản tương thích tính năng của MongoDB. Nếu cơ sở dữ liệu MongoDB của bạn sử dụng xác thực (ví dụ: xác thực cơ bản), container sharelatex có thể không khởi động được và hiển thị lỗi quyền “not authorized on admin to execute command”.
Để khắc phục, bạn có thể tạo một role mới trong MongoDB và gán nó cho tài khoản người dùng được dùng để truy cập cơ sở dữ liệu theo hướng dẫn bên dưới, hoặc đặt ALLOW_MONGO_ADMIN_CHECK_FAILURES=true để cho phép bước kiểm tra thất bại mà không ngăn bản triển khai khởi động.
Role mới này chỉ cấp quyền đọc các tham số máy chủ MongoDB trên toàn cluster và có thể được tái sử dụng cho mục đích giám sát,

