Exemple Slony-I

Dans cet exemple, un serveur maître est configuré avec deux esclaves directs. Cet exemple a été écrit et tester en utilisant Slony-I v1.2.11 et PostgreSQL 8.2.5, exécutés sur une même machine Windows XP. L'outil pgbench de PostgreSQL est utilisé pour générer le schéma de test et pour générer une certaine charge.

  1. Créez trois bases de données, maître, esclave1 et esclave2, et assurez-vous que PL/pgsql est activée dans chaque base.
     
  2. Créez un schéma pgbench dans la base maître :

    > pgbench -i -U postgres maitre
     
  3. Ajouter une clé primaire appelée history_pkey dans la table history sur les colonnes tid, bid et aid.
     
  4. Créez une sauvegarde de la structure seule de la base de données maître, puis chargez-la dans esclave1 et esclave2 :

    > pg_dump -s -U postgres maitre > schema.sql
    > psql -U postgres esclave1 < schema.sql
    > psql -U postgres esclave2 < schema.sql

     
  5. Créez les fichiers de configuration Slony pour chaque service slon (démon sous *nix). Les fichiers doivent contenir ces deux lignes :

    cluster_name='pgbench'
    conn_info='host=127.0.0.1 port=5432 user=postgres dbname=maitre'


    Créez un fichier pour chaque base de données, ajustez le paramètre dbname comme requis, et ajoutez toute autre option de connexion nécessaire.
     
  6. (Windows seulement) Installez le service Slony-I :

    > slon -regservice Slony-I
     
  7. Enregistrez chaque service (seulement nécessaire sous Windows - sur *nix les démons slon peuvent être démarrés individuellement avec un chemin vers le fichier de configuration sur la ligne de commande en utilisant l'option -f) :

    > slon -addengine Slony-I C:\slony\master.conf
    > slon -addengine Slony-I C:\slony\slave1.conf
    > slon -addengine Slony-I C:\slony\slave2.conf

     
  8. Dans pgAdmin sous le nœud Réplication de la base de données maître, créez un nouveau cluster Slony-I en ajoutant les options suivantes :

    Join existing cluster: Unchecked
    Cluster name:          pgbench
    Local node:            1        Master node
    Admin node:            99       Admin node
        
  9. Sous le nœud Réplication, créez un cluster Slony-I dans chacune des bases de données esclaves en utilisant les options suivantes :

    Join existing cluster: Checked
    Server:                <Select the server containing the master database>
    Database:              master
    Cluster name:          pgbench
    Local node:            10       Slave node 1
    Admin node:            99 - Admin node
    
    Join existing cluster: Checked
    Server:                <Select the server containing the master database>
    Database:              master
    Cluster name:          pgbench
    Local node:            20       Slave node 2
    Admin node:            99 - Admin node
        
  10. Créez les chemins du maître vers les deux esclaves, et de chaque esclave vers le maître. Créez les chemins sous chaque nœud du maître en utilisant les chaînes de connexion spécifiées dans les fichiers de configuration de slon. Notez qu'une restructuration future du cluster pourrait nécessiter la définition de chemins supplémentaires.
     
  11. Créez un ensemble de réplication sur le maître en utilisant les paramètres suivants :

    ID:                  1
    Comment:             pgbench set
        
  12. Ajouter les tables à l'ensemble de réplication en utilisant les paramètres suivants :

    Table:               public.accounts
    ID:                  1
    Index:               accounts_pkey
    
    Table:               public.branches
    ID:                  2
    Index:               branches_pkey
    
    Table:               public.history
    ID:                  3
    Index:               history_pkey
    
    Table:               public.tellers
    ID:                  4
    Index:               tellers_pkey
        
  13. Sur le nœud maître, créez un nouvel abonnement pour chaque esclave en utilisant les options suivantes :

    Origin:              1
    Provider:            1 - Master node
    Receiver:            10 - Slave node 1
    
    Origin:              1
    Provider:            1 - Master node
    Receiver:            20 - Slave node 2
        
  14. Lancez le service slon (ou les démons sous *nix) :

    > net start Slony-I
     

Une réplication initiale devrait commencer et peut être surveillée sur l'onglet Statistiques dans pgAdmin pour chaque nœud. L'outil pgbench peut être exécuté sur la base de données maître pour générer un test de charge.