Slonik est un utilitaire en ligne de commande conçu spécifiquement pour mettre en place et modifier la configuration du système de réplication Slony-I™.
L'utilitaire en ligne de commande slonik est supposé être intégré dans des scripts shell et lit les commandes à partir d'un fichier ou de stdin (voir plus bas pour des exemples). Presque tout le travail de configuration réel est effectué en appelant des procédures stockées après avoir chargé la base de support Slony-I™ dans la base de données. Vous pouvez trouver de la documentation sur ces procédures dans le chapitre Documentation du schéma de Slony-I™, ainsi que dans les commentaires qui sont associés aux procédures dans la base de données.
Slonik a été créé car :
Les procédures stockées ont des besoins d'informations spécifiques telles que l'identifiant du nœud de réplication sur lequel elles sont appelées ;
L'absence de paramètres nommés dans les procédures stockées rend difficile de faire cela depuis l'invite de commande psql ;
psql n'a pas la possibilité de maintenir plusieurs connexions avec des transactions ouvertes.
Le format du langage de commande slonik est libre. Les commandes commencent par des mots-clefs et sont terminées par un point-virgule. La plupart des commandes ont une liste de paramètres, certains ont une valeur par défaut et sont donc facultatifs. Les paramètres de commandes sont entourés par des parenthèses. Chaque option est constituée d'un ou plusieurs mots-clefs, suivis d'un symbole égal, suivi d'une valeur. Les options multiples à l'intérieur de parenthèses sont séparées par des virgules. Tous les mot-clefs sont sensibles à la casse. Le langage devrait rappeler le SQL.
Les valeurs d'option peuvent être :
des entiers ;
des chaînes de caractères entourés de guillemets ;
des valeurs booléennes {TRUE|ON|YES} ou {FALSE|OFF|NO} ;
des mots-clefs dans des cas spécifiques.
Les commentaires commencent par un dièse (#) et vont jusqu'à la fin de la ligne.
Les commandes peuvent être combinées par groupes de commandes avec une éventuellement une condition on error et on success. La syntaxe est la suivante :
try {
commands;
}
[on error { commands; }
[on success { commands; }
Ces commandes sont regroupées ensemble au sein d'une transaction pour chaque nœud participant.
Notez que ceci ne force par le groupement des actions sur une seule transaction pour tous les nœuds. Par exemple, jetez un œil au code slonik suivant :
try {
execute script (set id = 1, filename = '/tmp/script1.sql', event node=1);
execute script (set id = 1, filename = '/tmp/script2.sql', event node=1);
}
Ceci pourrait être taitré dans une transaction simple sur le nœud 1. Néanmoins, les requêtes sont séparées en deux événements DDL_SCRIPT de façon à ce que chacune d'elle soit exécutée individuellement, dans des transactions séparées, sur les autres nœuds du cluster.