Greenplum Database Bài học 34: Giám sát cụm Greenplum: Sử dụng Command Center, pg_stat_activity và các lệnh quản trị hệ thống
Ở Bài học 33, chúng ta đã thiết lập các quy trình bảo trì định kỳ như VACUUM và ANALYZE để giữ cho cơ sở dữ liệu luôn khỏe mạnh và tối ưu. Tuy nhiên, khi một hệ thống Data Warehouse bước vào môi trường vận hành thực tế (Production) với hàng ngàn giao dịch mỗi ngày, việc "phòng bệnh hơn chữa bệnh" đòi hỏi các kỹ sư và DBA phải có khả năng quan sát toàn diện (Observability) tình trạng sức khỏe của toàn cụm.
Làm thế nào để phát hiện ngay lập tức một câu lệnh SQL đang làm nghẽn mạng Interconnect? Làm sao biết Segment nào đang cạn kiệt RAM hay ổ cứng sắp đầy? Trong bài học này, chúng ta sẽ khám phá bộ công cụ giám sát toàn diện của Greenplum: từ giao diện trực quan Greenplum Command Center (GPCC), các bảng hệ thống cốt lõi cho đến các lệnh quản trị dòng lệnh.
1. Greenplum Command Center (GPCC): Bảng điều khiển trung tâm
Greenplum Command Center (GPCC) là công cụ giám sát trực quan dựa trên nền tảng Web được thiết kế độc quyền cho cụm cơ sở dữ liệu Greenplum Enterprise.
┌────────────────────────────────────────────────────────────────────────┐
│ GREENPLUM COMMAND CENTER (GPCC) │
└───────────────────────────┬──────────────────┬─────────────────────────┘
│ │
1. Dashboard Tổng quan 2. Query Monitor 3. Resource Queues
• Tình trạng CPU, RAM, • Theo dõi câu lệnh • Kiểm soát mức độ đồng
ổ cứng toàn cụm. đang chạy realtime. thời và hàng đợi.
Các tính năng cốt lõi của GPCC:
-
System Metrics (Giám sát hạ tầng): Cung cấp biểu đồ trực quan về mức tiêu thụ CPU, bộ nhớ RAM, băng thông mạng Interconnect và dung lượng đĩa của từng máy chủ Master và các Segment Hosts theo thời gian thực.
-
Query Monitor (Giám sát câu lệnh): Cho phép DBA nhìn thấy danh sách các câu lệnh SQL đang chạy (
Active Queries), thời gian thực thi, lượng RAM tiêu thụ (statement_mem), và trạng thái có đang bị Spill to Disk hay không. -
Alert & Notification (Cảnh báo thông minh): Tự động gửi cảnh báo khi có sự cố nghiêm trọng xảy ra như ổ cứng vượt ngưỡng 90%, một Segment Host bị mất kết nối (Down), hoặc một câu lệnh chạy quá thời gian cho phép (Long-running query).
2. Truy vấn trực tiếp pg_stat_activity: "Con dao Thụy Sĩ" của DBA
Khi bạn không có sẵn giao diện Web của GPCC hoặc cần viết các script tự động kiểm tra hệ thống, pg_stat_activity là bảng hệ thống quan trọng nhất mà mọi DBA phải nằm lòng. Nó cung cấp bức tranh toàn cảnh về mọi phiên làm việc (sessions) đang kết nối vào cơ sở dữ liệu.
2.1. Tìm kiếm các câu lệnh đang chạy lâu (Long-running Queries)
Để phát hiện những câu lệnh SQL "treo" hoặc chạy quá lâu làm nghẽn hệ thống, hãy dùng câu truy vấn sau:
SQL
SELECT
pid, -- Process ID của phiên làm việc
usename, -- Tên người dùng thực thi
client_addr, -- IP của máy khách kết nối tới
backend_start, -- Thời điểm kết nối
query_start, -- Thời điểm câu lệnh bắt đầu chạy
AGE(NOW(), query_start) AS duration, -- Thời gian thực thi tính đến hiện tại
state, -- Trạng thái (active, idle, etc.)
query -- Nội dung câu lệnh SQL
FROM pg_stat_activity
WHERE state = 'active'
AND query NOT LIKE '%pg_stat_activity%'
ORDER BY query_start ASC;
2.2. Xử lý các câu lệnh "Kẹt" hoặc gây nghẽn hệ thống
Khi phát hiện một câu lệnh SQL chạy sai logic, chiếm dụng toàn bộ tài nguyên hoặc làm kẹt hàng đợi, bạn cần can thiệp hủy bỏ nó ngay lập tức. Greenplum cung cấp hai cấp độ hủy bỏ:
SQL
-- 1. Hủy bỏ câu lệnh hiện tại nhưng vẫn giữ kết nối của phiên làm việc (Graceful Cancel)
SELECT pg_cancel_backend(pid);
-- 2. Buộc ngắt toàn bộ phiên làm việc và ép đóng kết nối ngay lập tức (Force Terminate)
SELECT pg_terminate_backend(pid);
(Thay thế pid bằng mã tiến trình lấy được từ bảng pg_stat_activity ở trên).
3. Các lệnh quản trị dòng lệnh (CLI Commands) cốt lõi
Bên trong giao diện Linux terminal của người dùng quản trị gpadmin, các tiện ích dòng lệnh bắt đầu bằng tiền tố gp là công cụ chẩn đoán phần cứng và trạng thái cụm nhanh nhất:
┌────────────────────────────────────────────────────────────────────────┐
│ CÁC LỆNH QUẢN TRỊ DÒNG LỆNH │
└───────────────────────────┬──────────────────┬─────────────────────────┘
│ │
• gpstate -s ──► Kiểm tra trạng thái sống/chết của các Segment.
• gpstate -m ──► Kiểm tra trạng thái đồng bộ Mirror Standby.
• gpcheckperf ──► Kiểm tra hiệu năng băng thông mạng và ổ cứng.
-
gpstate -s: Kiểm tra tổng quan toàn bộ cụm xem có Segment nào đang bị lỗi (Down), giúp phát hiện nhanh các sự cố hỏng phần cứng hoặc mất kết nối mạng cục bộ. -
gpstate -m: Kiểm tra trạng thái đồng bộ hóa giữa các nút chính (Primary Segments) và nút dự phòng (Mirror Segments), đảm bảo tính sẵn sàng cao (High Availability) cho hệ thống. -
gpcheckperf: Công cụ chuẩn đoán hiệu năng cho phép kiểm tra tốc độ đọc/ghi ổ cứng (Disk I/O) và băng thông mạng giữa các máy chủ trong cụm, cực kỳ hữu ích khi cần đánh giá lại hạ tầng phần cứng.
4. Theo dõi không gian đĩa qua gp_toolkit
Một trong những nguyên nhân phổ biến nhất làm sập cơ sở dữ liệu Data Warehouse là việc ổ cứng trên các Segment bị đầy 100%. Bạn có thể chủ động kiểm tra dung lượng và hiện tượng lệch lưu trữ (Storage Skew) thông qua schema chẩn đoán hệ thống gp_toolkit:
SQL
-- Kiểm tra không gian đĩa trống trên từng Segment Host
SELECT * FROM gp_toolkit.gp_disk_free;
Tóm tắt Bài học 34
-
Greenplum Command Center (GPCC) cung cấp giao diện trực quan theo thời gian thực để giám sát hạ tầng phần cứng, trạng thái câu lệnh và hàng đợi tài nguyên.
-
pg_stat_activitylà bảng hệ thống không thể thiếu giúp DBA phát hiện các câu lệnh chạy lâu, câu lệnh bị kẹt và quản lý tiến trình quapg_cancel_backend/pg_terminate_backend. -
Các lệnh dòng lệnh như
gpstate -s,gpstate -mvà các view tronggp_toolkitgiúp chẩn đoán nhanh chóng trạng thái toàn cụm và dung lượng ổ cứng.
Ở bài học tiếp theo (Bài học 35 — Bài học cuối cùng của Phần 4 và toàn bộ lộ trình chuyên sâu): Tổng kết & Best Practices: Cẩm nang thiết kế và vận hành Greenplum Database chuẩn Enterprise.
All rights reserved