MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bạn có nên bật MongoDB Journaling không?

MongoDB sử dụng nhật ký trên đĩa để đảm bảo các hoạt động ghi và cung cấp khả năng phục hồi sự cố. MongoDB cũng tạo nhật ký cho mỗi lần ghi bao gồm vị trí đĩa chính xác và các byte đã thay đổi trong quá trình ghi. Do đó, nếu bạn gặp sự cố trong máy chủ, nhật ký có thể được sử dụng để phát lại bất kỳ lần ghi nào chưa được ghi vào tệp dữ liệu.

MongoDB sử dụng các tệp được ánh xạ bộ nhớ để ghi dữ liệu của bạn vào đĩa. Theo mặc định, các tệp dữ liệu MongoDB được chuyển vào đĩa sau mỗi 60 giây. Họ cũng sử dụng các tệp ánh xạ bộ nhớ cho tạp chí và theo mặc định, tạp chí được chuyển vào đĩa cứ sau 100 mili giây. Vì các tệp dữ liệu cuối cùng được chuyển vào đĩa sau mỗi 60 giây, nhật ký không cần theo dõi quá trình ghi trong hơn một phút. Để biết thêm chi tiết về cơ chế ghi nhật ký, hãy tham khảo tài liệu chính thức. Để hiểu chi tiết hơn về cách ánh xạ chế độ xem hoạt động, bạn có thể xem blog của Kristina.

Viết nhật ký Quan tâm

>db.data.insert({"name":"testentry"});
>db.runCommand({"getLastError":1, "j":true});

Khi bạn bật tính năng ghi nhật ký trong MongoDB, bạn cũng có thể chỉ định mối quan tâm viết trong MongoDB là ‘Đã ghi nhật ký’ cho các hoạt động MongoDB của mình. Điều này ngụ ý rằng MongoDB chỉ xác nhận hoạt động ghi sau khi cam kết với tạp chí. Tuy nhiên, điều này có một nhược điểm - khi bạn chỉ định “j”:true với getLastError, MongoDB sẽ đợi khoảng 1/3 nội bộ tạp chí cam kết trước khi xác nhận dữ liệu tạp chí. Khoảng thời gian cam kết tạp chí mặc định là 100ms - vì vậy MongoDB sẽ đợi 30ms và cam kết dữ liệu. Về cơ bản, điều này có nghĩa là trên một luồng đơn, bạn chỉ có thể nhận được khoảng 33,3 lần ghi / giây và phương pháp tốt nhất được khuyến nghị là thực hiện hàng loạt các lần ghi của bạn. Ví dụ:nếu bạn có 50 lần ghi, hãy sử dụng cài đặt “j”:true chỉ cho lần ghi cuối cùng - điều này sẽ xác nhận rằng tất cả 50 lần ghi trước đó đã được thực hiện xong.

Tóm tắt

Mọi phiên bản MongoDB sản xuất phải chạy khi bật tính năng ghi nhật ký. Nếu bạn chưa bật tính năng ghi nhật ký và máy chủ hoặc quy trình MongoDB của bạn gặp sự cố, MongoDB sẽ không thể đảm bảo tính toàn vẹn của dữ liệu. Bạn sẽ cần chạy thao tác “sửa chữa” trên cơ sở dữ liệu, tùy thuộc vào lượng dữ liệu, có thể mất vài giờ để hoàn thành. Chỉ tắt tính năng này nếu bạn thực sự biết mình đang làm gì. Tại ScaleGrid, tất cả các phiên bản của chúng tôi đều tuân theo cấu hình phương pháp hay nhất MongoDB và bật tính năng ghi nhật ký theo mặc định.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tại sao không nên đóng kết nối MongoDB ở bất kỳ đâu trong mã Node.js?

  2. Cách ClusterControl thực hiện khôi phục và chuyển đổi dự phòng cơ sở dữ liệu tự động

  3. Làm cách nào để Đảm bảo Nhóm MongoDB của bạn có thể sống sót khi Amazon AWS ngừng hoạt động?

  4. Hướng dẫn MongoDB BSON

  5. Cách đếm số lượng tài liệu trong bộ sưu tập mongodb