pg_auto_failover von Citus

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.