Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Làm thế nào tôi có thể theo dõi tiến trình di chuyển dữ liệu giữa các mảnh trong MongoDB


Làm thế nào tôi có thể theo dõi tiến trình di chuyển dữ liệu giữa các mảnh trong MongoDB


Theo dõi tiến trình di chuyển dữ liệu giữa các mảnh vỡ trong MongoDB liên quan đến việc hiểu một số khía cạnh của cách MongoDB quản lý các cụm mảnh vỡ, hành vi của quá trình cân bằng và các cơ chế theo dõi di chuyển chunk và sức khỏe tổng thể của cụm.

MongoDB Sharding phân phối dữ liệu trên nhiều mảnh để hỗ trợ tỷ lệ ngang. Việc di chuyển dữ liệu giữa các mảnh vỡ chủ yếu xảy ra thông qua di chuyển chunk, được quản lý tự động bằng bộ cân bằng MongoDB hoặc có thể được kích hoạt thủ công. Giám sát quá trình di chuyển này là rất quan trọng để đảm bảo hiệu suất, tính khả dụng và phân phối dữ liệu cân bằng trong cụm.

Hiểu về mong muốn và cân bằng MongoDB

Trong một cụm mảnh vỡ, MongoDB phân vùng dữ liệu thành các khối. Những khối này được phân phối trên các mảnh vỡ theo Key Shard Key. Bộ cân bằng là một quy trình nền chạy trên bản chính của bộ sao chép cấu hình và chủ động giám sát phân phối dữ liệu để duy trì sự cân bằng trên các mảnh vỡ. Bộ cân bằng quyết định khi nào và các khối nào cần được di chuyển dựa trên các ngưỡng cụ thể liên quan đến chênh lệch kích thước dữ liệu giữa các mảnh vỡ. Di chuyển xảy ra để đảm bảo phân phối dữ liệu và tối ưu hóa hiệu suất truy vấn.

Bộ cân bằng hoạt động trong suốt nhưng có thể được cấu hình hoặc vô hiệu hóa khi cần thiết. Nó di chuyển các khối một cách được kiểm soát, chỉ cho phép một lần di chuyển trên mỗi shard tại một thời điểm để giảm thiểu tác động đến hiệu suất. Trong các điều kiện mất cân bằng cao (ví dụ: khi chênh lệch kích thước dữ liệu giữa các mảnh vỡ vượt quá ngưỡng - theo mặc định, gấp ba lần kích thước chunk được cấu hình), việc di chuyển được kích hoạt.

Kiểm tra trạng thái cân bằng và di chuyển

Để theo dõi tiến trình di chuyển của Shard, một số lệnh và kiểm tra nhật ký là hữu ích:

- sh.status () hoặc db.printShardingStatus (): Các lệnh này cung cấp một cái nhìn tổng quan về trạng thái Sharding, bao gồm cả phân phối chunk trên các mảnh vỡ cho mỗi bộ sưu tập Sharded. Mặc dù họ không đưa ra một tỷ lệ phần trăm trực tiếp về tiến trình di chuyển, bối cảnh phân phối chunk mà họ cung cấp có thể đóng vai trò là một ủy quyền để hiểu mức độ cân bằng của dữ liệu và liệu việc di chuyển có đang diễn ra hay không.

- Nhật ký hoạt động cân bằng: Bộ cân bằng ghi lại các hoạt động của nó, bao gồm cả di chuyển chunk, trong nhật ký của các máy chủ cấu hình và các trường hợp Mongo. Theo dõi các nhật ký này có thể tiết lộ những khối nào đang được di chuyển, cùng với các mảnh nguồn và mảnh đích của chúng, và bất kỳ lỗi hoặc sự chậm trễ nào xảy ra trong quá trình di chuyển.

- Di chuyển hiện tại: MongoDB giới hạn một mảnh vỡ đối với một lần di chuyển tại một thời điểm, nhưng với nhiều mảnh vỡ, nó có thể chạy một số di chuyển trong toàn bộ cụm song song (lên đến một nửa số mảnh vỡ). Quan sát các di chuyển hoạt động có thể được thực hiện gián tiếp bằng cách kiểm tra nhật ký cân bằng hoặc sử dụng các lệnh quản trị trên máy chủ cấu hình để xem khóa di chuyển và các bộ đếm liên quan đến di chuyển.

Các lệnh và số liệu để theo dõi

- Lệnh Balancerstatus: Chạy `sh.getBalanCerstate ()` hoặc kiểm tra cụm bằng các lệnh tiết lộ hoạt động cân bằng giúp xem liệu bộ cân bằng có được bật hay hiện đang hoạt động hay không.

- Số lượng Chunkmigrationlocktimeout: MongoDB theo dõi các số liệu cụ thể như `shardingstatistic.countdonormovechunklocktimeout` để hiểu xem các di chuyển chunk có thời gian ra do khóa, có thể chỉ ra các vấn đề di chuyển hoặc tắc nghẽn hiệu suất.

- DB.RunCommand ({Connpoolstats: 1}) `từ phiên bản Mongo có giúp kiểm tra việc di chuyển có gây tăng kết nối hay tắc nghẽn trên các trường hợp sơ bộ không hay không giúp kiểm tra khả năng di chuyển có gây ra sự sử dụng kết nối hay tắc nghẽn trên các trường hợp ngắn không hay không giúp kiểm tra khả năng di chuyển có gây ra sự sử dụng kết nối hay tắc nghẽn trên đường bầu không hay không giúp kiểm tra việc di chuyển có gây ra sự sử dụng kết nối hay tắc nghẽn trên đường bầu không hay không giúp kiểm tra việc di chuyển có gây ra sự sử dụng kết nối hay tắc nghẽn trên đường bầu không hay không giúp kiểm tra việc di chuyển có gây ra sự sử dụng kết nối hay tắc nghẽn trên đường bầu không hay không giúp kiểm tra việc di chuyển có gây ra sự sử dụng kết nối hay tắc nghẽn trên đường bầu không hay không giúp kiểm tra việc di chuyển có gây ra sự sử dụng kết nối hay tắc nghẽn trên đường bầu không hay không giúp kiểm tra khả năng di chuyển có gây ra sự sử dụng kết nối hay tắc nghẽn trên đường bầu không hay không giúp kiểm tra việc di chuyển có gây ra sự sử dụng kết nối hoặc tắc nghẽn trên các trường hợp ngắn. Thống kê kết nối chỉ ra phân phối tải.

- Giám sát kích thước dữ liệu trên mỗi shard: Bằng cách truy vấn siêu dữ liệu của cơ sở dữ liệu cấu hình, người ta có thể kiểm tra kích thước và số lượng khối được gán cho mỗi shard. Một sự khác biệt lớn cho thấy sự di cư liên tục hoặc mất cân bằng.

Giám sát di chuyển thủ công

Khi di chuyển chunk thủ công được kích hoạt bằng các lệnh như `movechunk` hoặc` moverange`, hoạt động sẽ chặn cho đến khi di chuyển hoàn thành. Hành vi đồng bộ này cho phép xác nhận ngay lập tức về thành công hoặc thất bại di cư. Tuy nhiên, đối với các cuộc di cư tự động chạy dài hơn được quản lý bởi Balancer, không có tỷ lệ phần trăm tiến bộ trực tiếp nào được hiển thị bởi MongoDB.

Sử dụng kiểm tra trạng thái lặp đi lặp lại thông qua `sh.status ()` giữa các bước di chuyển giúp suy ra tiến trình bằng cách quan sát sự giảm các khối trên mảnh vỡ nguồn và sự gia tăng của mảnh vỡ mục tiêu.

Công cụ và bảng điều khiển

MongoDB Atlas, dịch vụ đám mây được quản lý, cung cấp một màn hình chính di chuyển để theo dõi di cư một cách trực quan, bao gồm tình trạng của họ và bất kỳ sự di chuyển lịch sử nào. Giao diện này có thể giúp giám sát trong môi trường Atlas.

Trong các triển khai tự quản lý, các quản trị viên thường thiết lập các bảng điều khiển giám sát bằng các công cụ giám sát của MongoDB như MMS (Dịch vụ quản lý MongoDB) hoặc các công cụ của bên thứ ba phân tích nhật ký và số liệu của MongoDB (ví dụ, Prometheus với Grafana). Các thiết lập này có thể theo dõi các số liệu liên quan đến hoạt động cân bằng, di chuyển chunk, sử dụng đĩa và thông lượng mạng, tất cả đều chỉ ra tiến trình di chuyển.

Xử lý các tài liệu mồ côi và đọc tính nhất quán trong quá trình di chuyển

Trong quá trình di chuyển chunk, các tài liệu trong đoạn di chuyển được sao chép vào mảnh vỡ mục tiêu, và, sau khi được xác nhận, các tài liệu trên mảnh nguồn được đánh dấu là mồ côi cho đến khi được làm sạch. Độ trễ dọn dẹp này (`Orphancleanupdelaysecs`) được thiết kế để đảm bảo các truy vấn liên tục không bị ảnh hưởng.

Điều quan trọng là theo dõi bất kỳ tài liệu bị bỏ lỡ nào trong lần đọc thứ cấp, vì các lần đọc thứ cấp trong quá trình di chuyển có thể bỏ lỡ các tài liệu nếu các truy vấn trải rộng phạm vi di chuyển. Nhận thức về hành vi này là rất cần thiết khi đánh giá tiến trình di cư và đọc tính nhất quán.

Tóm tắt các bước giám sát

1. Kiểm tra trạng thái Sharding: Sử dụng `sh.status ()` thường xuyên để theo dõi phân phối chunk.
2. Kiểm tra trạng thái cân bằng: Xác minh Balancer được bật và hoạt động thông qua `sh.getBalancerstate ()`.
3. Nhật ký giám sát: Bộ cân bằng theo dõi và nhật ký liên quan đến di chuyển tại Mongo và máy chủ cấu hình.
4. Số lượng theo dõi số lượng: Bộ sưu tập siêu dữ liệu Cấu hình truy vấn (như `config.chunks`) để quan sát các khối trên mỗi mảnh.
5. Kiểm tra số liệu thống kê kết nối: Sử dụng `Connpoolstats` để phát hiện các gai kết nối bất thường trong quá trình di chuyển.
6. Xem khóa di chuyển và số liệu: Xác định thời gian chờ di chuyển hoặc các vấn đề khóa trong số liệu.
7. Các lệnh thủ công: Sử dụng `movechunk` hoặc` moverange` để di chuyển được kiểm soát và phản hồi đồng bộ.
8. Công cụ giám sát đòn bẩy: Sử dụng màn hình di chuyển Atlas hoặc bảng điều khiển giám sát tùy chỉnh.
9

Thông qua các phương tiện này, các quản trị viên có thể giám sát và đánh giá hiệu quả tiến trình di chuyển dữ liệu giữa các mảnh vỡ trong MongoDB, đảm bảo các hoạt động cân bằng mượt mà và hiệu suất cụm được tối ưu hóa. Giám sát này rất quan trọng đối với các cụm lớn trong đó di chuyển có thể mất thời gian và băng thông mạng đáng kể, ảnh hưởng trực tiếp đến hiệu suất ứng dụng và tính khả dụng.