Vai al contenuto

Commutazione del nodo LEADER

In alcuni casi di manutenzione può essere utile commutare il nodo LEADER del cluster PostgreSQL per poter eseguire operazioni su di esso.

Prima di poter cambiare il nodo LEADER, identificare l'attuale nodo LEADER del cluster PostgreSQL e connettersi a esso come root.
Una volta connessi come root al nodo LEADER, eseguire un comando simile al seguente per provocare la commutazione immediata:

1
patronictl -c /etc/patroni/config.yml failover --candidate PSQL_NODE --force

Sostituire PSQL_NODE con il nome del nodo che diventerà LEADER.

Errore

Se il comando non riesce, è possibile che le impostazioni seguenti non siano state applicate: impostazioni per patronictl.

Esempio

Per il cluster PostgreSQL seguente:

1
2
3
4
5
6
7
+ Cluster: 15-cleanroomvault5 ------+---------+---------+----+-----------+
| Member           | Host           | Role    | State   | TL | Lag in MB |
+------------------+----------------+---------+---------+----+-----------+
| PSQL_3           | psql_3         | Leader  | running | 2  |           |
| + PSQL_1         | psql_1         | Replica | running | 2  | 0         |
| + PSQL_2         | psql_2         | Replica | running | 2  | 0         |
+------------------+----------------+---------+---------+----+-----------+

L'obiettivo è far diventare il nodo PSQL_1 il LEADER.
È quindi necessario innanzitutto connettersi come root al nodo PSQL_3, che è l'attuale LEADER.
Una volta connessi, l'esecuzione del comando seguente permette la commutazione immediata del LEADER verso il nodo PSQL_1:

1
patronictl -c /etc/patroni/config.yml failover --candidate PSQL_1 --force

La modifica della topologia è quindi visibile e verificabile:

1
2
3
4
5
6
7
+ Cluster: 15-cleanroomvault5 ------+---------+---------+----+-----------+
| Member           | Host           | Role    | State   | TL | Lag in MB |
+------------------+----------------+---------+---------+----+-----------+
| PSQL_1           | psql_1         | Leader  | running | 3  |           |
| + PSQL_3         | psql_3         | Replica | running | 3  | 0         |
| + PSQL_2         | psql_2         | Replica | running | 3  | 0         |
+------------------+----------------+---------+---------+----+-----------+