Chuyển tới nội dung

Một số lệnh patroni và etcd cơ bản

🟦 1. Tóm tắt High Available PostgreSQL với Patroni

Patroni là một giải pháp HA (High Availability) cho PostgreSQL, dùng để tự động hóa:

  • Failover (chuyển đổi leader khi node chính chết)
  • Replication (đồng bộ dữ liệu giữa leader và replica)
  • Cluster membership (quản lý node trong cụm)
  • Health check + watchdog
  • Tự healing cluster

Patroni không tự lưu metadata mà dùng một distributed consensus store, thường là:

  • etcd (phổ biến nhất)
  • Consul
  • ZooKeeper

📌 Thành phần chính của Patroni Cluster:

  • Patroni nodes (master + replicas)
  • etcd cluster (store khóa/giá trị cho leader lock)
  • VIP / HAProxy / PgBouncer (tùy chọn)

📌 Luồng hoạt động:

  1. Patroni dùng etcd để ghi/đọc trạng thái leader.
  2. Node nào giữ được leader key trong etcd sẽ trở thành Primary.
  3. Các node còn lại sẽ follow replication.
  4. Khi leader chết → Patroni chạy consensus → chọn node khác làm leader.

🟧 2. Một số lệnh Patroni cơ bản

Xem trạng thái cluster

patronictl -c /etc/patroni/config.yml list

Xem trạng thái node

patronictl -c /etc/patroni/config.yml member
patronictl -c /etc/patroni/config.yml show-config

Failover thủ công

patronictl -c /etc/patroni/config.yml failover

Switchover (có kế hoạch)

patronictl -c /etc/patroni/config.yml switchover

Restart Patroni

systemctl restart patroni

Khởi động lại PostgreSQL qua Patroni

patronictl restart <cluster_name> <node_name>

Remove a member khỏi cluster

patronictl remove <cluster_name> <node_name>

Pause cluster (tắt tự động failover)

patronictl pause

Unpause

patronictl resume

Check health

patronictl -c /etc/patroni/config.yml health

🟩 3. Một số lệnh etcd cơ bản

Kiểm tra cluster health

etcdctl cluster-health # v2
etcdctl endpoint health # v3

Xem tất cả khóa trong etcd

etcdctl ls /service/ --recursive     # v2
etcdctl get /service/<key>           # v2

etcdctl get / --prefix               # v3

Ghi khóa

etcdctl set /service/test value      # v2
etcdctl put /service/test "value"    # v3

Xóa khóa

etcdctl rm /service/test             # v2
etcdctl del /service/test            # v3

Xem khóa Patroni lưu

etcdctl ls /service/pgcluster

Xem leader

etcdctl get /service/pgcluster/leader

Check etcd service logs

journalctl -u etcd.service -f

Check members

etcdctl member list -w table

Lưu cặp key-value vào etcd cluster

etcdctl put greeting "Hello World!"

Kiểm tra key-value từ etcd node

etcdctl get greeting

🟦 4. Tóm tắt siêu ngắn

Patroni = Tự động failover cho Postgres

etcd = lưu khóa leader

patronictl = thao tác cluster

Lệnh quan trọng nhất:

Mục đích

Lệnh

Kiểm tra cluster

patronictl list

Failover

patronictl failover

Switchover

patronictl switchover

Restart node

patronictl restart

Pause auto-failover

patronictl pause

Xem leader trong etcd

etcdctl get /service//leader

Liên hệ