Slony-I est un système de réplication entre un maître et plusieurs esclaves qui supporte les architectures en cascade (un nœud peut être maitre d'un noeud qui est lui-même maitre d'un autre noœud) et les bascules sur panne (failover).

Le principe de base qui guide les développements de Slony-I est de réaliser un système de réplication avec toutes les fonctionnalités et les capacités nécessaires pour dupliquer de grandes bases de données vers un nombre raisonablement limité de serveurs esclaves.

Slony-I est conçu pour les centre d'hébergement (data centers) et les sites de sauvegarde. Son mode d'opération normal prévoit que tous les nœuds soient disponibles.

Un guide d'administration assez complet, basé sur le contenu du dépôt GIT, est disponible ici. Il existe également une copie locale.

Les spécifications initiales sont disponible ici (en anglais).

Le code source de Slony-I a été migré vers Git.

Il existe différents moyens pour récupérer le dépôts, ces moyens dépendant du protocole utilisé. En voici la liste :

  • git://git.postgresql.org/git/slony1-engine.git
  • http://git.postgresql.org/git/slony1-engine.git
  • ssh://git@git.postgresql.org/slony1-engine.git

Actuellement, nous n'avons pas de moyens d'envoyer des mails quand des modifications sont validées (comme c'était le cas avec CVS). Néanmoins, il existe un flux RSS automatiquement généré.

.

Cette version de la branche 2.0 inclut des correctifs aux problèmes identifiés sur la version 2.0.3. Les utilisateurs de la version 2.0.3 sont encouragés à mettre à jour.

Merci d'utiliser Slony-I 2.0.4.

Consultez la section "Infos" pour plus de détails. Cette version corrige de nombreux problèmes avec les versions 2.0 antérieures

Slony-1 2.0.4 engine documentation
Slony-1 1.2.21 engine documentation
Slony-1 1.1.9 engine
Chris Browne 2008-09-12

La gestion d'une instance Bugzilla n'est pas simple ; la politique proposée de gestion des bugs a été enregistré dans ce document.

Chris Browne 2010-08-13

La migration vers Git est terminée.

Un dépôt a été configuré sur git.postgresql.org. Il dispose du code auparavant disponible sur le dépôt CVS slony1-engine.

Chris Browne 2010-07-15
La migration vers Git a commencé.

Un dépôt a été configuré sur git.postgresql.org. Il est actuellement vide. Nous espérons faire la migration le 15 juillet 2010 avec les données actuellement disponibles dans le dépôt CVS.

Chris Browne 2010-07-14
La nouvelle version 2.0.4 de la branche 2.0 est enfin disponible.
  • Correction d'une erreur de syntaxe dans un script, bug #108
  • Correction d'une corruption mémoire avec des grandes lignes (introduit dans 2.0.3)
  • Correction de fuites mémoires
  • Différentes mises à jour de la documentation
  • Support pour les nouvelles versions de flex
  • Correction aux procédures stockées appelées par CLONE NODE FINISH (bug #119)
Steve Singer 2010-06-24
La dernière version mineure de la branch 1.2 de Slony1 (1.2.21) est sortie.
  • Bug #108 - suppression de bas de page Emacs pour les scripts de tests
  • Bug #110 - quelques problèmes de guillemets dans les scripts Perl
  • Libération de certains objets pour éliminer des pertes mémoire
  • Bug #55 - ne peut pas utiliser va_args plusieurs fois times + cas de test pour les grosses lignes
  • correction de SPI_getbinval() pour le support de PostgreSQL 9.0
  • Ajout d'un tampon pour le pid
  • Modification des variables de type « long long » en type « int64 » pour rendre le tout cohérent avec la façon dont PostgreSQL exprime les identifiants de transactions (XID).
  • De façon similaire, les « %lld » de printf ont été changés en INT64_FORMAT
  • slony1_extract_schema.sh vérifie le numéro de version de PostgreSQL
  • Ajout du script tools/slony1_extract_for_upgrade.sh
Steve Singer 2010-04-09
Slony-I 2.0.3 est maintenant disponible. Il contient les modifications suivantes
  • Bug #103 - When adding snapshot entries, they should be "1:1:", not "0:0:"
  • autoconf/C funcs change to cope with 8.5 change that ScanKeywordLookup has 3 arguments rather than 1 (in previous versions)
  • Remove Emacs fodder from tools (bug #108)
  • Quoting problems in Perl script (bug #110)
  • Add notes about flex/bison conflict (bug #109)
  • Memory leak changes per Ulrich Weber
  • Logic error (if versus "else if") noticed by Richard Yen
  • Bug #106 - misleading error message when setting up session configuration
  • Improve test harness to report conninfo in case where connection fails
  • Bug #55 - va_args cannot be used multiple times
  • Bug # 113 - DROP cloneNodePrepare since the return type changes. Patch from Atte Peltomäki
  • Improve configure complaint if it can't find PQunescapeBytea - this likely implies that configure couldn't find libpq.
  • Copyright date changes
  • Added discussion of synchronous commit to documentation
  • Removed some discussion of behaviours relating to ancient versions of PostgreSQL that are no longer supported (David Fetter)
  • SPI_getbinval() was being passed a NULL, which PostgreSQL 8.5 no longer accepts. Add isnull variable in the relevant code block so there's a place to stow the bool result.

    Reason for this noted by Alvaro Herrera - thanks!

  • Change "long long" to "int64" to make things consistent with how PostgreSQL expresses XIDs.
  • Similarly "%lld" in printf changed to INT64_FORMAT
  • Fixing up detection by Slonik of PostgreSQL 8.4 (patch per Peter Eisentraut) - bug #116
  • Updates to copyright dates on files
  • Bug #98 - need WAIT ON parameter in slonik code generated by slonik_move_set altperl script.
  • Change default $LOGDIR, so that distros won't need to patch it.
  • Fix LOG_NAME_SUFFIX feature. Thanks to David Fetter and Andrew Dunstan.
  • Improve documentation on EVENT NODE for STORE NODE command
  • SLONLOG directory changes for Red Hat-related distributions
  • Bug #97 - insert into sl_setsync upon FAILOVER had values() clause based on the pre-2.0 schema; fix to use 2.0.
  • UPGRADE FUNCTIONS failing because functions had their return types changed. Added in "DROP FUNCTION IF EXISTS" (fine in 8.3+) in src/backend/slony1_funcs.sql to rectify this.
  • As observed by Bernd Helmle, cloneNodePrepare returns an event ID, and hence should return BIGINT
  • Introduced ShouldSlonyVacuumTable() function for 8.3 so we cope with differences in vacuum handling between 8.3 and 8.4+
  • Fix 8.4-ism relating to subscription retries see commit notes
  • Doc fixes
  • Fixes to integer castings - don't assume this is automagically handled
  • Changed return types of functions returning event numbers bigint
  • Fixes to altperl samples and such
  • PostgreSQL 8.4 has been released; slonik needs to explicitly recognize it
  • Add in slonikconfdump.sh tool, which generates a slonik script to duplicate the configuration of a Slony-I cluster
  • Significant fixes to documentation to reflect 2.0 changes
  • Add "OMIT COPY" option to the Slonik "SUBSCRIBE SET" command
  • Document process for Slony-I 2.0 upgrade using OMIT COPY option
  • Fix to race condition where file descriptor copies were being made at the wrong time in the scheduler
  • Modify "testseqnames" regression test to create a whole bunch of sequences to validate that things don't break down with either lots of them, or where IDs are large numbers
  • Change minimum debugging level to -1 to allow suppressing logging
  • Bug #92 - compression of event numbers had a bug where events > 2^31-1 would overflow the "int" value
  • Autovacuum handling changes in PostgreSQL 8.4 - we pull metadata from pg_class.reloptions, instead of pg_autovacuum
  • logswitch fix resolving a potential data loss + statement blocking bug... Before attempting to TRUNCATE the sl_log_* tables, we need to successfully request an exclusive lock. By doing so in an exception block with NOWAIT option, this can "lose" gracefully.
  • Add LOG_NAME_SUFFIX to altperl tools
Chris Browne 2010-04-09

La version 1.2.20 modifie les éléments suivants:

  • Correction d'un problème dans les traces où vsnprintf peut, avec des sorties très longues, casser l'octet après une sortie utilisant malloc
  • Modification de « long long » en « int64 »
Oui, c'est une succession rapide de versions :-(
Chris Browne 2009-12-09

La version 1.2.19 dispose des corrections suivantes :

  • Correction des problèmes de drop_if_exists()
  • Add tests to duct tape tests that bump event numbers to test 2^31 "rollover" issue, and to run UPDATE FUNCTIONS
Chris Browne 2009-12-09

La version 1.2.18 apporte les changements suivant :

  • Modification du script autoconf + changement dans src/backend/slony1_funcs.c pour s'adapter au changment du nombre d'arguments de ScanKeywordLookup dans PostgreSQL 8.5
  • Le rechargement de fonctions doit avoir une émulation de "DROP FUNCTION IF EXISTS" car deux fonctions ont changé de code de retour, ce qui ne marche plus correctement dans CREATE OR REPLACE FUNCTION.
  • Modifications de la notice de copyright pour indiquer l'année 2009
  • correction de code spécifique à la version 8.4 de PostgreSQL dans le processus SUBSCRIBE SET - voir les changement dans le CVS
Chris Browne 2009-12-01
Version slony1-2.0.3-rc3.tar.bz2 vient de sortir.

Cette version corrige plusieurs choses depuis la version RC précendente :

  • Mise à jour des dates de copyright
  • Bug #98 - Besoin d'un paramètre WAIT ON dans le code slonik produit par le script altperl : slonik_move_set.
  • Changement du $LOGDIR par défaut, afin que les distributions n'aient pas à la modifier.
  • Correction de la fonctionnalité LOG_NAME_SUFFIX, grace à David Fetter et Andrew Dunstan.
  • Amélioration de la documentation d'EVENT NODE pour la commande STORE NODE.
  • Modification du repértoire SLONLOG pour la distribution Red Hat et ses dérivées.
  • Bug #97 - insert into sl_setsync pendant une bascule sur panne ("FAILOVER") utilisait la clause values() en se basant sur le schéma avant-2.0; corrigé pour utilisé le schéma 2.0.
  • Echec des fonctions d'UPGRADE car leur code retour a changé. Ajout de "DROP FUNCTION IF EXISTS" (à partir de 8.3+) dans src/backend/slony1_funcs.sql poru corriger cela
  • Comme le remarque Bernd Helmle, cloneNodePrepare retourne un identifiant d'événement, et devrait donc retourner un BIGINT
  • Introduction de la fonction ShouldSlonyVacuumTable() pour la version 8.3 afin de gérer les différences de traitement des vacuums entre la version 8.3 et la 8.4+
  • Correction de code spécifique à la version 8.4 en rapport avec les re-tentatives de souscription voir les notes de commit
Chris Browne 2009-11-20