Bạn có một tệp dữ liệu bị hỏng do tháo đĩa không sạch trong quá trình tắt máy. Ngay cả khi bạn khôi phục cơ sở dữ liệu, bạn vẫn có thể gặp sự cố do sự không nhất quán của các khóa trong cơ sở dữ liệu. Sau đây là một quy trình để giải quyết vấn đề này một cách chính xác
Phục hồi MongoDB từ lỗi đột ngột
-
Nếu các tệp cơ sở dữ liệu nằm trên máy chủ của bạn, hãy tạo bản sao của chúng trước khi bắt đầu quy trình này. Để sao chép chúng, bạn có thể sử dụng
docker cp <container_name>:<location of files in container> <location on host>
Nếu các tệp cơ sở dữ liệu vẫn còn bên trong vùng chứa, hãy lấy bên ngoài vùng chứa và tạo một bản sao
-
Bắt đầu một vùng chứa sửa chữa trên các tệp như sau:
docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
Tên hình ảnh phụ thuộc vào nền tảng và đối với Raspberry PI3, tên là
andresvidal/rpi3-mongodb3
, đối với arm64v8 hoặc amd64, vùng chứa làmongo
Đảm bảo rằng bạn có cùng phiên bản hình ảnh MongoDB với phiên bản được sử dụng để tạo tệp dữ liệu.
Nếu tệp không thể sửa chữa được, hãy thử:
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
-
Sau khi các tệp được sửa chữa, bạn cần bắt đầu một vùng chứa trên cơ sở dữ liệu và xuất tệp bằng
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
-
Bắt đầu một cơ sở dữ liệu sạch cho dự án của bạn và sử dụng
mongorestore
để nhập dữ liệu vào cơ sở dữ liệu mới.
Bạn có thể kiểm tra các liên kết sau để biết thêm thông tin: