MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Mẹo để theo dõi MariaDB Cluster

Trong các bài đăng trên blog trước, chúng tôi đã đề cập đến các chủ đề về Giám sát Cụm Galera của bạn cho dù đó là MySQL hay MariaDB. Mặc dù các phiên bản công nghệ không khác nhau nhiều nhưng MariaDB Cluster có một số thay đổi lớn kể từ phiên bản 10.4.2. Trong phiên bản này, nó hỗ trợ Galera Cluster 4 và có một số tính năng mới tuyệt vời mà chúng ta sẽ xem xét trong bài đăng trên blog này.

Đối với người mới bắt đầu chưa quen thuộc với MariaDB Cluster, là một cụm đa chủ hầu như đồng bộ cho MariaDB. Nó chỉ có sẵn trên Linux và chỉ hỗ trợ công cụ lưu trữ XtraDB / InnoDB (mặc dù có hỗ trợ thử nghiệm cho MyISAM - xem biến hệ thống wsrep_replicate_myisam).

Phần mềm này là một công nghệ đi kèm được cung cấp bởi Máy chủ MariaDB, bản vá MySQL-wsrep cho Máy chủ MySQL và Máy chủ MariaDB được phát triển bởi Codership (hỗ trợ Hệ điều hành giống Unix) và thư viện nhà cung cấp Galera wsrep.

Bạn có thể so sánh sản phẩm này với MySQL Group Replication hoặc với MySQL InnoDB Cluster, nhằm mục đích cung cấp tính khả dụng cao. (Mặc dù chúng khác nhau nhiều về nguyên tắc và cách tiếp cận để cung cấp HA.)

Bây giờ chúng ta đã trình bày các khái niệm cơ bản, trong blog này, chúng tôi sẽ cung cấp các mẹo mà chúng tôi cho rằng có lợi khi theo dõi Cụm MariaDB của bạn.

Cơ bản của Cụm MariaDB

Khi bắt đầu sử dụng MariaDB Cluster, bạn phải xác định chính xác mục đích của mình là gì và tại sao bạn lại chọn MariaDB Cluster ngay từ đầu. Trước tiên, bạn phải tìm hiểu các tính năng và lợi ích của chúng khi sử dụng MariaDB Cluster. Lý do để xác định những điều này là vì chúng về cơ bản là những thứ phải được theo dõi và kiểm tra để bạn xác định hiệu suất, tình trạng sức khỏe bình thường và liệu nó có đang chạy theo kế hoạch của bạn hay không.

Về cơ bản, nó được xác định là không có độ trễ nô lệ, không có giao dịch bị mất, khả năng mở rộng đọc và độ trễ máy khách nhỏ hơn. Sau đó, các câu hỏi có thể nảy sinh như, làm thế nào để nó không bị trễ nô lệ, hoặc giao dịch bị mất? Làm thế nào nó làm cho việc đọc có thể mở rộng hoặc với độ trễ nhỏ hơn ở phía máy khách? Những khu vực này là một trong những khu vực chính bạn cần xem xét và giám sát, đặc biệt là đối với việc sử dụng sản xuất nhiều.

Mặc dù bản thân Cụm MariaDB có thể được tùy chỉnh cho phù hợp. Việc áp dụng các thay đổi đối với hành vi mặc định như pc.weight hoặc pc.ignore_quorum hoặc thậm chí sử dụng multicast với UDP cho một số lượng lớn các nút, có thể ảnh hưởng đến cách bạn theo dõi bản chất của Cụm MariaDB của mình. Nhưng mặt khác, các biến trạng thái quan trọng nhất thường là lớp lót bạc của bạn ở đây khi biết trạng thái và luồng của cụm của bạn đang hoạt động tốt hoặc sự suy thoái của nó cho thấy một vấn đề có thể dẫn đến sự cố nghiêm trọng trước đó.

Luôn Giám sát Hoạt động Máy chủ của Bạn (Mạng, Đĩa, Tải, Bộ nhớ và CPU)

Giám sát hoạt động máy chủ của bạn cũng có thể là một nhiệm vụ phức tạp nếu bạn có một ngăn xếp rất phức tạp đan xen trong kiến ​​trúc cơ sở dữ liệu của mình. Tuy nhiên, đối với MariaDB Cluster, tốt nhất bạn nên thiết lập các nút của mình luôn chuyên dụng nhưng đơn giản nhất có thể. Mặc dù điều đó không hạn chế bạn sử dụng tất cả các tài nguyên dự phòng, nhưng dưới đây là các lĩnh vực chính phổ biến mà bạn phải xem xét.

Mạng

Galera Cluster 4 có tính năng sao chép trực tuyến là một trong những tính năng chính và những thay đổi so với phiên bản trước. Vì tính năng sao chép trực tuyến giải quyết những hạn chế mà nó có trong các bản phát hành trước nhưng cho phép nó quản lý hơn 2GB bộ ghi kể từ Galera Cluster 4. Điều này cho phép các giao dịch lớn được phân mảnh và bạn nên bật tính năng này chỉ trong cấp phiên. Điều này có nghĩa là, việc giám sát hoạt động mạng của bạn là rất quan trọng và cốt yếu đối với hoạt động bình thường của Cụm MariaDB của bạn. Điều này sẽ giúp bạn xác định nút nào có lưu lượng mạng nhiều nhất hoặc cao nhất dựa trên khoảng thời gian.

Vậy điều đó sẽ giúp bạn cải thiện vị trí các nút có lưu lượng mạng cao nhất đã được xác định như thế nào? Chà, điều này cung cấp cho bạn chỗ để cải thiện với cấu trúc liên kết cơ sở dữ liệu hoặc lớp kiến ​​trúc của cụm cơ sở dữ liệu của bạn. Sử dụng bộ cân bằng tải hoặc proxy cơ sở dữ liệu cho phép bạn định cấu hình chủ động lưu lượng cơ sở dữ liệu của mình, đặc biệt khi xác định việc ghi cụ thể nào sẽ đi đến một nút cụ thể. Giả sử, trong số 3 nút, một trong số chúng có khả năng xử lý các truy vấn lớn và lớn hơn do sự khác biệt với các thông số kỹ thuật phần cứng. Điều này cho phép bạn quản lý nhiều hơn vốn đầu tư của mình và cải thiện việc lập kế hoạch năng lực khi nhu cầu thay đổi trong một khoảng thời gian cụ thể.

Đĩa

Vì hoạt động mạng cũng quan trọng với hiệu suất đĩa của bạn, đặc biệt là trong thời gian xả. Tốt nhất là xác định thời gian đã cam kết và truy xuất hoạt động như thế nào khi đạt đến tải cao nhất. Đôi khi bạn tích trữ máy chủ cơ sở dữ liệu của mình không chỉ dành riêng cho hoạt động Galera Cluster mà còn kết hợp với các công cụ khác như docker, proxy SQL như ProxySQL hoặc MaxScale. Điều này cho phép bạn kiểm soát với các máy chủ tải thấp và cho phép bạn sử dụng các tài nguyên dự phòng có sẵn có thể được sử dụng cho các mục đích có lợi khác, đặc biệt là đối với ngăn xếp kiến ​​trúc cơ sở dữ liệu của bạn. Khi bạn có thể xác định nút nào khi theo dõi có tải thấp nhất nhưng vẫn có khả năng quản lý việc sử dụng IO đĩa của nó, thì bạn có thể chọn nút cụ thể trong khi theo dõi thời gian trôi qua. Một lần nữa, điều này vẫn giúp bạn quản lý tốt hơn với việc hoạch định năng lực của mình.

CPU, Bộ nhớ và Hoạt động tải

Hãy để tôi trình bày ngắn gọn ba lĩnh vực này cần xem xét khi giám sát. Trong phần này, tốt nhất bạn nên có khả năng quan sát tốt hơn các khu vực sau cùng một lúc. Nó nhanh hơn và dễ hiểu hơn, đặc biệt là loại trừ tắc nghẽn hiệu suất hoặc xác định lỗi khiến các nút của bạn bị đình trệ và điều đó cũng có thể ảnh hưởng đến các nút khác và khả năng hoạt động của cụm.

Vậy CPU, bộ nhớ và hoạt động tải khi theo dõi sẽ giúp ích như thế nào cho Cụm MariaDB của bạn? Vâng, như những gì tôi đã đề cập ở trên, đó là một trong số ít những điều nhưng là yếu tố quan trọng để kiểm tra định kỳ hàng ngày. Bây giờ, điều này cũng giúp bạn xác định xem đây là sự xuất hiện định kỳ hay ngẫu nhiên. Nếu định kỳ, nó có thể liên quan đến các bản sao lưu đang chạy ở một trong các nút Galera của bạn hoặc đó là một truy vấn lớn yêu cầu tối ưu hóa. Ví dụ:các truy vấn không hợp lệ không có chỉ mục thích hợp hoặc sử dụng truy xuất dữ liệu trong số dư, chẳng hạn như thực hiện so sánh chuỗi cho một chuỗi lớn như vậy. Điều đó không thể phủ nhận là không thể áp dụng cho cơ sở dữ liệu kiểu OLTP như MariaDB Cluster, đặc biệt nếu đó thực sự là bản chất và yêu cầu của ứng dụng của bạn. Sử dụng tốt hơn các công cụ phân tích khác như MariaDB Columnstore hoặc các công cụ xử lý phân tích của bên thứ ba khác (Apache Spark, Kafka hoặc MongoDB, v.v.) để truy xuất dữ liệu chuỗi lớn và / hoặc khớp chuỗi.

Vì vậy, với tất cả các lĩnh vực chính đang được giám sát, câu hỏi đặt ra là nó sẽ được giám sát như thế nào? Nó phải được theo dõi ít ​​nhất mỗi phút. Với tính năng giám sát tinh chỉnh, tức là mỗi giây của các số liệu chung có thể tốn nhiều tài nguyên và tham lam nhiều về tài nguyên của bạn. Mặc dù tính năng tập hợp kéo dài nửa phút có thể chấp nhận được, đặc biệt nếu dữ liệu và RPO (mục tiêu điểm khôi phục) của bạn rất thấp, vì vậy bạn cần các chỉ số dữ liệu thời gian thực và chi tiết hơn. Điều rất quan trọng là bạn có thể giám sát toàn bộ bức tranh về cụm cơ sở dữ liệu của mình. Bên cạnh đó, điều tốt nhất và quan trọng là bất cứ khi nào bạn đang theo dõi chỉ số nào, bạn có công cụ phù hợp để thu hút sự chú ý của mình khi mọi thứ đang gặp nguy hiểm hoặc thậm chí chỉ là cảnh báo. Sử dụng công cụ thích hợp như ClusterControl giúp bạn quản lý các khu vực chính cần được giám sát. Tôi đang sử dụng ở đây phiên bản miễn phí hoặc phiên bản cộng đồng của ClusterControl và giúp tôi giám sát các nút của mình mà không gặp bất kỳ rắc rối nào từ cài đặt cho đến giám sát các nút chỉ bằng một vài cú nhấp chuột. Ví dụ:xem ảnh chụp màn hình bên dưới:

Chế độ xem là tổng quan nhanh và tinh tế hơn về những gì đang xảy ra hiện tại. Biểu đồ chi tiết hơn cũng có thể được sử dụng,

hoặc với mô hình dữ liệu phong phú và mạnh mẽ hơn cũng hỗ trợ ngôn ngữ truy vấn có thể cung cấp cho bạn phân tích về cách MariaDB Cluster của bạn hoạt động dựa trên dữ liệu lịch sử so sánh hiệu suất của nó một cách kịp thời. Ví dụ,

Điều đó chỉ cung cấp cho bạn các số liệu dễ thấy hơn. Vì vậy, bạn thấy tầm quan trọng của việc có đúng công cụ khi theo dõi Cụm MariaDB của bạn.

Đảm bảo Giám sát Tập thể các Biến Thống kê Cụm MariaDB của bạn

Theo thời gian, không thể tránh khỏi việc các phiên bản MariaDB Cluster sẽ tạo ra số liệu thống kê mới để theo dõi hoặc nâng cao tính chất của việc giám sát cơ sở dữ liệu bằng cách cung cấp thêm các biến trạng thái và tinh chỉnh các giá trị cần xem xét. Như những gì tôi đã đề cập ở trên, tôi đang sử dụng ClusterControl để giám sát các nút của mình trong blog mẫu này. Tuy nhiên, điều đó không có nghĩa là nó là công cụ tốt nhất hiện có. Ý tôi là PMM từ Percona rất phong phú khi nói đến giám sát tập thể cho mọi biến thống kê mà bất cứ khi nào Cụm MariaDB có các biến thống kê mới hơn để cung cấp, bạn có thể tận dụng điều này và cũng có thể thay đổi nó vì PMM là một công cụ mã nguồn mở. Đó là một lợi thế lớn mà bạn cũng có tất cả khả năng hiển thị của Cụm MariaDB của bạn vì mọi khía cạnh đều có giá trị đặc biệt trong cơ sở dữ liệu dựa trên sản xuất phục vụ hàng trăm nghìn yêu cầu mỗi phút.

Nhưng chúng ta hãy đi sâu hơn vào vấn đề ở đây. Các biến số thống kê này cần xem xét là gì? Có nhiều thứ để tin tưởng vào Cụm MariaDB nhưng tập trung lại vào các tính năng và lợi ích mà chúng tôi tin rằng bạn sử dụng Cụm MariaDB những gì nó phải cung cấp, sau đó chúng tôi sẽ tập trung vào đó.

Cụm Galera - Kiểm soát luồng

Kiểm soát luồng của Cụm MariaDB của bạn cung cấp cho bạn cái nhìn tổng quan về cách tình trạng sao chép thực hiện trên tất cả các cụm. Quá trình sao chép trong Galera Cluster sử dụng cơ chế phản hồi, có nghĩa là nó báo hiệu cho tất cả các nút trong cụm đó và gắn cờ cho dù nút đó phải tạm dừng hoặc tiếp tục sao chép theo nhu cầu của nó. Điều này cũng ngăn chặn bất kỳ nút nào bị tụt hậu quá xa trong khi các nút khác đang áp dụng các giao dịch đến. Đây là cách kiểm soát luồng đóng vai trò như chức năng của nó trong Galera. Bây giờ, điều này phải được nhìn thấy và không được bỏ qua khi theo dõi Cụm MariaDB của bạn. Điều này, như đã đề cập trong một trong những lợi ích khi sử dụng MariaDB Cluster là tránh được độ trễ nô lệ. Mặc dù điều đó là quá ngây thơ để hiểu về kiểm soát luồng và độ trễ nô lệ, nhưng với kiểm soát luồng, nó sẽ ảnh hưởng đến hiệu suất của cụm Galera của bạn khi có rất nhiều hàng đợi và cam kết hoặc xả các trang vào đĩa rất thấp đối với các sự cố đĩa như vậy hoặc nó chỉ là truy vấn đang chạy là một truy vấn tồi. Nếu bạn là người mới bắt đầu về cách Galera hoạt động, bạn có thể quan tâm đến việc đọc bài đăng bên ngoài này về điều khiển luồng trong Galera.

Số byte Đã gửi / Đã nhận

Các byte được gửi hoặc nhận tương quan với hoạt động mạng và thậm chí là một trong những lĩnh vực chính cần xem xét song song với kiểm soát luồng. Điều này cho phép bạn xác định nút nào bị ảnh hưởng nhiều nhất hoặc do các vấn đề về hiệu suất đang gặp phải trong Cụm Galera của bạn. Điều rất quan trọng là bạn có thể kiểm tra xem có thể có bất kỳ sự xuống cấp nào về phần cứng chẳng hạn như thiết bị mạng của bạn hoặc thiết bị lưu trữ bên dưới mà việc đồng bộ hóa các trang bẩn có thể mất quá nhiều thời gian để được thực hiện hay không.

Tải theo cụm

Chà, đây là hoạt động của cơ sở dữ liệu về số lượng thay đổi hoặc truy xuất dữ liệu đã được truy vấn hoặc thực hiện cho đến nay kể từ thời gian hoạt động của máy chủ. Nó giúp bạn loại trừ những loại truy vấn nào ảnh hưởng chủ yếu đến hiệu suất cụm cơ sở dữ liệu của bạn. Điều này cho phép bạn cung cấp chỗ để cải thiện, đặc biệt là cân bằng tải các yêu cầu cơ sở dữ liệu của bạn. Sử dụng ProxySQL giúp bạn có một cách tiếp cận chi tiết và tinh tế hơn để định tuyến truy vấn. Mặc dù MaxScale cũng cung cấp tính năng này, nhưng ProxySQL có mức độ chi tiết hơn mặc dù nó cũng phục vụ một số tác động về hiệu suất hoặc chi phí. Tác động đến khi bạn chỉ có một ProxySQL làm proxy SQL để thực hiện định tuyến truy vấn và nó có thể gặp khó khăn khi lưu lượng truy cập cao đang diễn ra. Có chi phí, nếu bạn thêm nhiều nút ProxySQL để cân bằng thêm lưu lượng truy cập mà một KeepAlived bên dưới. Mặc dù, đây là một combo hoàn hảo nhưng nó có thể được chạy với chi phí thấp cho đến khi cần thiết. Tuy nhiên, làm thế nào bạn sẽ có thể xác định nếu cần, phải không? Đó là câu hỏi vẫn còn ở đây, vì vậy, một con mắt quan tâm để theo dõi các khu vực chính này là rất quan trọng, không chỉ để quan sát mà còn để cải thiện hiệu suất của cụm cơ sở dữ liệu của bạn theo thời gian.

Như vậy, có rất nhiều biến cần xem xét trong Cụm MariaDB. Điều quan trọng nhất ở đây bạn phải tính đến là công cụ bạn đang sử dụng để giám sát cụm cơ sở dữ liệu của mình. Như đã đề cập trước đó, tôi thích sử dụng giấy phép phiên bản miễn phí của ClusterControl (Community Edition) tại đây trong blog này vì nó cung cấp cho tôi nhiều cách linh hoạt hơn để xem xét trong Cụm Galera. Xem ví dụ bên dưới,

Tôi đã đánh dấu hoặc khoanh đỏ những tab cho phép tôi giám sát trực quan sức khỏe của Cụm MariaDB của tôi. Giả sử, nếu ứng dụng của bạn tham lam sử dụng sao chép luồng theo thời gian và nó gửi một số lượng lớn các phân đoạn (truyền mạng lớn) cho hoạt động liên cụm, tốt nhất là xác định xem các nút của bạn có thể xử lý căng thẳng như thế nào. Đặc biệt là trong quá trình kiểm tra căng thẳng trước khi đẩy các thay đổi cụ thể trong ứng dụng của bạn, tốt nhất bạn nên thử và kiểm tra để xác định khả năng quản lý năng lực của sản phẩm ứng dụng và xác định xem thiết kế và nút cơ sở dữ liệu hiện tại của bạn có thể xử lý tải các yêu cầu ứng dụng của bạn hay không.

Ngay cả trên một phiên bản cộng đồng của ClusterControl, tôi vẫn có thể thu thập các kết quả chi tiết và tinh tế hơn về tình trạng của Cụm MariaDB của mình. Xem bên dưới,

Đây là cách bạn tiếp cận việc giám sát Cụm MariaDB của mình. Một hình ảnh trực quan hoàn hảo luôn dễ dàng và nhanh chóng hơn để quản lý. Khi mọi thứ đi xuống, bạn không thể để mất năng suất và thời gian ngừng hoạt động cũng có thể ảnh hưởng đến công việc kinh doanh của bạn. Mặc dù việc miễn phí không mang lại cho bạn sự sang trọng và thoải mái khi quản lý cơ sở dữ liệu lưu lượng truy cập cao, nhưng việc có báo thức, thông báo và quản lý cơ sở dữ liệu trong một khu vực là tiện ích bổ sung mà ClusterControl có thể làm.

Kết luận

MariaDB Cluster không đơn giản để giám sát so với các thiết lập chủ-tớ MySQL / MariaDB không đồng bộ truyền thống. Nó hoạt động theo cách khác và bạn phải có các công cụ phù hợp để xác định những gì đang xảy ra và những gì đang đi vào cụm cơ sở dữ liệu của bạn. Luôn chuẩn bị trước kế hoạch năng lực của bạn trước khi chạy MariaDB Cluster mà không có sự giám sát thích hợp trước đó. Tốt nhất bạn nên biết hoạt động và tải cơ sở dữ liệu của mình trước khi xảy ra sự kiện thảm khốc.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON_CONTAINS_PATH () Giải thích

  2. 3 cách lấy tên ngày cho ngày trong MariaDB

  3. Cân nhắc bảo mật cho việc triển khai MariaDB trên môi trường đám mây lai

  4. Chạy một cụm MariaDB Galera mà không có công cụ điều phối vùng chứa:Phần một

  5. MariaDB DEFAULT () Giải thích