✅ 1. Mục tiêu tự động hóa
Tác vụ | Mục tiêu |
---|---|
Backup định kỳ | Đảm bảo an toàn dữ liệu |
Kill session treo/lock | Tăng ổn định hệ thống |
Gửi cảnh báo | Phản ứng nhanh với lỗi |
Báo cáo hiệu năng | Chủ động tuning |
Tự mở rộng | Không bị full disk / tablespace |
Tác vụ | Mục tiêu |
---|---|
Backup định kỳ | Đảm bảo an toàn dữ liệu |
Kill session treo/lock | Tăng ổn định hệ thống |
Gửi cảnh báo | Phản ứng nhanh với lỗi |
Báo cáo hiệu năng | Chủ động tuning |
Tự mở rộng | Không bị full disk / tablespace |
Mục tiêu | Lý do |
---|---|
Giám sát sử dụng hệ thống | Phát hiện sớm quá tải, sai cấu hình |
Xử lý session treo, lock | Tối ưu concurrency |
Tối ưu RAM/CPU/WAL | Giảm tiêu hao tài nguyên |
Cân đối load | Tăng độ ổn định hệ thống |
Phát hiện bottleneck (CPU, RAM, IO, lock…)
Cảnh báo slow query, deadlock, bloat
Theo dõi sức khỏe hệ thống liên tục
Đề xuất tối ưu cấu hình & truy vấn
Mục tiêu | Lý do |
---|---|
Rút ngắn thời gian truy vấn | Tăng trải nghiệm người dùng |
Giảm tài nguyên tiêu thụ | Giảm CPU, RAM, Disk |
Tăng thông lượng | Phục vụ nhiều session hơn |
Tránh full scan | Tận dụng chỉ mục, cache |
Mục tiêu | Tác dụng |
---|---|
Dọn dẹp dữ liệu chết (dead tuples) | Giảm bloat, tối ưu disk |
Cập nhật thống kê | Tối ưu plan truy vấn |
Tái cấu trúc index/bảng | Khôi phục hiệu năng |
Tránh wraparound transaction ID | Bảo vệ dữ liệu lâu dài |
Chuyển hệ thống từ DB cũ sang PostgreSQL (Oracle, MySQL, MSSQL…)
Di chuyển từ PostgreSQL server cũ sang server mới
Chuyển giữa các phiên bản PostgreSQL (nâng cấp)
Chia nhỏ / gộp DB giữa môi trường test – UAT – prod
Hàng ngày backup DB hoặc cluster
Ghi log đầy đủ
Lưu theo ngày/tháng/năm
Xóa bản cũ sau 7 hoặc 30 ngày
Thông báo khi thành công/lỗi
Loại phục hồi | Mục tiêu | Công cụ | Tình huống dùng |
---|---|---|---|
Logical | Phục hồi bảng, DB | psql , pg_restore | Lỗi người dùng, sai sót nghiệp vụ |
Physical (Full) | Toàn bộ cluster | pg_basebackup , rsync | Khôi phục toàn cụm (crash, DR) |
PITR | Phục hồi về thời điểm cụ thể | WAL + base backup | Rollback lỗi logic/tấn công |
Cấu hình tham số giúp:
Đảm bảo dữ liệu được backup chính xác
Cho phép khôi phục linh hoạt theo thời gian (PITR)
Giảm rủi ro mất WAL
Tối ưu dung lượng, tốc độ ghi WAL và backup
PostgreSQL hỗ trợ hai loại chính:
Loại | Mục tiêu | Dạng dữ liệu | Công cụ |
---|---|---|---|
Logical Backup | CSDL, bảng cụ thể | Câu lệnh SQL | pg_dump , pg_dumpall |
Physical Backup | Toàn bộ cluster | Dữ liệu nhị phân gốc | pg_basebackup , rsync , pgBackRest |
PostgreSQL hỗ trợ hai loại chính:
Loại | Mục tiêu | Dạng dữ liệu | Công cụ |
---|---|---|---|
Logical Backup | CSDL, bảng cụ thể | Câu lệnh SQL | pg_dump , pg_dumpall |
Physical Backup | Toàn bộ cluster | Dữ liệu nhị phân gốc | pg_basebackup , rsync , pgBackRest |
PostgreSQL cung cấp bảo mật theo 4 lớp chính:
Lớp | Mục đích |
---|---|
1. Xác thực kết nối | Dùng pg_hba.conf để kiểm soát IP, user, phương thức |
2. Phân quyền Role/User | Dùng GRANT/REVOKE và ROLE |
3. Bảo mật nâng cao | SSL, RLS, mã hóa, schema isolation |
4. Audit | Ghi log truy cập, truy vấn, thao tác hệ thống |
PostgreSQL sử dụng MVCC (Multi-Version Concurrency Control):
Cho phép nhiều transaction đọc/ghi cùng lúc mà không khóa lẫn nhau
Mỗi transaction thấy dữ liệu ở phiên bản (snapshot) riêng
Khi có update: PostgreSQL ghi bản mới, bản cũ đánh dấu là "dead"
PostgreSQL sử dụng MVCC (Multi-Version Concurrency Control):
Cho phép nhiều transaction đọc/ghi cùng lúc mà không khóa lẫn nhau
Mỗi transaction thấy dữ liệu ở phiên bản (snapshot) riêng
Khi có update: PostgreSQL ghi bản mới, bản cũ đánh dấu là "dead"
Cơ chế | Oracle | PostgreSQL |
---|---|---|
UNDO | Có file UNDO riêng | Không dùng UNDO riêng – dùng MVCC |
REDO | Redo log file | WAL (Write-Ahead Log) |
Control File | Có controlfile riêng | Không có controlfile – dùng các file meta khác (pg_control) |
sqlCREATE TABLE customer (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
created_at TIMESTAMP DEFAULT now()
);
Sửa bài viết
Tablespace trong PostgreSQL là một thư mục vật lý được quản lý bởi PostgreSQL, dùng để lưu table, index, hoặc toàn bộ database thay vì lưu trong pg_default
(mặc định).
Mỗi tablespace là 1 symbolic link đến 1 thư mục trong hệ điều hành.
✅ Tablespace giúp:
Tách dữ liệu theo ổ cứng / phân vùng
Tối ưu I/O
Phân vùng dữ liệu theo ứng dụng / độ ưu tiên / người dùng
PostgreSQL không phân biệt “user” và “role” — tất cả đều là “roles”.
Một role có thể:
Có hoặc không có quyền LOGIN
Là superuser hoặc không
Được cấp quyền cho schema, bảng, hoặc role khác
PostgreSQL mặc định chỉ cho phép kết nối local (trên localhost).
Muốn client hoặc ứng dụng kết nối từ xa qua TCP/IP, bạn phải:
Bật lắng nghe kết nối qua mạng (listen_addresses
)
Cho phép user/IP cụ thể truy cập qua pg_hba.conf
Mở port trên firewall (nếu có)
Instance PostgreSQL = 1 tiến trình postmaster
+ thư mục dữ liệu ($PGDATA
)
Có thể chạy nhiều instance trên 1 server (khác port + thư mục)
Cài đặt PostgreSQL thường kèm theo:
File nhị phân (bin/
)
File cấu hình (postgresql.conf
, pg_hba.conf
, pg_ident.conf
)
Thư mục dữ liệu (data/
)
Log, WAL, tablespace…