Sziasztok,
Először a körítés, miért az a kérdés, ami, hátha erre is van valakinek ötlete: SLES-15-ön adott az a feladat, hogy két PostgreSQL-t kell replikálni, aktív-inaktív módon, plusz egy VIP (virtual IP). Fontos, hogy failover esetén nem állhat át kézzel a VIP a secondary node-ra, kézzel át lehet tenni, ennyi idő van.
Ha WAL replikációt használunk, akkor az nem jó, mert a slave node failover esetén readonly állapotban van, és ha vissza kell állni, akkor az nyűg.
A WAL logical replikációnak elég sok korlátja van, ezért azt ki sem próbáltuk.
Mivel ez nem volt jó megoldás, én végül azt javasoltam, hogy legyen DRBD, és egy script, ami megcsinálja az egyes lépéseket (így jutottunk el ide):
- felhúzza a VIP-et
- átrakja a DRBD kötetet primary-ra
- felcsatolja a kötetet
- elindítja a PG-t
Leállításnál visszafelé ua. Erre kész a két script, működik is, eddig minden ok.
(Ennek a felállásnak az egyik peremfeltétele, hogy a PostgreSQL service le legyen tiltva, hiszen nem indulhat el csak úgy - de semmi gond, letiltottam a PG-t.)
Az a kérés született, hogy induláskor a dedikált primary node-on mindez induljon el - mármint a shell scriptet hívja meg. Összeraktam egy systemd service fájlt, de valami nem ok vele - itt a journalctl kimenete:
aug 09 17:16:21 sles15-1 systemd[1]: Starting PostgreSQL database server...
aug 09 17:16:21 sles15-1 systemd[1]: Started PostgreSQL database server.
aug 09 17:16:21 sles15-1 systemd[1]: Stopping PostgreSQL database server...
aug 09 17:16:21 sles15-1 systemd[1]: Stopped PostgreSQL database server.
aug 09 17:16:21 sles15-1 kernel: XFS (drbd0): Unmounting Filesystem
aug 09 17:16:22 sles15-1 kernel: drbd r0: role( Primary -> Secondary )
Tehát elindul a PG, majd megáll a PG. De nem csak a PG áll meg, hanem lecsatolja a DRBD-t, és átrakja secondary állapotba.
Ha kézzel indítom a systemd service-t, akkor is ue az eredmény.
Ha shell scripttel indítom el a szolgáltatási láncot, akkor minden ok.
Ha systemd-n keresztül indítom, akkor a PG ezt logolja:
2021-08-09 17:16:21.365 CEST [1829]LOG: database system was shut down at 2021-08-09 17:15:47 CEST
2021-08-09 17:16:21.384 CEST [1827]LOG: database system is ready to accept connections
2021-08-09 17:16:21.499 CEST [1827]LOG: received fast shutdown request
2021-08-09 17:16:21.523 CEST [1827]LOG: aborting any active transactions
2021-08-09 17:16:21.525 CEST [1827]LOG: worker process: logical replication launcher (PID 1835) exited with exit code 1
2021-08-09 17:16:21.525 CEST [1830]LOG: shutting down
2021-08-09 17:16:21.737 CEST [1827]LOG: database system is shut down
ha a shell scripttel:
2021-08-09 17:22:52.432 CEST [1977]LOG: database system was shut down at 2021-08-09 17:22:13 CEST
2021-08-09 17:22:52.459 CEST [1975]LOG: database system is ready to accept connections
Mit nézek el?