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

Cân nhắc khi quản lý MongoDB

Dưới đây là một đoạn trích từ sách trắng của chúng tôi “Quản lý và tự động hóa MongoDB với ClusterControl” có thể được tải xuống miễn phí.

Cân nhắc khi quản lý MongoDB

Dự phòng tích hợp

Một tính năng chính của MongoDB là khả năng dự phòng được tích hợp sẵn của nó, ở dạng Replication. Nếu bạn có hai hoặc nhiều nút dữ liệu, chúng có thể được định cấu hình như một tập hợp bản sao, trong đó tất cả dữ liệu được ghi vào nút Chính, được sao chép trong thời gian gần thực cho các nút phụ,

Bộ bản sao MongoDB

đảm bảo nhiều bản sao của dữ liệu. Trong trường hợp chuyển đổi dự phòng Chính, các nút còn lại trong tập hợp bản sao sẽ tiến hành bầu cử và thăng cấp người chiến thắng trở thành Chính, một quá trình thường mất 2-3 giây và việc ghi vào tập hợp bản sao có thể tiếp tục. MongoDB cũng sử dụng một tạp chí để ghi nhanh hơn, an toàn hơn vào máy chủ hoặc tập hợp bản sao, đồng thời cũng sử dụng phương pháp “ghi mối quan tâm” mà thông qua đó, mức độ dự phòng ghi được
định cấu hình.

Để triển khai một tập hợp bản sao theo cách thủ công, các bước cấp cao như sau:

  1. Phân bổ một máy chủ vật lý hoặc máy ảo duy nhất cho mỗi nút cơ sở dữ liệu và cài đặt ứng dụng khách dòng lệnh MongoDB trên màn hình của bạn. Đối với cấu hình bộ bản sao dự phòng, cần có tối thiểu ba nút, ít nhất hai trong số đó sẽ là nút dữ liệu. Một nút trong tập hợp bản sao có thể được định cấu hình làm trọng tài:đây là một quy trình mongod được định cấu hình chỉ để tạo thành một số đại biểu bằng cách cung cấp một phiếu bầu trong cuộc bầu cử Sơ bộ khi được yêu cầu. Dữ liệu không được sao chép sang các quy trình của trọng tài.
  2. Cài đặt MongoDB trên mỗi nút. Một số bản phân phối Linux bao gồm MongoDB Community Edition, nhưng lưu ý rằng những bản phân phối này có thể không bao gồm các phiên bản mới nhất. MongoDB Enterprise chỉ có sẵn bằng cách tải xuống từ trang web của MongoDB. Chức năng tương tự như MongoDB Enterprise cũng có sẵn thông qua Máy chủ Percona cho MongoDB, một bản thay thế cho MongoDB Enterprise hoặc Community Edition.
  3. Định cấu hình các tệp cấu hình mongod.conf riêng lẻ cho tập hợp bản sao của bạn, sử dụng "tham số sao chép". Nếu bạn sử dụng tệp khóa để bảo mật, hãy cấu hình tệp này ngay bây giờ. Lưu ý rằng việc sử dụng bảo mật tệp khóa cũng cho phép xác thực dựa trên vai trò, vì vậy bạn cũng sẽ cần thêm người dùng và vai trò để sử dụng máy chủ. Khởi động lại quy trình mongod trên mỗi máy chủ.
  4. Đảm bảo kết nối giữa các nút. Bạn phải đảm bảo rằng các nút tập hợp bản sao MongoDB có thể giao tiếp với nhau trên cổng 27017 và (các) ứng dụng khách của bạn cũng có thể kết nối với từng nút tập hợp bản sao trên cùng một cổng.
  5. Sử dụng ứng dụng khách dòng lệnh MongoDB, kết nối với một trong các máy chủ và chạy rs.initiate () để khởi tạo bộ bản sao của bạn, tiếp theo là rs.add () cho mỗi nút bổ sung. rs.conf () có thể được sử dụng để xem cấu hình.

Mặc dù các bước này không phức tạp như triển khai và định cấu hình một cụm phân đoạn MongoDB hoặc phân tích cơ sở dữ liệu quan hệ, nhưng chúng có thể phức tạp và dễ xảy ra lỗi, đặc biệt là trong các môi trường lớn hơn.

Khả năng mở rộng

MongoDB thường được gọi là phần mềm cơ sở dữ liệu “quy mô web”, do khả năng mở rộng theo chiều ngang. Giống như cơ sở dữ liệu quan hệ, có thể mở rộng MongoDB theo chiều dọc, đơn giản bằng cách nâng cấp máy chủ vật lý chứa nhiều lõi CPU hơn, nhiều RAM hơn, đĩa nhanh hơn hoặc thậm chí tăng tốc độ bus. Tuy nhiên, mở rộng quy mô theo chiều dọc có những giới hạn của nó, cả về tỷ lệ chi phí-lợi ích và lợi nhuận giảm dần, và giới hạn kỹ thuật. Để giải quyết vấn đề này, MongoDB có một tính năng "auto-sharding", cho phép cơ sở dữ liệu được chia thành nhiều máy chủ (hoặc bộ bản sao, để dự phòng). Mặc dù sharding cũng có thể thực hiện được trên các nền tảng quan hệ, trừ khi được thiết kế để khởi động cơ sở dữ liệu, điều này yêu cầu thiết kế lại lược đồ và ứng dụng chính, cũng như thiết kế lại ứng dụng khách, làm cho quá trình này trở nên tẻ nhạt, tốn thời gian và dễ xảy ra lỗi.

Sharding MongoDB hoạt động bằng cách giới thiệu một quy trình bộ định tuyến, qua đó các máy khách kết nối với cụm phân đoạn và máy chủ cấu hình, nơi lưu trữ siêu dữ liệu cụm, vị trí trong cụm của mỗi tài liệu. Khi một máy khách gửi một truy vấn đến quy trình bộ định tuyến, trước tiên nó sẽ tham chiếu đến các máy chủ cấu hình để lấy vị trí của các tài liệu, sau đó nhận kết quả truy vấn trực tiếp từ các máy chủ riêng lẻ hoặc
bộ bản sao (phân đoạn). Việc mài sắc được thực hiện trên cơ sở từng bộ sưu tập.

Một tham số cực kỳ quan trọng ở đây, cho mục đích hiệu suất, là "khóa phân đoạn", một trường được lập chỉ mục hoặc trường kết hợp tồn tại trong mỗi tài liệu trong một bộ sưu tập. Chính điều này xác định phân phối ghi trên các phân đoạn của một tập hợp. Do đó, một phím phân đoạn được chọn không tốt có thể có ảnh hưởng rất bất lợi đến hiệu suất. Ví dụ:một khóa phân đoạn thuần túy dựa trên chuỗi thời gian có thể dẫn đến việc tất cả các lần ghi sẽ đến một nút duy nhất trong một khoảng thời gian dài. Tuy nhiên, khóa phân đoạn được băm, trong khi phân phối đồng đều các lần ghi trên các phân đoạn, có thể ảnh hưởng đến hiệu suất đọc vì tập kết quả được truy xuất từ ​​nhiều nút.

MongoDB Sharded ClusterS Một số người trở thành MongoDB DBA - Đưa MongoDB vào Sản xuất Tìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng MongoDBDownload miễn phí

Trọng tài

Trọng tài MongoDB là một quy trình mongod đã được định cấu hình không hoạt động như một nút dữ liệu, mà chỉ cung cấp chức năng bỏ phiếu khi một tập hợp bản sao Chính được bầu, để phá vỡ mối quan hệ và bảo vệ chống lại một cuộc bỏ phiếu phân tách. Trọng tài có thể không trở thành Chính, vì nó không giữ bản sao dữ liệu hoặc chấp nhận ghi. Mặc dù có thể có nhiều hơn một trọng tài viên trong một tập hợp bản sao, nhưng nó thường không được khuyến khích.

Bầu cử MongoDB và quy trình trọng tài

Thành viên nhóm bản sao bị trì hoãn

Các thành viên của tập hợp bản sao bị trì hoãn thêm một mức dự phòng bổ sung, duy trì trạng thái chậm hơn một số giây cố định so với bản chính. Vì các thành viên bị trì hoãn là "bản sao lưu luân phiên" hoặc ảnh chụp nhanh "lịch sử" đang chạy của tập dữ liệu, chúng có thể giúp khôi phục sau nhiều loại lỗi do con người gây ra.

Các thành viên bị trì hoãn là các thành viên tập hợp bản sao “ẩn”, không nhìn thấy được đối với các ứng dụng khách và do đó không thể truy vấn trực tiếp. Chúng cũng có thể không trở thành Chính trong các hoạt động bình thường và phải được định cấu hình lại theo cách thủ công trong trường hợp chúng được sử dụng để khôi phục sau lỗi.

Nút phụ bị trễ MongoDB

Bản sao lưu

Việc sao lưu một tập hợp bản sao hoặc cụm phân đoạn được thực hiện thông qua tiện ích dòng lệnh “mongodump”. Khi được sử dụng với tham số --oplog, tham số này tạo ra một kết xuất cơ sở dữ liệu bao gồm một oplog, để tạo một ảnh chụp nhanh tại điểm trong thời gian về trạng thái của một cá thể mongod. Sử dụng mongorestore với tham số --replayOplog, sau đó bạn có thể khôi phục hoàn toàn trạng thái dữ liệu tại thời điểm sao lưu hoàn tất, tránh sự mâu thuẫn.

Đối với các yêu cầu sao lưu nâng cao hơn, một công cụ của bên thứ ba có tên là “mongodbconsists-backup” - cũng dựa trên dòng lệnh - có sẵn để cung cấp các bản sao lưu hoàn toàn nhất quán của các cụm phân đoạn, một quy trình phức tạp, với điều kiện là cơ sở dữ liệu được phân đoạn được phân phối trên nhiều máy chủ.

Giám sát

Có một số công cụ thương mại, cả chính thức và không chính thức, có sẵn trên thị trường để theo dõi MongoDB. Nhìn chung, các công cụ này là các tiện ích quản lý sản phẩm đơn lẻ, tập trung độc quyền vào MongoDB. Nhiều người chỉ tập trung vào các khía cạnh cụ thể nhất định, chẳng hạn như quản lý bộ sưu tập trong kiến ​​trúc MongoDB hiện có, hoặc vào các bản sao lưu hoặc triển khai. Nếu không có kế hoạch phù hợp, điều này có thể dẫn đến tình huống phải triển khai và quản lý nhiều công cụ bổ sung trong môi trường của bạn.

Các công cụ dòng lệnh được cung cấp cùng với MongoDB, “mongotop” và “mongostat” có thể cung cấp một cái nhìn chi tiết về hiệu suất môi trường của bạn và có thể được sử dụng để chẩn đoán sự cố. Ngoài ra, ứng dụng khách dòng lệnh “mongo” của MongoDB cũng có thể chạy “rs.status ()” - hoặc trong một cụm phân đoạn “sh.status () - để xem trạng thái của các nhóm hoặc nhóm bản sao và các máy chủ thành viên của chúng. Lệnh “db.stats ()” trả về một tài liệu đề cập đến việc sử dụng bộ nhớ và khối lượng dữ liệu, đồng thời chúng tương đương với các bộ sưu tập cũng như các lệnh gọi khác để truy cập nhiều số liệu nội bộ.

Tóm tắt nội dung

Đây là một bản tóm tắt ngắn gọn về những cân nhắc khi quản lý MongoDB. Ngay cả ở cấp độ cao như vậy, cần phải hiểu ngay rằng mặc dù có thể quản lý một tập hợp bản sao hoặc cụm phân đoạn từ dòng lệnh bằng cách sử dụng các công cụ có sẵn, điều này không mở rộng trong môi trường có nhiều tập hợp bản sao hoặc với quy mô lớn. cụm phân mảnh. Trong các môi trường vừa và lớn bao gồm nhiều máy chủ
và cơ sở dữ liệu, việc quản lý mọi thứ bằng các công cụ và tập lệnh dòng lệnh sẽ nhanh chóng trở nên khó khả thi. Trong khi các công cụ và tập lệnh nội bộ có thể được phát triển để triển khai và duy trì môi trường, điều này tạo thêm gánh nặng cho việc quản lý phát triển mới, hệ thống kiểm soát sửa đổi và quy trình. Việc nâng cấp đơn giản một máy chủ cơ sở dữ liệu có thể trở thành một quá trình phức tạp nếu các thay đổi về công cụ được yêu cầu để hỗ trợ các phiên bản máy chủ
cơ sở dữ liệu mới.

Nhưng nếu không có các công cụ và tập lệnh nội bộ, làm cách nào để chúng ta tự động hóa và quản lý các cụm MongoDB? Tải xuống báo cáo chính thức để tìm hiểu cách thực hiện!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xóa khóa / giá trị khỏi mục nhập MongoDB hiện có

  2. Các câu hỏi phỏng vấn MongoDB phổ biến

  3. Có chức năng tầng nào trong khung tổng hợp Mongodb không?

  4. Mongodb tìm bên trong mảng phụ

  5. Cách định cấu hình tên bộ sưu tập MongoDb cho một lớp trong dữ liệu mùa xuân