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

Tự động kiểm tra tình trạng cơ sở dữ liệu

Đảm bảo cơ sở dữ liệu hoạt động tốt là một trong những điều tối quan trọng mà người quản trị cơ sở dữ liệu phải làm. Nếu chúng ta bỏ bê việc bảo trì cơ sở dữ liệu, thì khả năng cao là chúng ta gặp sự cố; ví dụ:sự cố hiệu suất cơ sở dữ liệu do khối lượng công việc thay đổi theo thời gian hoặc định cấu hình sai dẫn đến vi phạm dữ liệu.

Thường xuyên kiểm tra cấu hình, sử dụng tài nguyên, thủ tục sao lưu và khôi phục, bảo mật dữ liệu, hiệu suất truy vấn có thể giúp tránh các vấn đề về cơ sở dữ liệu. Chúng tôi cần kiểm tra cơ sở dữ liệu tiêu chuẩn cho môi trường cơ sở dữ liệu của mình, vì vậy chúng tôi có thể theo dõi xem cơ sở dữ liệu có còn được kiểm soát hay không.

Kiểm tra tình trạng cơ sở dữ liệu là gì

Kiểm tra tình trạng cơ sở dữ liệu bao gồm một số tác vụ để kiểm tra tình trạng của cơ sở dữ liệu của chúng ta. Tại sao chúng ta cần phải kiểm tra sức khỏe? Chúng tôi cần xác định và khắc phục bất kỳ sự cố hoặc sự bất thường nào trong môi trường cơ sở dữ liệu của mình, cho dù đó là sự cố hiệu suất, sự cố cấu hình hoặc điều gì đó có thể gây ra sự cố.

Chúng tôi có thể chia việc kiểm tra sức khỏe thành một số loại:

  • Kiểm tra bảo mật, để khóa quyền truy cập vào cơ sở dữ liệu và đảm bảo lưu lượng đến từ một mạng đáng tin cậy có quyền các đặc quyền.

  • Kiểm tra cấu hình, để đảm bảo cấu hình đáp ứng các tiêu chí tiêu chuẩn đã được tổ chức xác định.

  • Kiểm tra hiệu suất, để đảm bảo rằng cơ sở dữ liệu đang sử dụng tài nguyên phần cứng và đáp ứng các ứng dụng.

  • Quy trình sao lưu và khôi phục, để đảm bảo rằng bản sao lưu mà chúng tôi đã lấy từ cơ sở dữ liệu có thể được khôi phục.

Từ các danh mục đó, chúng ta có thể phân tích những gì chúng ta cần kiểm tra trong cơ sở dữ liệu. Điều này rất quan trọng, vì vậy chúng tôi có thể kiểm tra chi tiết mọi khía cạnh. Ví dụ:

  • Bảo mật cơ sở dữ liệu

  • So sánh người dùng và các đặc quyền trên cơ sở dữ liệu với quyền truy cập ma trận người dùng mà chúng tôi có

  • Kiểm tra địa chỉ IP của danh sách trắng trên cơ sở dữ liệu, xem lưu lượng truy cập có đến từ mạng tin cậy không

  • Đảm bảo bật nhật ký kiểm tra cơ sở dữ liệu

  • Kiểm tra cấu hình

  • Kiểm tra SSL đã có sẵn

  • Đảm bảo cấu hình cơ sở dữ liệu chính xác (cả quyền và quyền sở hữu)

  • Kiểm tra hiệu suất

  • Kiểm tra tỷ lệ truy cập bộ nhớ cache của cơ sở dữ liệu

  • Đảm bảo kết nối cơ sở dữ liệu vẫn đủ để xử lý lưu lượng truy cập

  • Quy trình sao lưu và khôi phục

  • Lịch trình sao lưu phù hợp, mang lại RPO đã thỏa thuận

  • Đảm bảo chúng tôi kiểm tra các bản sao lưu để chúng tôi biết dữ liệu có thể khôi phục được

Dựa trên danh sách trên, chúng ta có thể tạo một script để kiểm tra các mục đó trên từng loại cơ sở dữ liệu (ví dụ:MySQL, PostgreSQL, MongoDB). Mỗi loại cơ sở dữ liệu rõ ràng sẽ có các lệnh khác nhau.

Tự động kiểm tra tình trạng cơ sở dữ liệu

Chúng tôi không muốn chạy một tác vụ lặp đi lặp lại hàng tuần hoặc hàng tháng, việc kiểm tra tình trạng cơ sở dữ liệu là một công việc tốn nhiều thời gian. Chúng tôi chạy tập lệnh trên mọi nút cơ sở dữ liệu, do đó, việc tự động hóa kiểm tra tình trạng giúp chúng tôi tiết kiệm khá nhiều thời gian.

Dựa trên danh sách script kiểm tra tình trạng, chúng ta có thể tạo bash script để chạy các tác vụ và lên lịch với cron. Dưới đây chỉ là mẫu của một báo cáo kiểm tra tình trạng cơ sở dữ liệu đơn giản:

#!/bin/sh
# Simple database check report
username = "audit_user"
password = "pwd001"
hostname = "db01-payment"
mycnf = "/etc/mysql/my.cnf"
dt=$(date '+%d/%m/%Y %H:%M:%S');
audit_name = "MySQL_Healthcheck_audit_report_"$dt

# check the queries
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Queries'" > $audit_name

# check open table cache hit ratio
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Table_open_cache_hits'" >> $audit_name

# check the ssl session mode
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Ssl_session_cache_mode'" >> $audit_name

# check the buffer pool size
cat $mycnf | grep "innodb_buffer_pool_size" >> $audit_name

#check ssl key in my.cnf
cat $mycnf | grep "ssl_key" >> $audit_name

# check permission of my.conf
ls -ltr $mycnf >> $audit_name

Kiểm tra sức khỏe cũng có thể được tự động hóa bằng các công cụ quản lý cấu hình như Ansible, Salt, Chef hoặc Puppet.

Tự động kiểm tra tình trạng cơ sở dữ liệu với ClusterControl

ClusterControl là một nền tảng hoạt động cho cơ sở dữ liệu, nó hiển thị các vấn đề về tình trạng máy chủ, hiệu suất hoặc tính khả dụng trong môi trường cơ sở dữ liệu của chúng, tất cả đều từ một bảng điều khiển trung tâm. Nó hỗ trợ tự động kiểm tra tình trạng cơ sở dữ liệu thông qua Báo cáo hoạt động. Bạn có thể tạo hoặc lập lịch báo cáo hoạt động cũng như báo cáo sự cố. Có một số loại báo cáo như được hiển thị bên dưới:

Báo cáo Hệ thống Hàng ngày cung cấp cho bạn thông tin chi tiết về cụm cơ sở dữ liệu hiện tại của bạn với các thông tin khác nhau như trạng thái dịch vụ nút, trạng thái sao lưu, thời gian hoạt động của các nút, tóm tắt các truy vấn hàng đầu.

Báo cáo nâng cấp gói cung cấp cho bạn tóm tắt về các gói có sẵn để nâng cấp từ người quản lý kho.

Báo cáo Thay đổi Lược đồ so sánh các thay đổi cơ sở dữ liệu trong cấu trúc bảng đã xảy ra giữa hai báo cáo được tạo khác nhau.

Báo cáo sao lưu cung cấp cho bạn thông tin về bản tóm tắt và chi tiết sao lưu, ví dụ:bản sao lưu cuối cùng được tạo, trạng thái của bản sao lưu, trạng thái xác minh sao lưu và khoảng thời gian lưu giữ bản sao lưu.

Ngoài Báo cáo hoạt động, còn có các Cố vấn cung cấp cho bạn thông tin chi tiết về CPU, đĩa, kết nối cơ sở dữ liệu, v.v., như bên dưới:

Thông báo qua email và cảnh báo thông qua các kênh bên thứ ba đã định cấu hình cung cấp thông tin chi tiết về những sự cố (ví dụ:sao lưu không thành công, sao lưu không ổn định, lỗi nút).

Trình phân tích lược đồ cung cấp thông tin về các Chỉ mục trùng lặp / dư thừa, các bảng không có Khóa chính và các bảng sử dụng công cụ lưu trữ MyISAM. Các chỉ mục dự phòng có thể đặc biệt tốt để biết về nó, vì chúng làm tăng kích thước của cơ sở dữ liệu (và các bản sao lưu) và có thể làm chậm các cập nhật trên bảng.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Native MongoDB Masking (Phương pháp thứ 3)

  2. MongoDB $ sinh

  3. PHP không thể tìm thấy trình điều khiển MongoDB

  4. Cách chọn các tài liệu con với MongoDB

  5. MongoDB:cập nhật vô điều kiện?