Lộ trình trở thành PostgreSQL DBA

 

1. Giới thiệu

Mục đích của bài viết này là cung cấp cho bạn hình dung về công việc quản trị PostgreSQL Database (Database Administrator – DBA) và giúp định hướng việc học của bạn nếu bạn còn bối rối.

 

2. Học các thuật ngữ và khái niệm quan trọng

  • Object model: data types, columns, rows, tables, schemas, databases, queries.
  • Relational model: domains, attributes, tuples, relations, constraints, NULL.
  • Databases high-level concepts: ACID, MVCC, transactions, write-ahead log, query processing.

3. Học cài đặt và khởi động PostgreSQL

  • Cách sử dụng các trình quản lý gói phần mềm trên Linux (APT, YUM, RPM, …)
  • Sử dụng docker (không bắt buộc)
  • Quản lý service PostgreSQL bằng systemd (start, stop, restart, reload).
  • Quản lý service PostgreSQL bằng pg_ctl, pg_ctlcluster.
  • Kết nối vào Postgres bằng psql.
  • Deploy database service trên môi trường cloud như AWS, GCE, Azure, Heroku, DigitalOcean, … (không bắt buộc)

4. Học cách cấu hình PostgreSQL

Học cách cấu hình các thành phần cơ bản trong PostgreSQL. Ở bước này, bạn chưa cần hiểu quá sâu về từng thành phần

  • Cách cấu hình các tham số trong postgresql.conf:
  • Cách cấu hình các tham số quy định sử dụng tài nguyên (Memory, CPU, Session,…)
  • Cách cấu hình Write-ahead Log
  • Hiểu khái niệm về Checkpoints và Background Writer
  • Hiểu và sử dụng Cost-based vacuum and auto-vacuum
  • Cấu hình các kỹ thuật Replication
  • Sử dụng Query planner
  • Cách sử dụng Reporting, logging và statistics
  • Sử dụng các extensions

5. Học về bảo mật PostgreSQL

Hiểu về các khái niệm quan trọng trong bảo mật và biết cách triển khai những chính sách bảo mật cơ bản

  • Các hình thức xác thực, role, pg_hba.conf, SSL settings.`
    Quyền: Cách gán/gỡ quyền, quyền mặc định
  • Các chủ đề bảo mật khác:` row-level security, selinux.

 

6. Học các kỹ năng quản trị Database nền tảng:

Luyện tập các kỹ năng triển khai, mở rộng, bảo trì vận hành PostgreSQL và các phần mềm trong cùng hệ sinh thái

  • Replication: streaming replication, logical replication
  • Các công cụ Backup/recovery :
    • Có sẵn khi cài đặt: pg_dump, pg_dumpall, pg_restore, pg_basebackup
    • Từ hãng thứ 3: barman, pgbackrest, pg_probackup, WAL-G
  • Thủ tục kiểm tra tính khả dụng của bản backup
  • Nâng cấp Database
    • Nâng cấp bằng công cụ pg_upgrade
    • Nâng cấp bằng logical replication
  • Connection pooling: Pgbouncer, Pgpool-II, Odyssey, Pgagroal
  • Công cụ giám sát: Prometheus, Zabbix,…
  • High availability và cluster management: Patroni, Repmgr, Stolon, pg_auto_failover, PAF
  • Phần mềm Load Balancing và Service Discovery: Haproxy, Keepalived, Consul, Etcd
  • Triển khai Postgres trên Kubernetes: Simple StatefulSet setup, HELM, operators
  • Resource usage and provisioning, capacity planning
  • Học cách định kỳ vận hành hệ thống một cách tự động
    • Sử dụng 1 ngôn ngữ lập trình đơn giản như Bash, Python, Perl, ..
    • Ansible, Salt, Chef, Puppet 

7. Các kỹ năng để phát triển Database

Học các nguyên lý và công cụ để phát triển Database

  • Công cụ quản lý version database : liquibase, sqitch, …
  • Data import/export, bulk loading and processing
  • Queues: Skytools PGQ
  • Data partitioning và sharding.
  • Các kỹ thuật chuẩn hóa Database

 

8. Học các công nghệ nâng cao trong Postgres

Hiểu biết sâu sắc về:

  • Kiến trúc Process và Memory.
    • Vacuum processing
    • Buffer management
    • Lock management
    • Physical storage và file layout
    • System catalog
  • Fine-grained tuning: Per-user, per-database settings
  • Storage parameters
  • Tối ưu Database
  • Các chủ đề SQL nâng cao:
    • PL/pgSQL, procedures and functions, triggers
    • Aggregate và window functions
    • Recursive CTE

  

9. Học về xử lý sự cố trên PostgreSQL

Bạn cần tìm hiểu các công cụ để thu thập thông tin và khoanh vùng vấn đề khi có sự cố xảy ra

  • Công cụ của hệ điều hành
    • top (htop, atop)
      sysstat
      iotop
  • Postgres system views
    pg_stat_activity
    pg_stat_statements
  • Postgres tools: pgcenter
  • Query analyzing:
    • EXPLAIN
    • Depesz online EXPLAIN visualization tool
    • PEV online EXPLAIN visualization tool
    • Tensor online EXPLAIN visualization tool
  • Log analyzing: pgBadger
  • Ad-hoc analyzing using grep, awk, sed, …
  • External tracing/profiling tools: gdb, strace, perf-tools, ebpf, core dumps
  • Phương thức xử lý sự cố: USE, RED, Golden signals

 

10. Index và cách sử dụng index

  • B-tree, Hash, GiST, SP-GiST, GIN, BRIN
  • SQL queries patterns và anti-patterns
  • SQL schema design patterns và anti-patterns

 

11. Kỹ năng thiết kế tổng thể

Hiểu rõ về các use case dành cho PostgreSQL, biết được khi nào thì PostgreSQL là phù hợp

  • Postgres extensions: Greenplum, Timescaledb, Citus, Postgres-XL, etc.
  • Các ưu điểm và nhược điểm của RDBMS
  • Các khác biệt giữa Postgres và các RDBMS khác hay thậm chí các NoSQL database
  • Các kỹ thuật hacking trong PostgreSQL
  • Tham gia cộng đồng PostgreSQL, trở thành 1 thành viên năng nổ đóng góp và giúp đỡ người khác
  • Reviewing patches
  • Viết patches

 

Related posts

Perform Manual Failover & Switchover with repmgr in PostgreSQL

Configure automatic failover with repmgrd in PostgreSQL

Monitor Streaming Replication trong PostgreSQL