Có một khoảnh khắc khi PostgreSQL được quản lý thôi tiện lợi: bạn muốn một extension mà tầng đó không cung cấp, bạn muốn thấy query plan thật và tinh chỉnh work_mem, bạn muốn superuser. Khi bạn muốn sở hữu Postgres — cấu hình, phiên bản, extension, lịch sao lưu — một VPS với root đầy đủ là câu trả lời thẳng thắn. Đây là thiết lập riêng cho PostgreSQL; về bức tranh rộng hơn "tự host một cơ sở dữ liệu" (Postgres so với Redis, nơi một máy dùng chung là sai), xem ca sử dụng cơ sở dữ liệu tổng quát.
Vì sao tự host PostgreSQL
Trên máy của chính bạn, bạn có được thứ mà các tầng được quản lý phân phối theo khẩu phần:
- Toàn bộ
postgresql.conf—shared_buffers,work_mem,max_connections, các thiết lập WAL, tinh chỉnh theo khối lượng công việc của bạn, không phải mặc định của nhà cung cấp. - Bất kỳ extension nào.
pgvectorcho embedding,PostGIScho địa không gian,TimescaleDBcho chuỗi thời gian,pg_cron,pg_stat_statements— cài thứ bạn cần. Đây là nơi một tầng được quản lý nói không thường xuyên nhất. - Phiên bản chính của bạn, nâng cấp theo lịch của bạn, không phải của nhà cung cấp.
- Superuser và OS bên dưới — di chuyển thư mục dữ liệu, tinh chỉnh kernel, chạy sao chép streaming sang máy thứ hai.
Nếu pgvector là lý do bạn ở đây, lưu ý rằng Postgres cộng pgvector là một kho vector hoàn chỉnh trên một máy — cùng khối xây dựng đằng sau một ngăn xếp RAG tự host và bộ nhớ agent.
Thiết lập nó (Ubuntu 24.04, Docker)
# docker-compose.yml — PostgreSQL 16 (+ pgvector via the pgvector image)
services:
db:
image: pgvector/pgvector:pg16
restart: always
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: change-me-strong
POSTGRES_DB: app
command: ["postgres", "-c", "shared_buffers=512MB", "-c", "work_mem=32MB"]
volumes: ["/srv/pg:/var/lib/postgresql/data"]
ports: ["127.0.0.1:5432:5432"] # localhost only; see below to expose safely
docker compose up -d
docker compose exec db psql -U app -c "CREATE EXTENSION IF NOT EXISTS vector;"
Bind vào 127.0.0.1, nó phục vụ một ứng dụng trên cùng máy mà không phơi bày gì cả. Để cho các máy chủ khác vào, đó là phần tiếp theo.
Để các máy chủ khác kết nối — an toàn
Khoảnh khắc một máy khác cần cơ sở dữ liệu, hai điều thay đổi:
- Một địa chỉ ổn định, có thể định tuyến — một gói IPv4 chuyên dụng (Small-IP $16, Medium-IP $20). Các gói NAT chia sẻ một IP đi ra, tốt cho đi ra nhưng không tốt để làm một cơ sở dữ liệu mà người khác gọi vào.
- Tường lửa thật chặt. Chỉ mở 5432 cho các IP client cụ thể, không bao giờ
0.0.0.0/0, và yêu cầu TLS. Một cổng Postgres mở trên internet công cộng bị tìm thấy trong vài phút — khóa nó bằng một tường lửa UFW.
Sao lưu là việc của bạn
Tự host nghĩa là sao lưu do bạn lo, và quy tắc là: làm chúng trước khi bạn cần. pg_dump trên cron cho sao lưu logic, hoặc lưu trữ WAL cho khôi phục theo thời điểm với bất cứ thứ gì bạn quan tâm. Chuyển các bản dump ra khỏi máy, và thử một lần khôi phục ít nhất một lần — một bản sao lưu bạn chưa bao giờ khôi phục là một hy vọng, không phải bản sao lưu. Có một add-on sao lưu được quản lý nếu bạn không muốn tự chạy nó.
Vì sao chọn EQVPS cho PostgreSQL
- Root đầy đủ, superuser, cấu hình của bạn — từ $8/tháng, NVMe (RAID1) trở nên quan trọng ngay khi một cơ sở dữ liệu và WAL của nó ghi cùng lúc.
- Không KYC, thanh toán crypto. Email để đăng ký, USDC/USDT để trả.
- EU (Đức, Phần Lan), root trong ~60 giây. Mang schema của bạn tới và bắt đầu.
Ca sử dụng cơ sở dữ liệu tổng quát (tổng quan Postgres/Redis) → · RAG tự host ở quy mô lớn →
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.