20. Ne pas utiliser Slonik - les fonctions Slony-I de bas niveau

Il est parfois nécessaire d'utiliser directement les procédures stockées qui composent les différentes parties de Slony-I™. Slonik n'est pas « magique » ; il est courant qu'une commande Slonik se contente de décider le nœud qui va recevoir la commande et lui envoie une requête SQL qui contient une seule procédure stockée Slony-I™.

Les développeurs de Slony-I™ espèrent que quelqu'un développera des outils graphiques qui constitueront une alternative à Slonik ; il serait alors utile d'envoyer les ordres de configuration directement via les procédures stockées. Si vous comptez vous lancer dans ce projet, il est conseillé d'examiner comment les procédures stockées sont utilisées dans le fichier slonik.c puisqu'il s'agit de l'utilisation la plus correcte de ces fonctions.

Lorsque qu'on corrige des problèmes sur un cluster Slony-I™ « endommagé », il est parfois utile d'utiliser les procédures stockées. C'est particulièrement efficace lorsque la configuration de la table sl_listen est corrompue et que les événements ne se propagent plus correctement. La méthode la « plus simple » pour réparer cela est la suivante :

SELECT _slonycluster.droplisten(li_origin,li_provider,li_receiver) FROM _slonycluster.sl_listen;

SELECT _slonycluster.storelisten(pa_server, pa_server, pa_client) FROM _slonycluster.sl_path;

Le résultat de ces requêtes est la regénération et la propagation des voies d'écoute. En lançant à la main la fonction _slonycluster.storelisten(), on déclenche des évènements STORE_LISTEN qui provoquent l'envoi des voies d'écoute sur les autres nœuds du cluster.

En cas de problème local sur un nœud, si vous ne souhaitez pas propager les corrections (ce qui est assez rare, on cherche en général à réparer l'ensemble du cluster), la requête est la suivante :

SELECT slonycluster.droplisten_int(li_origin,li_provider,li_receiver) FROM _slonycluster.sl_listen;

SELECT _slonycluster.storelisten_int(pa_server, pa_server, pa_client) FROM_slonycluster.sl_path;

Si vous souhaitez ajouter le support de Slony-I™ dans d'autres outils (par exemple : ajouter la réplication dans pgAdmin III), vous devez savoir clairement quelles fonctions il faut appeler. Le « protocole » normal est le suivant :