Nachdem ich zufällig in das github Repo von Citusdata geraten war, weil ich in das github Repo von Jasper Siepkes gestolpert war, war mir pg_auto_failover aufgefallen.
Natürlich hatte mich das interessiert, weil ich mich ja schon mit verschiedenen Optionen beschäftigt hatte, Patroni auszurollen.
Mit der steigenden Popularität von PostgreSQL hat offensichtlich auch die Anzahl der HA-Lösungen zugenommen.
Jasper Siepkes hat pg_auto_failover netterweise schon nach illumos portiert. Deshalb konnte ich das Beispiel Setup aus dem Readme schnell in einer SmartOS Instanz ausprobieren.
Offenbar startet man zuerst den "Monitor":
$ export PGDATA=./monitor
$ export PGPORT=5000
$ pg_autoctl create monitor --ssl-self-signed --hostname localhost --auth trust --run
Im Gegensatz zum Beispiel findet man den URI connection string so heraus:
$ pg_autoctl show uri --pgdata=./monitor
Type | Name | Connection String
-------------+---------+-------------------------------
monitor | monitor | postgres://autoctl_node@localhost:5000/pg_auto_failover?sslmode=require
formation | default | postgres://localhost:5001,localhost:5002/postgres?target_session_attrs=read-write&sslmode=require
Ansonsten funktioniert das Beispiel wie beschrieben und es kann das oben abgebildete Szenario ausprobiert werden:
$ pg_autoctl show state --pgdata=./monitor
Name | Node | Host:Port | LSN | Connection | Current State | Assigned State
-------+-------+----------------+-----------+--------------+---------------------+--------------------
node_1 | 1 | localhost:5001 | 0/3000438 | read-only | secondary | secondary
node_2 | 2 | localhost:5002 | 0/3000438 | read-write | primary | primary
Jetzt muß man sich noch die Failoverszenarien ansehen, um zu verstehen, in welchen Setups sich die Lösung verwenden läßt.