✅ 1. Mục tiêu bảo trì định kỳ
| 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 |
| 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 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"
| 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()
);
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…
PostgreSQL có hệ sinh thái công cụ rất phong phú, hỗ trợ từ:
Kết nối & truy vấn
Quản lý GUI
Giám sát
Backup & Recovery
Replication, HA/Failover
Tối ưu truy vấn & tự động hóa
PostgreSQL sử dụng mô hình client-server với kiến trúc xử lý theo dạng multi-process (mỗi kết nối là một process độc lập).
PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở (Open Source RDBMS) mạnh mẽ, được phát triển từ năm 1986 tại Đại học California Berkeley. PostgreSQL hỗ trợ SQL chuẩn, các tính năng NoSQL, JSON/XML, ACID, MVCC, phân quyền bảo mật và khả năng mở rộng mạnh mẽ.
pg_dump, pg_dumpall, psql,pg_restore hay dùng trong PostgreSQL