-- +goose Up -- +goose StatementBegin -- pg_role: Rolle dieser Node in der PG-Replikation. -- "standalone" = kein Streaming-Replication-Setup -- "primary" = WAL-Sender, repliziert an Standby(s) -- "standby" = Hot-Standby, liest WAL vom Primary ALTER TABLE ha_nodes ADD COLUMN IF NOT EXISTS pg_role TEXT NOT NULL DEFAULT 'standalone'; -- cluster_settings: VIP + VRRP-Konfiguration (Singleton, id=1). -- vip_address = die virtuelle IP-Adresse (z.B. "89.163.205.10") -- vip_interface = Netzwerk-Interface (z.B. "eth0") -- vip_auth_pass = VRRP-Authentication-Passwort (max. 8 Zeichen, Keepalived-Limit) -- vrrp_router_id = VRRP Virtual Router ID (1–255, muss im Subnetz eindeutig sein) CREATE TABLE IF NOT EXISTS cluster_settings ( id INTEGER PRIMARY KEY DEFAULT 1, vip_address TEXT, vip_interface TEXT, vip_auth_pass TEXT, vrrp_router_id INTEGER NOT NULL DEFAULT 51, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), CONSTRAINT cluster_settings_singleton CHECK (id = 1) ); INSERT INTO cluster_settings (id) VALUES (1) ON CONFLICT DO NOTHING; -- +goose StatementEnd -- +goose Down -- +goose StatementBegin DROP TABLE IF EXISTS cluster_settings; ALTER TABLE ha_nodes DROP COLUMN IF EXISTS pg_role; -- +goose StatementEnd