Xây dựng dữ liệu quản trị hệ thống

Tài liệu đặc tả nghiệp vụ (Business Specification) dành cho việc xây dựng Database Quản Trị Dữ Liệu (DBA Governance Database)

— một nền tảng  để quản lý hệ thống lớn một cách minh bạch, có kiểm soát và có khả năng tự động hoá.

TÀI LIỆU ĐẶC TẢ NGHIỆP VỤ

Hệ thống Cơ sở dữ liệu quản trị dữ liệu (DBA Governance Database)

1. Mục tiêu hệ thống

Hệ thống Database Quản trị Dữ liệu (gọi tắt là ADMIN_DB) được xây dựng nhằm:

  • Cung cấp một nền tảng tập trung lưu trữ toàn bộ thông tin quản trị của các hệ thống cơ sở dữ liệu khác.
  • Cho phép giám sát, đánh giá, và kiểm soát vận hành cơ sở dữ liệu một cách chủ động.
  • Hỗ trợ tự động hóa quy trình quản trị định kỳ, giảm phụ thuộc thao tác thủ công.
  • Đảm bảo an toàn, toàn vẹn và khả năng truy vết của toàn bộ hoạt động DBA.

 Mục tiêu: Xây dựng “Database quản lý các Database” — chuẩn hóa và tự động hóa toàn bộ hoạt động quản trị dữ liệu.

2. Phạm vi áp dụng

Thành phần Mô tả
Đối tượng quản lý Toàn bộ các database vận hành trong hệ thống (MySQL, SQL Server, PostgreSQL, v.v.)
Đối tượng sử dụng Đội ngũ DBA, DevOps, DataOps, Kiểm toán CNTT
Môi trường triển khai Môi trường Production (với quyền chỉ đọc tới các DB khác), có thể nhân bản sang Staging
Hệ thống tích hợp Các công cụ monitoring (Prometheus, Grafana), công cụ cảnh báo (Email, Telegram Bot, API Gateway)

3. Các yêu cầu nghiệp vụ chính

3.1. Quản lý Metadata & Cấu trúc hệ thống

  • Tự động thu thập và lưu cấu trúc: Database, Table, Column, Index, Foreign Key.
  • Ghi nhận thay đổi cấu trúc theo thời gian (schema drift detection).
  • Phục vụ cho việc kiểm toán, so sánh và chuẩn hóa mô hình dữ liệu.

3.2. Giám sát hiệu năng & tài nguyên

  • Theo dõi truy vấn chậm, mức sử dụng CPU/RAM/IO, wait events, thread hoạt động.
  • Ghi nhận thống kê hiệu năng định kỳ (theo giờ/ngày).
  • Cảnh báo khi vượt ngưỡng hiệu năng (response time, IO latency, connection pool usage).

3.3. Quản lý người dùng & phân quyền

  • Thu thập thông tin user, host, role, quyền được cấp.
  • Theo dõi hành vi đăng nhập, thay đổi quyền, và các truy vấn quản trị.
  • Lưu audit log phục vụ kiểm toán bảo mật.

3.4. Theo dõi dung lượng & tăng trưởng dữ liệu

  • Tự động đo dung lượng DB, bảng, index hàng ngày.
  • Tính tốc độ tăng trưởng trung bình và dự báo thời điểm đạt ngưỡng.
  • Ghi log cảnh báo nếu vượt quota được thiết lập.

3.5. Sao lưu & phục hồi

  • Ghi nhận lịch sử backup, trạng thái, vị trí lưu trữ, checksum, thời gian hoàn thành.
  • Theo dõi thành công/thất bại, dung lượng, và thời gian phục hồi trung bình.
  • Cho phép kiểm tra định kỳ tính toàn vẹn file backup.

3.6. Bảo mật & Audit

  • Ghi log các hoạt động quan trọng: đăng nhập, thay đổi cấu trúc, thao tác trên dữ liệu nhạy cảm.
  • Tích hợp với hệ thống cảnh báo an toàn (qua email, API webhook).
  • Cho phép tạo báo cáo kiểm toán bảo mật định kỳ.

3.7. Tự động hóa & vận hành định kỳ

  • Sử dụng Event Scheduler / Cron để tự động chạy:
    • Thu thập dữ liệu hiệu năng
    • Kiểm tra backup
    • Xóa log cũ
    • Gửi cảnh báo
  • Ghi nhận kết quả từng job và trạng thái thực thi.

3.8. Báo cáo & Dashboard

  • Cung cấp dữ liệu nền để hiển thị trên dashboard (Power BI, Grafana).
  • Các chỉ số chính (KPI) cần theo dõi:
    • Top 10 truy vấn chậm
    • DB tăng trưởng nhanh nhất
    • Backup thất bại gần nhất
    • User đăng nhập bất thường
    • Hiệu năng trung bình theo giờ/ngày

4. Yêu cầu chức năng (Functional Requirements)

Tên chức năng Mô tả tóm tắt Tần suất thực thi
F01 Thu thập metadata Quét thông tin cấu trúc DB và lưu vào tbl_metadata_* Hàng ngày
F02 Giám sát dung lượng Lưu kích thước DB và tăng trưởng Hàng ngày
F03 Thu thập hiệu năng Lấy dữ liệu từ performance_schema Mỗi giờ
F04 Ghi nhận user & role Thu thập từ mysql.user, mysql.db Hàng ngày
F05 Ghi nhận audit log Ghi log truy vấn hoặc thay đổi cấu trúc Liên tục
F06 Kiểm tra backup Đối chiếu danh sách file backup với lịch cấu hình Hàng ngày
F07 Cảnh báo vượt ngưỡng Gửi thông báo khi phát hiện bất thường Theo sự kiện
F08 Quản lý event & job Ghi nhật ký job quản trị Tự động

5. Yêu cầu phi chức năng (Non-functional)

Tiêu chí Mô tả
Hiệu năng Không ảnh hưởng tới hệ thống nghiệp vụ (thu thập chỉ đọc, ưu tiên truy vấn nhẹ).
An toàn dữ liệu Tách biệt hoàn toàn với dữ liệu nghiệp vụ. Chỉ lưu metadata và log.
Khả năng mở rộng Cho phép mở rộng để quản lý nhiều DB engine khác nhau.
Tính truy vết (Auditability) Mọi thay đổi trong hệ thống quản trị đều được ghi log.
Khả năng tích hợp Có thể kết nối ra ngoài qua API hoặc xuất file CSV/JSON định kỳ.

6. Mô hình dữ liệu khái quát

ADMIN_DB
 ┣━ catalog/
 │   ┣━ tbl_databases
 │   ┣━ tbl_tables
 │   ┣━ tbl_columns
 ┣━ performance/
 │   ┣━ perf_query_summary
 │   ┣━ perf_wait_summary
 ┣━ security/
 │   ┣━ user_accounts
 │   ┣━ user_audit_log
 ┣━ capacity/
 │   ┣━ space_usage
 │   ┣━ growth_history
 ┣━ backup/
 │   ┣━ backup_log
 │   ┣━ restore_log
 ┣━ automation/
 │   ┣━ job_scheduler
 │   ┣━ job_log
 ┗━ reference/
     ┣━ ref_threshold
     ┣━ ref_environment

7. Luồng xử lý nghiệp vụ tự động

Event Scheduler
   ↓
Thu thập dữ liệu (INFORMATION_SCHEMA, PERFORMANCE_SCHEMA)
   ↓
Lưu vào ADMIN_DB
   ↓
So sánh ngưỡng cảnh báo
   ↓
Sinh cảnh báo (email/API)
   ↓
Ghi nhật ký job và log hiệu năng

8. Kết quả mong đợi

Hạng mục Kết quả đạt được
Vận hành Giảm 80% thao tác thủ công quản trị định kỳ
Giám sát Chủ động phát hiện bất thường trước khi sự cố xảy ra
Audit Có khả năng truy vết đầy đủ thay đổi trong hệ thống
Báo cáo Cung cấp dữ liệu nền cho dashboard quản trị
An toàn Phân quyền rõ ràng, cô lập dữ liệu quản trị

9. Định hướng mở rộng tương lai

  • Tích hợp Prometheus hoặc Zabbix để tự động cảnh báo.
  • Mở API cho hệ thống giám sát ngoài truy vấn dữ liệu quản trị.
  • Áp dụng cơ chế Machine Learning để phát hiện bất thường tự động (anomaly detection).
  • Đồng bộ cấu hình và metadata lên nền tảng Data Catalog nội bộ.

10. Kết luận

Hệ thống Database Quản trị Dữ liệu (DBA Governance Database) là bước trung gian cần thiết để chuyển từ quản trị thủ công sang quản trị chủ động – tự động hóa – phân tích dự báo.
Nó không chỉ hỗ trợ DBA giảm tải, mà còn là cơ sở dữ liệu nền tảng cho mọi hoạt động kiểm toán, an ninh, và tối ưu hiệu năng của hạ tầng dữ liệu doanh nghiệp.

 


Tài liệu đặc tả thiết kế kỹ thuật (Technical Design Specification) cho hệ thống Database Quản trị Dữ Liệu (ADMIN_DB).

TÀI LIỆU ĐẶC TẢ THIẾT KẾ KỸ THUẬT

Hệ thống: Database Quản trị Dữ Liệu – ADMIN_DB

11. Mục tiêu kỹ thuật

  • Chuẩn hóa mô hình dữ liệu quản trị.
  • Tự động thu thập, lưu trữ và xử lý dữ liệu hệ thống (metadata, hiệu năng, backup, bảo mật, audit).
  • Hỗ trợ cơ chế cảnh báo và giám sát tự động qua Event Scheduler hoặc API.
  • Đảm bảo độc lập, mở rộng và an toàn.

12. Kiến trúc tổng thể

🔹 2.1. Thành phần hệ thống

┌─────────────────────────────┐
│      MySQL Instances        │
│ (CSDL nghiệp vụ, staging...)│
└────────────┬────────────────┘
             │
             ▼
┌─────────────────────────────┐
│      ADMIN_DB (Governance)  │
│   ├─ Module: Catalog        │
│   ├─ Module: Performance    │
│   ├─ Module: Capacity       │
│   ├─ Module: Security       │
│   ├─ Module: Backup         │
│   └─ Module: Automation     │
└────────────┬────────────────┘
             │
             ▼
┌─────────────────────────────┐
│ Reporting / Dashboard Layer │
│ (Grafana, Power BI, API)    │
└─────────────────────────────┘

13. Thiết kế mô hình dữ liệu

🔹 3.1. Module CATALOG – Quản lý cấu trúc & metadata

Bảng Mô tả Các cột chính
tbl_databases Thông tin tổng quan các DB đang được quản lý id, db_name, db_engine, server_name, create_time, charset, collation, last_sync
tbl_tables Thông tin bảng trong từng DB id, db_name, table_name, table_type, row_count, data_length, index_length, update_time
tbl_columns Thông tin cột chi tiết id, db_name, table_name, column_name, data_type, is_nullable, column_default, extra
tbl_indexes Thông tin index id, db_name, table_name, index_name, column_name, non_unique, index_type

🛠️ Thu thập định kỳ từ INFORMATION_SCHEMA qua event ev_sync_catalog.

🔹 3.2. Module PERFORMANCE – Giám sát hiệu năng

Bảng Mô tả Các cột chính
perf_query_summary Thống kê truy vấn chậm (slow query) id, db_name, query_text, exec_count, avg_time_ms, max_time_ms, first_seen, last_seen
perf_wait_summary Thống kê wait event id, event_name, count_star, sum_timer_wait, avg_timer_wait, snapshot_time
perf_session_status Theo dõi session (connection, threads) id, host, user, thread_id, time_active, state, command, recorded_at

📈 Dữ liệu thu thập từ performance_schema.events_statements_summary_by_digest, events_waits_summary_global_by_event_name.

🔹 3.3. Module CAPACITY – Quản lý dung lượng & tăng trưởng

Bảng Mô tả Các cột chính
space_usage Ghi dung lượng DB hàng ngày id, db_name, data_size_mb, index_size_mb, total_size_mb, recorded_at
growth_history Lịch sử tăng trưởng theo tuần/tháng id, db_name, avg_growth_mb_per_day, predicted_full_date, last_update
quota_threshold Định nghĩa ngưỡng cảnh báo dung lượng db_name, threshold_mb, alert_level, created_at

🔹 3.4. Module BACKUP – Theo dõi sao lưu và phục hồi

Bảng Mô tả Các cột chính
backup_log Nhật ký sao lưu id, db_name, backup_type, file_path, backup_size_mb, duration_sec, status, recorded_at
restore_log Ghi nhận phục hồi id, db_name, restore_time, source_path, status, verified_by, recorded_at

⚙️ Dữ liệu có thể được insert tự động từ script backup hoặc event.

🔹 3.5. Module SECURITY – Quản lý người dùng & Audit**

Bảng Mô tả Các cột chính
user_accounts Danh sách người dùng và quyền id, user, host, auth_plugin, account_locked, create_time, last_seen
user_privileges Các quyền cụ thể id, user, db_name, privilege_type, is_grantable
user_audit_log Lưu hành vi đăng nhập, thay đổi id, user, host, action, object_name, event_time, ip_address

🔹 3.6. Module AUTOMATION – Tự động hóa & nhật ký job

Bảng Mô tả Các cột chính
job_definition Định nghĩa các job quản trị job_name, description, schedule, status, last_run, next_run
job_log Kết quả thực thi job id, job_name, run_time, status, message, duration_sec
alert_log Ghi lại các cảnh báo sinh ra id, alert_type, severity, message, status, created_at, resolved_at

14. Cơ chế tự động hóa

🔹 4.1. Event Scheduler

Event Name Mô tả Lịch Mục tiêu
ev_sync_catalog Thu thập thông tin schema (DB, table, column) Mỗi ngày Cập nhật metadata
ev_perf_collect Lưu thống kê truy vấn và wait event Mỗi giờ Giám sát hiệu năng
ev_space_monitor Ghi dung lượng và dự báo tăng trưởng Mỗi ngày Quản lý dung lượng
ev_check_backup Kiểm tra trạng thái backup Mỗi ngày Đảm bảo phục hồi được
ev_clean_logs Xóa log cũ hơn X ngày Mỗi tuần Tối ưu dung lượng ADMIN_DB
ev_alert_check Kiểm tra vượt ngưỡng và sinh cảnh báo Mỗi giờ Kích hoạt cảnh báo tự động

🔹 4.2. Thủ tục (Stored Procedures)

Procedure Mục đích Ghi chú
sp_sync_catalog() Lấy dữ liệu từ INFORMATION_SCHEMA và cập nhật vào tbl_databases, tbl_tables, tbl_columns Gọi bởi ev_sync_catalog
sp_collect_perf() Lấy dữ liệu từ performance_schema và ghi vào perf_query_summary Gọi bởi ev_perf_collect
sp_monitor_space() Đo dung lượng từng DB và ghi vào space_usage Gọi bởi ev_space_monitor
sp_generate_alerts() So sánh dữ liệu thực tế với quota_threshold để sinh cảnh báo Gọi bởi ev_alert_check
sp_clean_old_logs() Xóa log cũ hơn X ngày khỏi job_log, perf_query_summary, v.v. Gọi bởi ev_clean_logs

15. Phân quyền và bảo mật

Vai trò Quyền Ghi chú
admin_ops Toàn quyền trên ADMIN_DB Quản lý vận hành
monitor_agent SELECT + EXECUTE thủ tục monitor Dùng cho event và automation
auditor_readonly SELECT trên các bảng log, metadata Dành cho kiểm toán
api_service SELECT trên bảng xuất báo cáo Dùng cho dashboard/API

16. Cơ chế log & truy vết

  • Tất cả thủ tục, event, và job đều ghi kết quả vào job_log.
  • Khi phát sinh lỗi → lưu message, error_code, stack_trace.
  • Cảnh báo được ghi song song vào alert_log với mức độ (LOW, MEDIUM, CRITICAL).
  • Tất cả các thao tác DDL trong ADMIN_DB (CREATE, ALTER, DROP) được log qua trigger audit.

17. Hiệu năng & lưu trữ

  • Dữ liệu log, hiệu năng, audit được phân vùng (PARTITION BY RANGE (recorded_at)) theo tháng để tối ưu truy vấn.
  • Event dọn dẹp tự động xóa dữ liệu cũ sau 90 ngày.
  • Chỉ lưu dữ liệu tổng hợp, không lưu chi tiết từng truy vấn.

18. Mô hình quan hệ tổng quát

tbl_databases (1) ──< tbl_tables (n) ──< tbl_columns (n)
tbl_databases (1) ──< space_usage (n)
tbl_databases (1) ──< perf_query_summary (n)
job_definition (1) ──< job_log (n)
quota_threshold (1) ──< alert_log (n)
user_accounts (1) ──< user_privileges (n)

19. Hạ tầng triển khai

Thành phần Mô tả
MySQL Engine 8.0+
Storage Engine InnoDB (tất cả bảng)
Event Scheduler Bật (ON)
Backup ADMIN_DB Mỗi ngày, giữ 7 bản gần nhất
Kết nối tới DB khác Sử dụng federated hoặc mysql_fdw (PostgreSQL) nếu đa hệ

20. Kết luận

Hệ thống ADMIN_DB hoạt động như một bộ não giám sát toàn cục, tự động hóa hầu hết công việc DBA thường xuyên:

  • Tự thu thập thông tin cấu trúc, hiệu năng, dung lượng.
  • Tự cảnh báo và ghi nhận log.
  • Tự bảo trì và dọn dẹp dữ liệu.
  • Cung cấp dữ liệu nền cho phân tích, dự báo và kiểm toán.

 

 

INFORMATION_SCHEMA ─────┐
                        ├──> tbl_databases
                        ├──> tbl_tables
                        ├──> tbl_columns
                        ├──> space_usage
                        └──> user_privileges
PERFORMANCE_SCHEMA ─────┐
                        ├──> perf_query_summary
                        └──> perf_wait_summary
MYSQL (system DB) ──────┐
                        └──> user_accounts
ADMIN_DB nội bộ ────────┐
                        ├──> quota_threshold
                        ├──> alert_log
                        └──> job_log

🧩 1. Nhóm Cấu trúc hệ thống (metadata)

🔹 Bảng tbl_databases

Nguồn: information_schema.schemata

INSERT INTO admin_db.tbl_databases (db_name, db_engine, server_name, create_time, charset, collation)
SELECT 
    SCHEMA_NAME,
    'InnoDB',
    @@hostname,
    NOW(),
    DEFAULT_CHARACTER_SET_NAME,
    DEFAULT_COLLATION_NAME
FROM information_schema.schemata
WHERE SCHEMA_NAME NOT IN ('mysql','information_schema','performance_schema','sys');

🔹 Bảng tbl_tables

Nguồn: information_schema.tables

INSERT INTO admin_db.tbl_tables (
    db_name, table_name, engine, row_count, data_length, index_length, last_sync
)
SELECT 
    TABLE_SCHEMA, TABLE_NAME, ENGINE, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH, NOW()
FROM information_schema.tables
WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys');

🔹 Bảng tbl_columns

Nguồn: information_schema.columns

INSERT INTO admin_db.tbl_columns (
    db_name, table_name, column_name, data_type, is_nullable, column_default, last_sync
)
SELECT 
    TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, NOW()
FROM information_schema.columns
WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys');

🧩 2. Nhóm Người dùng & quyền

🔹 user_accounts

Nguồn: mysql.user

INSERT INTO admin_db.user_accounts (
    user_id, host, auth_plugin, account_locked, create_time
)
SELECT 
    user, host, plugin, account_locked, NOW()
FROM mysql.user;

🔹 user_privileges

Nguồn: information_schema.user_privileges

INSERT INTO admin_db.user_privileges (
    user_id, db_name, privilege_type, is_grantable
)
SELECT 
    GRANTEE,
    TABLE_SCHEMA,
    PRIVILEGE_TYPE,
    IS_GRANTABLE
FROM information_schema.schema_privileges
WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys');

🧩 3. Nhóm Giám sát hiệu năng

🔹 perf_query_summary

Nguồn: performance_schema.events_statements_summary_by_digest

INSERT INTO admin_db.perf_query_summary (
    db_name, query_text, exec_count, avg_time_ms, max_time_ms, last_seen
)
SELECT 
    SCHEMA_NAME,
    DIGEST_TEXT,
    COUNT_STAR,
    AVG_TIMER_WAIT/1000000 AS avg_time_ms,
    MAX_TIMER_WAIT/1000000 AS max_time_ms,
    NOW()
FROM performance_schema.events_statements_summary_by_digest
WHERE SCHEMA_NAME IS NOT NULL;

🔹 perf_wait_summary

Nguồn: performance_schema.events_waits_summary_global_by_event_name

INSERT INTO admin_db.perf_wait_summary (
    event_name, count_star, avg_wait, snapshot_time
)
SELECT 
    EVENT_NAME,
    COUNT_STAR,
    AVG_TIMER_WAIT/1000000 AS avg_wait,
    NOW()
FROM performance_schema.events_waits_summary_global_by_event_name;

🧩 4. Nhóm Dung lượng & ngưỡng

🔹 space_usage

Nguồn: information_schema.tables (tổng hợp theo database)

INSERT INTO admin_db.space_usage (
    db_name, data_size_mb, index_size_mb, total_size_mb, recorded_at
)
SELECT 
    TABLE_SCHEMA,
    SUM(DATA_LENGTH)/1024/1024,
    SUM(INDEX_LENGTH)/1024/1024,
    SUM(DATA_LENGTH+INDEX_LENGTH)/1024/1024,
    NOW()
FROM information_schema.tables
WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys')
GROUP BY TABLE_SCHEMA;

🔹 quota_threshold

Tự nhập tay hoặc dùng bảng cấu hình:

INSERT INTO admin_db.quota_threshold (db_name, threshold_mb, alert_level, created_at)
VALUES ('salesdb', 500, 'HIGH', NOW()), ('hrdb', 200, 'MEDIUM', NOW());

🧩 5. Nhóm Backup & Restore logs

🔹 backup_log

Nếu backup bằng mysqldump hoặc script, log được lưu tự động:

INSERT INTO admin_db.backup_log (
    backup_type, file_path, backup_size_mb, duration_sec, recorded_at
)
VALUES ('FULL', 'D:\\Backup\\salesdb_full.sql', 128.4, 75, NOW());

🔹 restore_log

INSERT INTO admin_db.restore_log (
    db_name, restore_time, source_path, status, verified_by
)
VALUES ('salesdb', NOW(), 'D:\\Backup\\salesdb_full.sql', 'SUCCESS', 'hocvien');

🧩 6. Nhóm Job & Scheduler

🔹 job_definition

INSERT INTO admin_db.job_definition (job_name, description, schedule, status)
VALUES ('daily_backup', 'Backup tất cả database mỗi ngày', 'EVERY 1 DAY', 'ACTIVE');

🔹 job_log

INSERT INTO admin_db.job_log (job_name, run_time, status, duration_sec)
VALUES ('daily_backup', NOW(), 'SUCCESS', 80);

🧩 7. Nhóm Cảnh báo & Tăng trưởng

🔹 alert_log

INSERT INTO admin_db.alert_log (alert_type, severity, message, status, created_at)
VALUES ('SPACE_OVER', 'HIGH', 'Database salesdb vượt ngưỡng 500MB', 'OPEN', NOW());

🔹 growth_history

INSERT INTO admin_db.growth_history (db_name, avg_growth_mb_per_day, predicted_full_date)
SELECT 
    db_name,
    (MAX(total_size_mb) - MIN(total_size_mb)) / COUNT(*),
    DATE_ADD(NOW(), INTERVAL 30 DAY)
FROM admin_db.space_usage
GROUP BY db_name;

✅ Kết quả

Khi hoàn tất, cô sẽ có:

  • tbl_*: chứa cấu trúc hệ thống (database, table, column)
  • user_*: chứa tài khoản và quyền
  • perf_*: chứa thống kê hiệu năng
  • *_log: ghi nhận backup, restore, alert, job
  • space_usage & quota_threshold: giám sát dung lượng và cảnh báo

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *