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

Danh sách kiểm tra hoạt động &phát triển cho MongoDB

Danh sách kiểm tra hoạt động và phát triển MongoDB nhằm giúp quản trị viên cơ sở dữ liệu tránh gặp phải các sự cố trong môi trường sản xuất MongoDB. Danh sách kiểm tra phát triển nên giải quyết các vấn đề như ...

  1. Thiết kế lược đồ
  2. Độ bền của dữ liệu
  3. Nhân rộng
  4. Ổ đĩa
  5. Làm sắc nét

Một danh sách kiểm tra hoạt động, mặt khác, các địa chỉ ...

  1. Nhân rộng
  2. Hệ thống tệp
  3. Làm sắc nét
  4. Phần cứng
  5. Ghi nhật ký (WiredTiger Storage Engine)
  6. Cấu hình hệ điều hành
  7. Triển khai phần cứng đám mây
  8. Giám sát
  9. Sao lưu và cân bằng tải

Trước khi bắt đầu một dự án, bạn nên làm việc trên danh sách kiểm tra hoạt động và phát triển để cho phép MongoDB hoạt động trơn tru trong quá trình sản xuất. Bài viết này giải thích danh sách kiểm tra hoạt động và phát triển trước khi triển khai MongoDB.

Danh sách kiểm tra hoạt động của MongoDB

Sao chép

Tất cả các tập hợp thành viên bản sao không bị ẩn phải được cấp phép giống nhau đối với đĩa, RAM, thiết lập mạng và CPU.

Kích thước nhật ký phải được định cấu hình đúng cách để giải quyết các nhu cầu hoạt động như:

  • Để tránh phải đồng bộ lại toàn bộ, cửa sổ ứng dụng oplog bản sao phải che đi thời gian ngừng hoạt động và cửa sổ bảo trì thường xuyên.
  • Để khôi phục thành viên của nhóm sao chép, cửa sổ oplog của bản sao phải luôn bao gồm thời gian cần thiết.

Bộ sản xuất tối thiểu phải kết hợp ba nút chứa dữ liệu chạy với tính năng ghi nhật ký. Bên cạnh đó, việc ghi phải được phát hành với mối quan tâm viết w:"đa số" nhằm mục đích đảm bảo tính khả dụng và độ bền của dữ liệu.

Việc triển khai phải chứa một số lẻ các thành viên biểu quyết để tạo điều kiện thuận lợi cho quá trình biểu quyết bất cứ khi nào nút chính trong cụm bị lỗi.

Thay vì sử dụng các địa chỉ IP có thể yêu cầu một địa chỉ thay đổi cấu hình do thay đổi IP, nên sử dụng các tên máy chủ DNS hợp lý.

Đảm bảo rằng các phiên bản mongod có 0 hoặc 1 phiếu bầu.

Tất cả các phiên bản Mongod phải được kết nối đầy đủ và hai chiều để có thể dễ dàng giao tiếp dữ liệu giữa các nút liên quan.

Viết nhật ký

Đây là chiến lược ghi nhật ký tệp nhật ký trên đĩa được sử dụng để đảm bảo độ bền của dữ liệu trong trường hợp bị lỗi. Tất cả các trường hợp phải bật tính năng ghi nhật ký vì lý do này, đặc biệt là khi xử lý khối lượng công việc đòi hỏi nhiều viết.

Tuy nhiên, hãy lưu ý rằng điều này ảnh hưởng đến lực lượng tiếp viện kiểu ảnh chụp nhanh vì các bản ghi cấu thành trạng thái của cơ sở dữ liệu sẽ nằm trên các ổ đĩa được phân vùng.

Hệ thống Tệp

Không sử dụng ổ đĩa Hệ thống Tệp Tin tức (NFS) cho dbPath. Các ổ đĩa NFS có thể dẫn đến hiệu suất không ổn định. Người dùng VMware khuyến nghị sử dụng ổ đĩa ảo VMware.

Đảm bảo rằng các phân vùng đĩa của bạn được căn chỉnh với cấu hình RAIDON của bạn.

Đối với người dùng Linux / Unix, nên sử dụng XFS. XFS được biết là hoạt động tốt hơn với MongoDB.

Đối với người dùng hệ điều hành windows, hệ thống tệp NTFS được khuyến nghị. Bạn nên tránh sử dụng bất kỳ hệ thống tệp FAT nào.

Triển khai Phần cứng Đám mây

Windows Azure:Thay đổi TCP keepalive (tcp_keepalive_time) thành 100-120. TCP hết thời gian chờ thiết bị trên trình cân bằng ngăn xếp Azure cũng vừa phải đối với hành vi gộp liên kết của MongoDB

Sử dụng MongoDB 2.6.4 hoặc các phiên bản mới hơn trên các khung có bộ nhớ độ trễ cao, chẳng hạn như Windows Azure, vì các phiên bản này kết hợp các cải tiến về thực thi cho các khung đó.

Mài

Đặt máy chủ cấu hình của bạn trên phần cứng chuyên dụng để thực thi lý tưởng trong các cụm mở rộng.

Đảm bảo rằng phần cứng có đủ RAM để lưu giữ hoàn toàn các bản ghi thông tin trong bộ nhớ và có bộ nhớ dành riêng.

Triển khai bộ định tuyến mongos theo hướng dẫn Thiết lập tạo.

Đồng bộ hóa đồng hồ trên tất cả các thành phần của cụm phân đoạn của bạn bằng cách sử dụng NTP.

Đảm bảo mạng hai chiều đầy đủ giữa các máy chủ mongos, mongod và config.

Sử dụng CNAME để nhận dạng các máy chủ cấu hình của bạn vào cụm để bạn có thể đổi tên và đánh số lại các máy chủ cấu hình của mình mà không cần thời gian chết.

Giám sát

Bạn có thể sử dụng các công cụ như MongoDB Cloud Manager, ClusterControl hoặc một khung giám sát khác để sàng lọc các chỉ số cơ sở dữ liệu chính và thiết lập cảnh báo. Kết hợp các cảnh báo cho các chỉ số:

  • Hàng đợi
  • Cửa sổ nhật ký sao chép
  • Khẳng định
  • Lỗi trang
  • Độ trễ sao chép

Theo dõi số liệu phần cứng cho máy chủ của bạn. Đặc biệt chú ý đến dung lượng đĩa trống, việc sử dụng đĩa, CPU

Phần cứng

Sử dụng ổ RAID10 và SSD để có hiệu suất lý tưởng.

SAN và Ảo hóa:

Đảm bảo rằng mỗi phiên bản mongod đã cung cấp IOPS cho dbPath của nó hoặc có ổ đĩa vật lý xác nhận quyền sở hữu hoặc LUN.

Tránh các điểm nổi bật của bộ nhớ động, chẳng hạn như bộ nhớ bị phồng lên, khi chạy trong môi trường ảo.

Tránh đặt tất cả các cá nhân thuộc nhóm sao chép trên cùng một SAN, vì SAN có thể là một điểm khiến bạn thất vọng.

Cân bằng tải

Thiết kế bộ cân bằng tải để bật "phiên cố định" hoặc "khách hàng chung" với thời gian chờ thích hợp cho các kết nối hiện có.

Tránh đặt các bộ cân bằng tải giữa cụm MongoDB hoặc các thành phần của tập hợp bản sao.

Bản sao lưu

Lập kế hoạch kiểm tra không liên tục quá trình sao lưu và khôi phục của bạn để có sẵn đồng hồ đo thời gian và xác nhận tính hữu ích của nó.

Cấu hình Hệ điều hành

Windows

Cân nhắc hủy kích hoạt nâng cấp NTFS cho “thời gian truy cập cuối cùng”.

Định dạng đĩa NTFS bằng cách sử dụng kích thước đơn vị Phân bổ mặc định là 4096 byte.

Linux

Tắt các trang lớn trong suốt.

Thực hiện các điều chỉnh đối với cài đặt đầu đọc của các dice nơi các tệp cơ sở dữ liệu của bạn được lưu trữ. Đầu đọc của công cụ lưu trữ WiredTiger nên được đặt từ 8 đến 32.

Nếu sử dụng điều chỉnh trên RHEL / CentOS, bạn phải tùy chỉnh cấu hình đã điều chỉnh của mình. Nhiều cấu hình được điều chỉnh đi kèm với RHEL / CentOS có thể ảnh hưởng xấu đến việc thực thi với cài đặt mặc định của chúng. Tùy chỉnh cấu hình đã chọn của bạn thành:

Tắt các trang khổng lồ đơn giản.

Đặt readahead từ 8 đến 32 trong mọi trường hợp sắp xếp phương tiện dung lượng.

Sử dụng bộ lập lịch đĩa noop hoặc deadline cho ổ SSD.

Sử dụng bộ lập lịch đĩa noop cho các ổ đĩa ảo hóa trong máy ảo khách.

Tắt NUMA hoặc đặt vm.zone_reclaim_mode thành 0 và chạy các lần xuất hiện mongod có xen kẽ nút.

Điều chỉnh các giá trị ulimit trên phần cứng của bạn để phù hợp với trường hợp sử dụng của bạn. Trong trường hợp các lần xuất hiện mongod hoặc mongos khác nhau đang chạy bên dưới cùng một ứng dụng khách, hãy chia tỷ lệ các giá trị ulimit theo cách tương tự.

Thiết kế các trình xử lý bản ghi thích hợp (fs.file-max), ràng buộc pid một phần (kernel.pid_max), luồng tối đa cho mỗi quy trình (kernel.threads-max) và số vùng bộ nhớ tối đa cho mỗi quy trình (vm.max_map_count) để bạn gửi. Đối với các khuôn khổ mở rộng, các giá trị sau cung cấp một điểm khởi đầu tuyệt vời:

fs.file-max value of 98000,

kernel.pid_max value of 64000,

kernel.threads-max value of 64000, and vm.max_map_count value of 128000

Đảm bảo rằng khung của bạn đã được định cấu hình không gian hoán đổi.

Đề cập đến tài liệu về hệ điều hành của bạn để biết những điểm cần quan tâm về cách định kích thước chính xác.

Đảm bảo rằng hệ thống giữ nguyên TCP mặc định được đặt chính xác. Giá trị 300 thường mang lại hiệu suất vượt trội cho các tập hợp bản sao và các cụm phân đoạn.

Danh sách kiểm tra phát triển MongoDB

Sao chép

Sử dụng một số lẻ các cá nhân bỏ phiếu để đảm bảo rằng các cuộc bầu cử tiếp tục hiệu quả. Bạn sẽ có tối đa 7 cá nhân bỏ phiếu. Trong trường hợp bạn có một số lượng cá nhân bỏ phiếu chẵn và các ràng buộc, chẳng hạn như chi phí, không cho phép bao gồm một người phụ khác làm thành viên biểu quyết, bạn sẽ có thể bao gồm một trọng tài để đảm bảo một số lượng phiếu bầu lẻ.

Đảm bảo rằng nhật ký thứ hai của bạn luôn được cập nhật bằng cách sử dụng các công cụ giám sát và bằng cách chỉ ra mối quan tâm viết thư phù hợp.

Không sử dụng các lần đọc bổ trợ để mở rộng thông lượng đọc tổng thể.

Thiết kế lược đồ

Dữ liệu trong MongoDB chứa một mẫu động. Bộ sưu tập không duy trì cấu trúc báo cáo. Điều này khuyến khích cải tiến lặp đi lặp lại và đa hình. Trong mọi trường hợp, bộ sưu tập thường lưu giữ các bản ghi có cấu trúc cực kỳ đồng nhất.

Quyết định tập hợp các bộ sưu tập mà bạn chỉ yêu cầu và các chỉ mục cần thiết để sao lưu các truy vấn của bạn. Với trường hợp đặc biệt của chỉ mục _id, bạn phải tạo tất cả các chỉ mục một cách rõ ràng:MongoDB không tự nhiên tạo bất kỳ chỉ mục nào ngoài _id.

Đảm bảo rằng kế hoạch lược đồ của bạn hỗ trợ sắp xếp triển khai:trong trường hợp bạn định sử dụng các cụm phân đoạn để mở rộng theo chiều ngang, hãy lập kế hoạch lược đồ của bạn để kết hợp một khóa phân đoạn mạnh. Khóa phân đoạn ảnh hưởng đến việc thực thi đọc và ghi bằng cách quyết định cách MongoDB phân đoạn dữ liệu. Bạn không thể thay đổi khóa phân đoạn sau khi nó được đặt.

Đảm bảo rằng kế hoạch lược đồ của bạn không phụ thuộc vào các cụm được lập chỉ mục phát triển theo chiều dài mà không bị ràng buộc. Thông thường, việc thực thi tốt nhất có thể được thực hiện khi các cụm được lập chỉ mục như vậy có ít hơn 1000 thành phần.

Xem xét các giới hạn ước tính tài liệu khi thiết kế lược đồ của bạn. Giới hạn ước tính tài liệu BSON là 16MB cho mỗi tài liệu. Trong trường hợp bạn yêu cầu các báo cáo lớn hơn, hãy sử dụng GridFS.

Trình điều khiển

Sử dụng tổng hợp liên kết. Hầu hết các trình điều khiển MongoDB hỗ trợ gộp liên kết. Thay đổi kích thước nhóm liên kết cho phù hợp với trường hợp sử dụng của bạn, bắt đầu từ 110-115% số lượng bình thường của nhu cầu cơ sở dữ liệu đồng thời.

Đảm bảo rằng các ứng dụng của bạn xử lý các lỗi ghi và đọc tạm thời giữa các cuộc bầu cử tập hợp bản sao.

Đảm bảo rằng ứng dụng của bạn xử lý các yêu cầu không thành công và thử lại nếu thích hợp. Trình điều khiển không

tự nhiên thử lại các yêu cầu không thành công.

Sử dụng lý do dự phòng theo cấp số nhân để thử lại yêu cầu cơ sở dữ liệu.

Sử dụng cursor.maxTimeMS () để đọc và thời gian chờ để ghi trong trường hợp bạn muốn giới hạn thời gian thực thi cho các hoạt động cơ sở dữ liệu.

Độ bền của Dữ liệu

Đảm bảo rằng tập hợp bản sao của bạn kết hợp ít nhất ba trung tâm chứa dữ liệu với mối quan tâm của w:phần lớn biên soạn. Cần có ba trung tâm mang dữ liệu để đảm bảo độ chắc chắn cho dữ liệu rộng của tập hợp bản sao.

Đảm bảo rằng tất cả các trường hợp đều sử dụng ghi nhật ký.

Mài

Đảm bảo rằng khóa phân đoạn của bạn truyền tải một cách đồng đều trên các phân đoạn của bạn.

Sử dụng các hoạt động được nhắm mục tiêu cho khối lượng công việc có quy mô theo số lượng phân đoạn.

Đối với MongoDB 3.6 trở về sau, các bản thứ hai không còn trả về dữ liệu mồ côi trừ khi sử dụng mối quan tâm đọc "có sẵn" (là mối quan tâm đọc mặc định cho các lần đọc so với các bản thứ hai khi không liên quan đến các phiên đáng tin cậy về mặt nhân quả).

Bắt đầu từ MongoDB 3.6, tất cả các thành viên của bản sao phân đoạn thiết lập siêu dữ liệu phân đoạn, cho phép họ lọc ra những đứa trẻ mồ côi khi không sử dụng "sẵn có". Do đó, các truy vấn không được nhắm mục tiêu hoặc truyền phát không sử dụng "có sẵn" có thể được chạy một cách an toàn trên bất kỳ thành viên nào và sẽ không trả về thông tin bị mất tích.

Mối quan tâm đã đọc "có thể truy cập" có thể trả về các tài liệu bị mất tích từ các thành viên phụ trợ vì nó không kiểm tra siêu dữ liệu chunk đã được đại tu. Trong bất kỳ trường hợp nào, trong trường hợp việc trả lại các tài liệu mồ côi là không đáng kể đối với một ứng dụng, mối quan tâm đọc "có sẵn" cung cấp ít lượt đọc không hoạt động nhất có thể trong số các mối quan tâm đọc khác nhau.

Phân chia trước và điều chỉnh các phần theo cách thủ công khi nhúng các tập dữ liệu mở rộng vào một tập hợp phân đoạn không băm mới. Việc phân tách trước và điều chỉnh vật lý cho phép ngăn xếp nhúng được phân tán giữa các phân đoạn, mở rộng quá trình thực thi cho tải bắt đầu.

Kết luận

Quản lý danh sách kiểm tra hoạt động và phát triển là một bước quan trọng mà các nhà phát triển phải kết hợp khi sử dụng MongoDB trong sản xuất. Chúng là những cân nhắc quan trọng vì chúng nâng cao quy trình của các nhiệm vụ cho một dự án trong quá trình sản xuất. Môi trường sản xuất MongoDB yêu cầu các tính năng cơ sở dữ liệu ổn định và đáng tin cậy vì cơ sở dữ liệu trong sản xuất lưu trữ dữ liệu hoạt động trong thế giới thực. Tính toàn vẹn của dữ liệu phụ thuộc vào tính ổn định của cơ sở dữ liệu được kích hoạt bằng cách đảm bảo rằng tất cả các mục trong danh sách kiểm tra hoạt động và phát triển đều được xử lý trước khi sản xuất.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 5 cách để có được mili giây từ một ngày trong MongoDB

  2. Ứng dụng giống Twitter sử dụng MongoDB

  3. Làm thế nào để sử dụng dấu chấm trong tên trường?

  4. Bao gồm tất cả các trường hiện có và thêm các trường mới vào tài liệu

  5. Có bất kỳ lý do nào khiến tôi nên / không nên sử dụng ObjectId trong url RESTful của mình không