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

Các tính năng của MongoDB trong ClusterControl 1.4

Bản phát hành mới nhất của chúng tôi về ClusterControl biến một số tác vụ MongoDB rắc rối nhất thành công việc chỉ trong 15 giây. Các tính năng mới đã được thêm vào để cung cấp cho bạn nhiều quyền kiểm soát hơn đối với cụm của mình và thực hiện các thay đổi cấu trúc liên kết:

  • Chuyển đổi MongoDB replicaSet thành MongoDB Cluster được chia nhỏ
  • Thêm và xóa các phân đoạn
  • Thêm bộ định tuyến phân đoạn vào một cụm MongoDB được phân đoạn
  • Hạ cấp hoặc đóng băng một nút
  • Cố vấn MongoDB mới

Chúng tôi sẽ mô tả chi tiết các tính năng được bổ sung này bên dưới.

Chuyển đổi MongoDB ReplicaSet thành Sharded MongoDB Cluster

Vì hầu hết người dùng MongoDB sẽ bắt đầu với một replicaSet để lưu trữ cơ sở dữ liệu của họ, đây là loại cụm được sử dụng thường xuyên nhất. Nếu bạn tình cờ gặp vấn đề về tỷ lệ, bạn có thể mở rộng bản sao này bằng cách thêm nhiều thứ hai hoặc mở rộng bằng cách tăng tỷ lệ. Bạn có thể chuyển đổi một replicaSet hiện có thành một cụm phân đoạn, tuy nhiên đây là một quá trình lâu dài mà bạn có thể dễ dàng mắc lỗi. Trong ClusterControl, chúng tôi đã tự động hóa quá trình này, nơi chúng tôi tự động thêm Máy chủ cấu hình, bộ định tuyến phân đoạn và bật tính năng sharding.

Để chuyển đổi một replicaSet thành một cụm phân đoạn, bạn có thể chỉ cần kích hoạt nó thông qua các hành động thả xuống:

Điều này sẽ mở ra một cuộc đối thoại hai bước về cách chuyển đổi này thành một phân đoạn. Bước đầu tiên là xác định nơi triển khai Máy chủ cấu hình và các bộ định tuyến phân đoạn tới:

Bước thứ hai là nơi lưu trữ dữ liệu và các tệp cấu hình nào sẽ được sử dụng cho Máy chủ cấu hình và bộ định tuyến phân đoạn.

Sau khi công việc di chuyển phân đoạn kết thúc, tổng quan cụm hiện hiển thị các phân đoạn thay vì các bản sao replicaSet:

Sau khi chuyển đổi thành một cụm phân đoạn, các phân đoạn mới có thể được thêm vào.

Thêm hoặc xóa các phân đoạn khỏi một Cụm MongoDB được phân mảnh

Thêm phân đoạn

Vì một phân đoạn MongoDB về mặt kỹ thuật là một replicaSet, việc thêm một phân đoạn mới cũng liên quan đến việc triển khai một replicaSet mới. Trong ClusterControl, trước tiên, chúng tôi triển khai một replicaSet mới và sau đó thêm nó vào cụm phân đoạn.

Từ giao diện người dùng ClusterControl, bạn có thể dễ dàng thêm các phân đoạn mới bằng trình hướng dẫn hai bước, được mở từ các tác vụ thả xuống:

Tại đây, bạn có thể xác định cấu trúc liên kết của phân đoạn mới.

Khi phân đoạn mới đã được thêm vào cụm, bộ định tuyến phân đoạn MongoDB sẽ bắt đầu gán các phần mới cho nó và bộ cân bằng sẽ tự động cân bằng tất cả các phần trên tất cả các phân đoạn.

Xóa các mảnh

Xóa các phân đoạn khó hơn một chút so với thêm một phân đoạn, vì điều này liên quan đến việc di chuyển dữ liệu sang các phân đoạn khác trước khi xóa chính phân đoạn đó. Đối với tất cả dữ liệu đã được phân đoạn trên tất cả các phân đoạn, đây sẽ là công việc được thực hiện bởi bộ cân bằng MongoDB.

Tuy nhiên, bất kỳ bộ sưu tập / cơ sở dữ liệu không phân đoạn nào, được gán phân đoạn này làm phân đoạn chính của nó, cần được chuyển sang phân đoạn khác và tạo phân đoạn chính mới của nó. Đối với quá trình này, MongoDB cần biết nơi để di chuyển các cơ sở dữ liệu / bộ sưu tập không phân đoạn này đến.

Trong ClusterControl, bạn có thể chỉ cần loại bỏ chúng thông qua các hành động thả xuống:

Điều này sẽ cho phép bạn chọn phân đoạn mà bạn muốn xóa và phân đoạn mà bạn muốn di chuyển bất kỳ cơ sở dữ liệu chính nào sang:

Sau đó, công việc xóa phân đoạn sẽ thực hiện các hành động tương tự như đã mô tả trước đó:nó sẽ di chuyển bất kỳ cơ sở dữ liệu chính nào đến phân đoạn được chỉ định, bật bộ cân bằng và sau đó đợi nó di chuyển tất cả dữ liệu từ phân đoạn đó.

Sau khi tất cả dữ liệu đã bị xóa, nó sẽ xóa phân đoạn khỏi giao diện người dùng.

Thêm bộ định tuyến phân đoạn MongoDB bổ sung

Khi bạn bắt đầu mở rộng ứng dụng của mình bằng cách sử dụng cụm phân đoạn MongoDB, bạn có thể thấy mình cần thêm bộ định tuyến phân đoạn.

Thêm bộ định tuyến phân đoạn MongoDB bổ sung là một quá trình rất đơn giản với ClusterControl, chỉ cần mở hộp thoại Thêm nút từ các hành động thả xuống:

Thao tác này sẽ thêm một bộ định tuyến phân đoạn mới vào cụm. Đừng quên đặt cổng mặc định thích hợp (27017) trên bộ định tuyến.

Step Down Server

Trong trường hợp bạn muốn thực hiện bảo trì trên nút chính trong một replicaSet, tốt hơn hết là bạn nên đặt nó trước "bước xuống" một cách duyên dáng trước khi thực hiện ngoại tuyến. Hạ cấp một máy chủ về cơ bản có nghĩa là máy chủ ngừng là máy chủ chính và trở thành máy chủ phụ và không đủ điều kiện để trở thành máy chủ chính trong một số giây nhất định. Các nút trong MongoDB replicaSet có quyền biểu quyết, sẽ chọn một nút chính mới với nút chính giảm dần bị loại trừ cho số giây đã đặt.

Trong ClusterControl, chúng tôi đã thêm chức năng bước xuống dưới dạng một hành động trên trang Nodes. Để hạ cấp, chỉ cần chọn đây là một hành động từ trình đơn thả xuống:

Sau khi đặt số giây cho bước xuống và xác nhận, sơ bộ sẽ hạ cấp và một sơ bộ mới sẽ được bầu.

Cố định nút

Chức năng này tương tự như lệnh bước xuống:điều này làm cho một nút nhất định không đủ điều kiện để trở thành nút chính trong một số giây nhất định. Điều này có nghĩa là bạn có thể ngăn một hoặc nhiều nút phụ trở thành nút chính khi hạ cấp nút chính và buộc một nút nhất định trở thành nút chính mới theo cách này.

Trong ClusterControl, chúng tôi đã thêm chức năng nút đóng băng như một hành động trên trang Nodes. Để đóng băng một nút, chỉ cần chọn đây là một hành động từ trình đơn thả xuống:

Sau khi đặt số giây và xác nhận, nút sẽ không đủ điều kiện làm nút chính cho số giây đã đặt.

Cố vấn MongoDB mới

Cố vấn là các chương trình nhỏ cung cấp lời khuyên về các vấn đề cơ sở dữ liệu cụ thể. Chúng tôi đã thêm ba cố vấn mới cho MongoDB. Cái đầu tiên tính toán cửa sổ sao chép, cái thứ hai xem qua cửa sổ sao chép và cái thứ ba kiểm tra cơ sở dữ liệu / bộ sưu tập chưa được phân đoạn.

MongoDB Replication Lag Advisor

Độ trễ của bản sao là điều rất quan trọng cần theo dõi, nếu bạn đang mở rộng số lần đọc bằng cách thêm nhiều thư thứ hai hơn. MongoDB sẽ chỉ sử dụng những thứ hai này nếu chúng không bị tụt lại quá xa. Nếu dữ liệu thứ cấp có độ trễ sao chép, bạn có nguy cơ cung cấp dữ liệu cũ đã bị ghi đè trên dữ liệu chính.

Để kiểm tra độ trễ của bản sao, chỉ cần kết nối với bản chính và truy xuất dữ liệu này bằng lệnh replSetGetStatus. Ngược lại với MySQL, bản chính theo dõi trạng thái sao chép của các bản thứ hai.

Chúng tôi đã triển khai kiểm tra này thành một cố vấn trong ClusterControl, để đảm bảo độ trễ sao chép của bạn sẽ luôn được theo dõi.

MongoDB Replication Window Advisor

Cũng giống như độ trễ sao chép, cửa sổ sao chép là một số liệu quan trọng không kém để xem xét. Cố vấn độ trễ đã thông báo cho chúng tôi về số giây mà một nút phụ đứng sau nút chính / chính. Vì oplog có giới hạn về kích thước, nên việc có độ trễ nô lệ sẽ dẫn đến những rủi ro sau:

  1. Nếu một nút bị tụt lại quá xa, nó có thể không thể bắt kịp nữa vì các giao dịch cần thiết để bắt kịp không còn trong oplog của nút chính.
  2. Nút phụ bị trễ ít được ưu tiên hơn trong cuộc bầu cử MongoDB cho nút chính mới. Nếu tất cả các thứ hai đều bị tụt hậu trong quá trình sao chép, bạn sẽ gặp sự cố và một thứ có độ trễ ít nhất sẽ được coi là chính.
  3. Phần thứ hai bị tụt lại phía sau ít được trình điều khiển MongoDB yêu thích hơn khi mở rộng số lần đọc với MongoDB, nó cũng tạo thêm khối lượng công việc cao hơn cho các phần phụ còn lại.

Nếu chúng ta có một nút phụ bị trễ vài phút (hoặc vài giờ), sẽ rất hữu ích nếu có một cố vấn thông báo cho chúng ta biết chúng ta còn bao nhiêu thời gian trước khi giao dịch tiếp theo của chúng ta bị loại khỏi oplog. Sự khác biệt về thời gian giữa mục nhập đầu tiên và mục nhập cuối cùng trong oplog được gọi là Cửa sổ sao chép. Chỉ số này có thể được tạo bằng cách tìm nạp các mục đầu tiên và cuối cùng từ oplog và tính toán sự khác biệt của dấu thời gian của chúng.

Trong MongoDB shell, đã có sẵn một hàm tính toán cửa sổ sao chép cho bạn. Tuy nhiên, chức năng này được tích hợp trong trình bao dòng lệnh, vì vậy bất kỳ kết nối bên ngoài nào không sử dụng trình bao dòng lệnh sẽ không có chức năng tích hợp này. Do đó, chúng tôi đã thực hiện một cố vấn sẽ giám sát cửa sổ sao chép và thông báo cho bạn nếu bạn vượt quá ngưỡng đặt trước.

Cố vấn thu thập và cơ sở dữ liệu chưa phân đoạn MongoDB

Bộ sưu tập và cơ sở dữ liệu không phân đoạn sẽ được bộ định tuyến MongoDB gán cho một phân đoạn chính mặc định. Điều này có nghĩa là cơ sở dữ liệu hoặc bộ sưu tập bị giới hạn ở kích thước của phân đoạn chính này và nếu được ghi vào khối lượng lớn, có thể sử dụng tất cả dung lượng đĩa còn lại của phân đoạn. Một khi điều này xảy ra, mảnh vỡ rõ ràng sẽ không còn hoạt động nữa. Do đó, điều quan trọng là phải theo dõi tất cả các cơ sở dữ liệu và bộ sưu tập hiện có, đồng thời quét cơ sở dữ liệu cấu hình để xác nhận rằng chúng đã được kích hoạt cho sharding.

Để ngăn điều này xảy ra, chúng tôi đã tạo cơ sở dữ liệu chưa phân đoạn và cố vấn thu thập. Cố vấn này sẽ quét mọi cơ sở dữ liệu và bộ sưu tập, đồng thời cảnh báo bạn nếu nó chưa được chia nhỏ.

ClusterControl đã cải thiện khả năng bảo trì MongoDB

Chúng tôi đã thực hiện một bước lớn bằng cách thêm tất cả các cải tiến vào ClusterControl cho MongoDB replicaSets và các cụm phân đoạn. Điều này cải thiện đáng kể khả năng sử dụng cho MongoDB và cho phép các DBA, sysops và devops duy trì các cụm của chúng tốt hơn nữa!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách xóa tài liệu MongoDB bằng cách nhập tệp

  2. MongooseError [MongooseServerSelectionError]:kết nối <monitor> với 52.6.250.237:27017 đã đóng

  3. Thuộc tính Mongoengine create_time trong Tài liệu

  4. Cách tìm tài liệu phù hợp với nhiều tiêu chí

  5. Làm cách nào để cập nhật giá trị của tài liệu nhúng cụ thể, bên trong một mảng, của một tài liệu cụ thể trong MongoDB?