Chuyển đến nội dung chính
Kết nối cơ sở dữ liệu PostgreSQL của bạn để Tony (Database Engineer) có thể phân tích truy vấn, tối ưu hiệu suất và giám sát sức khỏe cơ sở dữ liệu.

Nền tảng được hỗ trợ

Nền tảngHỗ trợ
PostgreSQL tự host12.x, 13.x, 14.x, 15.x, 16.x
AWS RDS PostgreSQLTất cả phiên bản
AWS Aurora PostgreSQLTất cả phiên bản
Google Cloud SQLTất cả phiên bản PostgreSQL
Azure Database for PostgreSQLFlexible Server, Single Server

Điều kiện tiên quyết

  • Một instance PostgreSQL có thể tiếp cận từ CloudThinker qua mạng.
  • Quyền admin để tạo người dùng riêng và cấp đặc quyền.
  • Extension pg_stat_statements đã cài đặt nếu bạn muốn phân tích ở cấp độ truy vấn (bắt buộc để lấy dữ liệu slow query).

Thiết lập

1

Kết nối với tư cách admin

Kết nối tới instance PostgreSQL bằng tài khoản admin:
psql -h your-host -U postgres -d your-database
2

Tạo người dùng chỉ đọc

Tạo người dùng riêng cho CloudThinker:
CREATE USER cloudthinker_readonly WITH PASSWORD 'your-secure-password';
3

Cấp quyền kết nối và truy cập schema

Cho phép kết nối và sử dụng schema:
GRANT CONNECT ON DATABASE your_database TO cloudthinker_readonly;
GRANT USAGE ON SCHEMA public TO cloudthinker_readonly;
GRANT USAGE ON SCHEMA information_schema TO cloudthinker_readonly;
4

Cấp quyền SELECT

Cấp SELECT trên tất cả bảng và view, bao gồm các bảng sau này:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO cloudthinker_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA information_schema TO cloudthinker_readonly;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO cloudthinker_readonly;
5

Bật pg_stat_statements

Extension này bắt buộc để phân tích truy vấn:
-- Enable extension (requires superuser)
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

-- Grant access to the user
GRANT SELECT ON pg_stat_statements TO cloudthinker_readonly;
Với RDS/Aurora, thêm vào parameter group:
shared_preload_libraries = 'pg_stat_statements'
6

Cấu hình truy cập mạng

Đảm bảo CloudThinker có thể tiếp cận cơ sở dữ liệu:
  • Thêm IP CloudThinker vào security group hoặc firewall
  • Với RDS: bật public access hoặc dùng VPC peering
7

Thêm kết nối trong CloudThinker

Điều hướng đến Connections → PostgreSQL và nhập:
  • Host: hostname hoặc IP cơ sở dữ liệu
  • Port: cổng cơ sở dữ liệu (mặc định: 5432)
  • Database: tên cơ sở dữ liệu
  • Username: cloudthinker_readonly
  • Password: mật khẩu bạn đặt ở trên
  • SSL mode: require (khuyến nghị)
Nhấn Connect. CloudThinker hiển thị trạng thái Connected khi thành công.

Chi tiết kết nối

TrườngMô tảMặc định
HostHostname hoặc IP cơ sở dữ liệu
PortCổng PostgreSQL5432
DatabaseTên cơ sở dữ liệu
UsernameNgười dùng riêng, ví dụ: cloudthinker_readonly
PasswordMật khẩu người dùng
SSL modedisable, allow, prefer, require, verify-ca, verify-fullrequire
Connection timeoutGiây chờ kết nối10
Statement timeoutThời gian thực thi truy vấn tối đa tính bằng ms30000
Định dạng connection string:
postgresql://cloudthinker_readonly:your-secure-password@your-host:5432/your-database

Quyền bắt buộc

Tối thiểu

GRANT CONNECT ON DATABASE dbname TO cloudthinker_readonly;
GRANT USAGE ON SCHEMA public TO cloudthinker_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO cloudthinker_readonly;

Khuyến nghị (phân tích toàn diện)

-- All of the above, plus:
GRANT SELECT ON pg_stat_statements TO cloudthinker_readonly;
GRANT SELECT ON pg_stat_activity TO cloudthinker_readonly;
GRANT SELECT ON pg_stat_user_tables TO cloudthinker_readonly;
GRANT SELECT ON pg_stat_user_indexes TO cloudthinker_readonly;
GRANT SELECT ON pg_statio_user_tables TO cloudthinker_readonly;
GRANT pg_read_all_stats TO cloudthinker_readonly;  -- PostgreSQL 14+
Bắt đầu với các grant tối thiểu và thêm các grant stats khuyến nghị để mở khóa phân tích cấp truy vấn và báo cáo cache hit.

Khả năng của agent

Sau khi kết nối, Tony có thể:
Khả năngMô tả
Phân tích truy vấnXác định slow query, phân tích execution plan
Khuyến nghị indexTìm index còn thiếu, xác định index không dùng
Metrics hiệu suấtGiám sát kết nối, I/O, tỷ lệ cache hit
Thống kê bảngPhân tích table bloat, dead tuple, trạng thái vacuum
Giám sát replicationKiểm tra lag và trạng thái streaming trên replica

Xác minh kết nối

@tony #report check PostgreSQL connection health and list active database sessions

Ví dụ prompt

@tony #report analyze slow queries on the production PostgreSQL instance
@tony #recommend find missing indexes on the orders table
@tony #dashboard show database performance metrics including cache hit rates

Khắc phục sự cố

  • Xác minh host và port chính xác
  • Kiểm tra security group hoặc firewall cho phép IP CloudThinker
  • Với RDS: đảm bảo “Publicly accessible” được bật hoặc dùng VPC peering
  • Xác nhận PostgreSQL đang lắng nghe trên interface đúng
  • Xác minh username và password chính xác
  • Kiểm tra pg_hba.conf cho phép phương thức kết nối
  • Đảm bảo người dùng có đặc quyền CONNECT trên cơ sở dữ liệu
  • Xác minh extension đã cài đặt: SELECT * FROM pg_extension WHERE extname = 'pg_stat_statements';
  • Kiểm tra shared_preload_libraries bao gồm pg_stat_statements
  • Khởi động lại PostgreSQL sau khi thay đổi shared_preload_libraries
  • Với RDS: sửa parameter group và reboot instance
  • Xác minh người dùng có SELECT trên các bảng bắt buộc
  • Cấp role pg_read_all_stats cho PostgreSQL 14+
  • Kiểm tra quyền schema bằng \dn+ trong psql

Bảo mật

  • Quyền tối thiểu — chỉ cấp các quyền mà agent cần cho trường hợp sử dụng của bạn; bắt đầu với quyền chỉ đọc và mở rộng sau.
  • Chỉ đọc theo mặc định — sử dụng thông tin xác thực chỉ đọc trừ khi bạn muốn agent thực hiện thay đổi qua kết nối này.
  • Xoay vòng thông tin xác thực — xoay vòng khóa và token theo lịch trình thông thường của bạn; CloudThinker sẽ lấy giá trị mới khi bạn cập nhật kết nối.
  • Thu hồi khi bàn giao — xóa thông tin xác thực tại nhà cung cấp khi bạn xóa một kết nối hoặc khi đồng nghiệp rời nhóm.
  • Bắt buộc SSL — luôn sử dụng SSL mode require hoặc cao hơn để mã hóa dữ liệu truyền tải.
  • Grant tối thiểu — chỉ cấp SELECT cho người dùng CloudThinker; không bao giờ cấp quyền ghi.

Liên quan

Tony Agent

Agent tối ưu cơ sở dữ liệu
https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mysql.svg?fit=max&auto=format&n=aLd-ttc-SCW-aFky&q=85&s=29b74ea2b3ffacd21682ca898f6a2e43

Kết nối MySQL

Thiết lập tương tự cho cơ sở dữ liệu MySQL