Tại sao PostgreSQL là lựa chọn sống còn thay vì Excel hay MySQL?
Khi dữ liệu của bạn vượt ngưỡng 1GB hoặc bắt đầu có hàng triệu bản ghi, Excel sẽ bắt đầu “treo máy”. Lúc này, bạn cần một hệ quản trị cơ sở dữ liệu (DBMS) thực thụ. PostgreSQL không chỉ là một cái tên lâu đời; nó là một “quái vật” về hiệu năng với khả năng xử lý hơn 10.000 giao dịch mỗi giây nếu được tinh chỉnh đúng cách.
Nhiều anh em thường phân vân giữa MySQL và PostgreSQL. Qua kinh nghiệm triển khai các dự án Fintech cần độ chính xác đến từng chữ số thập phân, mình chọn PostgreSQL. Nó tuân thủ chuẩn ACID khắt khe hơn, hỗ trợ kiểu dữ liệu JSONB cực nhanh và cho phép bạn viết các hàm (functions) phức tạp bằng nhiều ngôn ngữ khác nhau. Nếu ứng dụng của bạn cần mở rộng lâu dài, đừng ngần ngại chọn Postgres ngay từ đầu.
Mình đã trực tiếp thiết lập hơn 50 cụm database trên Ubuntu Server và dưới đây là quy trình tinh gọn nhất để bạn có một hệ thống chạy ổn định.
Các bước cài đặt PostgreSQL trên Ubuntu 22.04
Ubuntu 22.04 mặc định cung cấp PostgreSQL phiên bản 14 trong kho ứng dụng chính thức. Cài đặt qua apt giúp bạn nhận được các bản vá bảo mật tự động từ hệ điều hành.
Bước 1: Làm sạch và cập nhật danh sách gói
Đừng bao giờ quên bước này. Cập nhật cache giúp tránh tình trạng tải nhầm các phiên bản cũ đã lỗi thời.
sudo apt update
Bước 2: Cài đặt PostgreSQL và các Extension quan trọng
Gói postgresql-contrib cực kỳ quan trọng. Nó cung cấp các tính năng như tìm kiếm mờ (fuzzy string matching) hay mã hóa dữ liệu mà phiên bản core không có.
sudo apt install postgresql postgresql-contrib -y
Sau khi cài đặt, dịch vụ sẽ tự động kích hoạt. Bạn có thể yên tâm là Postgres sẽ tự khởi động lại nếu server bị reboot đột ngột.
Thiết lập Role và Database cho dự án
PostgreSQL quản lý quyền bằng khái niệm “Roles”, tương tự như user nhưng linh hoạt hơn. Một sai lầm phổ biến là dùng tài khoản postgres cho code ứng dụng. Điều này cực kỳ rủi ro về bảo mật.
Mở terminal của PostgreSQL
Để bắt đầu, hãy chuyển sang user hệ thống postgres để có quyền tối cao:
sudo -i -u postgres
psql
Lúc này, dấu nhắc lệnh sẽ đổi thành postgres=#. Bạn đã sẵn sàng để ra lệnh cho database.
Tạo User riêng cho ứng dụng
Giả sử bạn đang xây dựng một app quản lý kho. Hãy tạo một user và database riêng biệt để dễ quản lý và backup sau này.
CREATE ROLE app_user WITH LOGIN PASSWORD 'MatKhauSieuKho2024';
CREATE DATABASE inventory_db OWNER app_user;
Gõ \q để thoát ra ngoài. Giờ đây, ứng dụng của bạn đã có một “ngôi nhà” riêng an toàn.
Cấu hình kết nối từ xa (Remote Access) an toàn
Theo mặc định, Postgres chỉ lắng nghe từ localhost. Nếu bạn muốn dùng TablePlus hay DBeaver từ máy cá nhân để soi data, bạn phải mở cửa cho nó.
1. Chỉnh sửa file cấu hình địa chỉ
Mở file cấu hình chính bằng nano:
sudo nano /etc/postgresql/14/main/postgresql.conf
Tìm dòng listen_addresses. Hãy đổi từ localhost sang '*' để cho phép kết nối từ bên ngoài:
listen_addresses = '*'
2. Cấp quyền truy cập trong pg_hba.conf
Đây là lớp bảo mật thứ hai. Bạn cần định nghĩa IP nào được phép gõ cửa server.
sudo nano /etc/postgresql/14/main/pg_hba.conf
Thêm dòng sau vào cuối file. Thay 0.0.0.0/0 bằng IP tĩnh của bạn nếu muốn an toàn tuyệt đối:
host all all 0.0.0.0/0 md5
3. Áp dụng thay đổi
Mọi chỉnh sửa file .conf đều yêu cầu restart để hệ thống nạp lại thông số mới:
sudo systemctl restart postgresql
Mẹo kiểm tra và tối ưu nhanh
Database đang chạy không có nghĩa là nó đang khỏe. Hãy bỏ túi vài lệnh kiểm tra nhanh dưới đây.
Check trạng thái dịch vụ
sudo systemctl status postgresql
Nếu thấy active (running) màu xanh rực rỡ là bạn đã thành công 99%.
Kiểm tra Port 5432
Đảm bảo firewall không chặn cổng mặc định của Postgres:
ss -nlt | grep 5432
Một lưu ý nhỏ cho anh em: Thư mục log tại /var/log/postgresql/ có thể chiếm vài GB ổ cứng sau một tháng nếu bạn bật chế độ log mọi câu truy vấn (slow query log). Hãy thường xuyên kiểm tra dung lượng bằng lệnh df -h để tránh tình trạng server “chết đứng” vì hết bộ nhớ. Chỉ với 10 phút thiết lập, bạn đã có một nền tảng database chuẩn công nghiệp cho dự án của mình rồi!

