Lettre d'information de Dalibo

L'actualité de PostgreSQL et de ses projets satellites. Août 2011.

Événements

pitrery

pitrery est un ensemble de script Bash permettant de créer des sauvegardes de type PITR (Point-In-Time Recovery ou recupération à un point dans le temps). Ce type de sauvegarde, basé sur l'archivage en continu des journaux de transactions associé à des instantanés des fichiers de l'instance, est très puissant mais complexe à mettre en oeuvre et à maintenir. Le but de pitrery est de fournir les outils nécessaires pour :

  • Archiver et compresser les journaux de transactions vers une ou plusieurs destinations ;
  • Réaliser des « sauvegardes de base », comprenant le répertoire de données et les tablespaces ;
  • Retrouver une sauvegarde et préparer les données pour restaurer une instance jusqu'à une date précise ;
  • Afficher les informations des sauvegardes présentes ;
  • Purger les anciennes sauvegardes et les journaux de transactions archivés selon une politique de rétention au nombre de jours ou au nombre de sauvegardes à conserver.

L'outil d'archivage a été conçu pour intégrer une sauvegarde PITR dans un environnement en cluster sans perturber la réplication.

Chaque outil est autonome et accessible par l'intermédiaire d'une commande qui peut prendre en option un fichier de configuration contenant tous les paramètres nécessaires. Ainsi, un serveur PostgreSQL peut être restauré à une date précise en une seule et simple commande.

Le code source de pitrery, publié sous licence BSD, est disponible sur GitHub à cette adresse : https://github.com/dalibo/pitrery

Actualité des produits dérivés

Avancées sur PostgreSQL

Le développement de la 9.2 a commencé depuis un moment. La première commitfest a même eu lieu entre juin et juillet. Dans les nouveautés, on peut noter :

  • le support de la réplication en cascade pour la réplication interne de PostgreSQL
  • le support des labels de sécurité sur les objets partagés (bases de données, tablespaces, rôles)
  • la gestion d'options par colonne dans un wrapper de données distantes
  • l'ajout du paramètre temp_file_limit pour contraindre l'utilisation de l'espace disque pour les fichiers temporaires
  • la suppression du paramètre silent_mode (qu'on peut facilement émuler avec la commande “pg_ctl -l postmaster.log”)
  • l'ajout de la commande “GET STACKED DIAGNOSTICS” à PL/pgsql pour récupérer des informations plus étendues sur les exceptions levées
  • l'ajout des options –unlogged-tables, –tablespace et –index-tablespace à pgbench.

Le travail sur la 9.1 n'est pour autant pas terminé. La beta 3 est sortie courant juillet. Une beta 4 devrait sortir en août. Une version RC, puis la version finale sont prévues pour début septembre. On peut s'attendre, une fois cette version sortie, que le développement de la 9.2 va s'accélérer.

Avancées sur pgAdmin

Le débuggage de la 1.14 beta continue. Cela a d'ailleurs donné lieu à la sortie de la beta 3.

Fait intéressant ce mois-ci, différents contributeurs ont proposé des patchs pour de nouvelles fonctionnalités.

Thom Brown a été le plus actif. Il a ajouté la possibilité de lancer un CLUSTER à partir de la fenêtre de maintenance d'une base. Il a revu la gestion de la modification des attributs d'un type composite : au lieu de supprimer tous les anciens éléments du type et de rajouter tous les éléments de la nouvelle définition, son patch permet de n'ajouter que les nouveaux éléments, de modifier que les éléments réellement modifiés et de supprimer les éléments supprimés. Mais son plus gros patch concerne la possibilité de modifier, via l'interface, le schéma d'un objet. Guillaume Lelarge avait déjà essayé d'écrire ce patch mais il s'était heurté à un problème de rafraichissement du navigateur. Thom et Guillaume ont travaillé de concert pour terminer ce patch. Guillaume en parle rapidement sur ce billet http://blog.guillaume.lelarge.info/index.php/post/2011/07/18/Allow-change-of-a-schema-using-pgAdmin-s-GUI

Plusieurs utilisateurs avaient demandé la possibilité de pouvoir chercher un objet d'après son nom. Personne n'avait encore travaillé là-dessus jusqu'à l'arrivée de Jasmin Dizdarevic. Ce dernier a proposé un patch en ce sens. Après quelques relectures du patch, Guillaume l'a validé. Là-aussi, vous pouvez en savoir plus sur http://blog.guillaume.lelarge.info/index.php/post/2011/07/06/Search-Object-tool-in-pgAdmin

Lors de char(11), Dave Page a travaillé sur la possibilité d'afficher les messages d'information ou d'avertissement envoyés par le serveur. Une option a été ajouté pour activer ou désactiver ce nouveau comportement.

Quant à Guillaume, il a travaillé principalement sur un meilleur support des dernières versions de PostgreSQL. Les labels de sécurité sont enfin configurables via l'interface de pgAdmin, que ce soit pour les objets locaux (fonctionnalité qui sera disponible avec la version 9.1) ou pour les objets partagés (fonctionnalité qui, elle, sera disponible avec la version 9.2). Il a aussi ajouté le support des domaines et des contraintes de vérification non validés à leur création. Enfin, il a intégré un nouveau système de documentation, basé sur l'outil Sphinx.

Et pour finir, Luis Ochoa, l'étudiant du GSoC 2011 pour pgAdmin, a ajouté le support du chargement et de la sauvegarde des modèles dans le concepteur graphique de bases de données.

Le travail continue sur pgAdmin en août. Guillaume travaille avec Luis pour ajouter une gestion multi-modèle dans le concepteur graphique de bases de données. Il travaille aussi avec Vladimir Kokovic pour ajouter la possibilité de copier et coller des tables. Enfin, il essaie d'améliorer les vieux problèmes du navigateur (comme le crash garanti si un utilisateur essaie de modifier un object dans sa fenêtre de propriété après avoir rafraichi le navigateur). Quant à Dave, il a prévu de travailler sur la documentation.

Avancées sur phpPgAdmin

Ce mois-ci, l'essentiel du travail réalisé sur phpPgAdmin s'est concentré sur le projet de Leonardo Sápiras dans le cadre du Google Summer of Code.

L'architecture de plugins est désormais complète et peut être considérée dans sa version beta. Sept revues de codes complètes ont été effectuées au cours des deux derniers mois. Cependant, bien que l'ensemble du code ait été relu, ce status de beta se justifie par le besoin de prendre aujourd'hui du recul, de tester cette architecture et d'y apporter les corrections nécessaires après un essai réel. À ce titre, Léonardo travaille désormais sur la ré-écriture de la gestion des rapports dans phpPgAdmin en tant que plugin.

En parallèle à ce travail, une première version de la documentation à destination des développeurs de plugin a été écrite et attends aujourd'hui une relecture. Elle devrait être prochainement accessible sur le wiki du projet.

Avancées sur Ora2Pg

La version 8.6 est disponible au téléchargement, elle ajoute deux nouvelles directives de configuration :

  • COMPILE_SCHEMA qui permet de provoquer la recompilation du code PL/SQL pour forcer Oracle à revalider le code avant l'export. Si cette directive est activée, c'est le code du schéma de la session utilisateur qui est revalidé, sinon la valeur de cette directive peut être le nom du schéma à recompiler.
  • EXPORT_INVALID qui permet justement d'exporter malgré tout le code invalide.

Le comportement par défaut d'Ora2Pg est de n'exporter que le code valide.

Ces deux paramètres s'appliquent aux exports de fonctions, procédures, paquets de procédures et types utilisateur.

Les objets contenant le caractère $ sont maintenant systématiquement exclus de tout export. Dans les versions précédentes, ils n'étaient pas pris en compte car ils étaient considérés comme directement apparentés à des utilisateurs système. Certains cas d'extraction ont démontré que des applications annexes utilisent aussi ce caractère, ces objets sont donc omis dans tous les types d'extraction.

Au niveau de la conversion automatique de code PL/SQL en PL/PGSQL, cette nouvelle version inclut la réécriture de SYS_REFURSOR en REFCURSOR et la substitution automatique des codes d'erreur Oracle vers PostgreSQL suivants :

  • INVALID_CURSORINVALID_CURSOR_STATE,
  • ZERO_DIVIDEDIVISION_BY_ZERO,
  • STORAGE_ERROROUT_OF_MEMORY.

À noter aussi que la substitution des appels à DBMS_OUTPUT dans le code Oracle par RAISE NOTICE a été complètement revue pour corriger des problèmes lors de la réécritures des concaténations de messages.

Avancées sur les produits satellites

Le développement de Bucardo 5 continue tranquillement avec quelques corrections de bug.

Le mois de juillet a vu la sortie de la version 2.0.7 de Slony. À noter une meilleure résistance au perte de connexions sur cette version. Le développement a continué sur la prochaine version majeure avec en plus la sortie de la beta 3 de la version 2.1.

Toujours pas de pgpool 3.1 en vue mais les corrections de bug continuent, ainsi que les ajouts de fonctionnalités :

  • Jehan-Guillaume de Rorthais a fait en sortie que les informations de tous les processus pgpool soient affichées par pcp_process_info et par la commande “show pool_pools”
  • Nicolas Thauvin a ajouté le paramètre health_check_password permettant de spécifier un mot de passe pour la connexion de l'utilisateur responsable de la vérification de l'état du serveur. De plus, il a amélioré le message d'erreur de la fonction check_replication_time_lag().
  • Tatsuo a modifié les sources de manière à pouvoir compiler pgpool avec PostgreSQL 9.1.
  • Il a aussi ajouté les paramètres sr_check_period, sr_check_user et sr_check_password.

Ils sont utilisés lors de la vérification du délai de réplication et lors de la détermination du serveur primaire..

Sessions de formation

Dalibo organise régulièrement des sessions de formation à Paris et en province. Les prochaines sessions inter-entreprises auront lieu aux dates suivantes :


→ 14-15 septembre : formation Migration Oracle vers PostgreSQL
→ 19-21 septembre : formation Administration PostgreSQL
→ 26-29 septembre : formation PostgreSQL Avancé
→ 5-6 octobre : formation Haute Disponibilité
→ 19-21 octobre : formation Administration PostgreSQL

N'hésitez pas à nous contacter pour tout besoin de formation en intra-entreprise.

Dernières versions

Depuis le 18 avril 2011 :

  • 9.0.4
  • 8.4.8
  • 8.3.15
  • 8.2.21

Versions obsolètes :

  • 8.1.22
  • 8.0.26
  • 7.4.30

Informations générales

Cette lettre d'information présente l'actualité francophone et internationale de PostgreSQL et de ses logiciels satellites. Elle vous est proposée par la société Dalibo.

Dalibo est une société d'expertise sur PostgreSQL et tous ses projets satellites.

Dalibo peut vous accompagner dans la mise en œuvre efficace et professionnelle de PostgreSQL. Qu'il s'agisse d'un nouveau projet ou de la migration d'un existant, notre équipe d'experts se tient à votre disposition.

Si vous ne souhaitez plus recevoir cette lettre, envoyez simplement un courriel à l'adresse : newsletter-desabonnement@listes.dalibo.com

Vous pouvez retrouver cette lettre à l'adresse suivante :

http://dalibo.org/aout_2011

Afficher le texte source