Rubrique précédente: Appliance de base de données OracleRubrique suivante: Appliances diverses


PGSQL64 - Appliance de base de données PostgreSQL

PGSQL, PGSQL64 : Appliance de base de données PostgreSQL

Aperçu rapide

Catalogue

Système

Catégorie

Appliances de base de données

Volumes d'utilisateur

Oui

Min. mémoire

160 Mo

SE

Linux

Contraintes

non

Questions/commentaires

Poser une question sur le forum

Présentation fonctionnelle

Important : PGSQL n'est pas disponible dans CA AppLogic® 2.8 et ses versions ultérieures, utilisez plutôt PGSQL64 à la place.

PGSQL64 est une appliance de base de données basée sur le moteur de base de données PostgreSQL (http://www.mysql.org). Elle permet d'ajouter facilement une base de données quelle que soit l'application. PGSQL64 est une appliance de base de données de style entreprise utilisant de nombreuses fonctionnalités que les appliances MYSQLx ne prennent actuellement pas en charge. Parmi ces fonctionnalités, citons les procédures stockées, les déclencheurs, les vues et les types de données définis par l'utilisateur.

PGSQL64 stocke la base de données sur un volume défini par l'application que vous pouvez configurer sur chaque instance PGSQ64L. PGSQL64 crée éventuellement une base de données vide lorsqu'elle démarre sur un volume vide. Vous ne pouvez pas partager le volume de base de données de PGSQL64 entre plusieurs instances PGSQL (un volume de base de données par instance PGSQL).

Les clients PGSQL64 accèdent à la base de données configurée à l'aide du terminal in. Les requêtes de base de données sont traitées et effectuées via le même terminal. PGSQL64 permet aux utilisateurs Postgres valides d'accéder à la base de données via le terminal in. (L'appliance a un rôle de superutilisateur préconfiguré : la norme "postgres"). Vous pouvez configurer PGSQL64 avec le nombre maximum de connexions simultanées prises en charge par le terminal in.

PGSQL64 peut également assurer la maintenance d'un journal de base de données accessible via le terminal log. Le journal permet d'effectuer un suivi des informations de base de données de suivi et de consigner les erreurs. Vous pouvez configurer le chemin d'accès au journal, son nom, sa durée de conservation ainsi que son contenu. Par ailleurs, diverses statistiques de base de données et informations de débogage peuvent également être activées pour aider à établir le profil des modèles d'accès à la base de données et à diagnostiquer des problèmes ou des erreurs.

PGSQL64 est généralement utilisé pour des applications de base de données Web universelles (petites bases de données avec un grand nombre d'utilisateurs qui exécutent des requêtes simples) ou des bases de données décisionnelles (grandes bases de données avec un petit nombre d'utilisateurs qui exécutent des requêtes complexes).

Nom

Dernière version

SE

PostgreSQL

Notes

PGSQL64

3.0.2-1

CentOS 6.3

9.0.10

 

Ressources

Ressource

Minimum

Maximum

Valeur par défaut

UC

0.1

16

0.4

Mémoire

160 Mo

32 Go

512 Mo

Bande passante

1 Mbit/s

2 Gbits/s

250 Mbits/s

Remarque : La mémoire devrait être augmentée en fonction de deux facteurs principaux : le nombre d'utilisateurs simultanés et la taille de la base de données. Généralement, PGSQL peut prendre en charge environ 80 utilisateurs simultanés par 128 Mo de mémoire. Plus la base de données est volumineuse, plus PGSQL devrait disposer de mémoire. Par exemple, PGSQL devrait être configuré avec au minimum 1 Go de mémoire pour une base de données de 10 Go. Plus d'1 Go pour de meilleures performances.

Terminaux

Nom

Dir.

Protocole

Description

in

in

PGSQL

Reçoit les requêtes de base de données PostgreSQL des clients.

log

sortie

CIFS

Permet d'accéder à un système de fichiers distant pour stocker des journaux d'erreurs. Si ce terminal n'est pas utilisé, il peut rester déconnecté.

MON

sortie

CCE

Envoie des statistiques de performances et d'utilisation des ressources. Ce terminal peut rester déconnecté.

L'interface par défaut est activée. Elle est destinée au diagnostic et au dépannage (via SSH). Les versions futures de cette appliance peuvent désactiver l'accès SSH.

Volumes d'utilisateur

Volume

Description

données

Volume pour le stockage des données de la base de données.

Important : Le volume de données doit être exclusivement dédié à l'instance de PGSQL (il ne peut pas être partagé avec d'autres appliances).

Propriétés

Remarque : Aucune des propriétés PGSQL n'est sensible à la casse à l'exception des noms de fichier et des chemins d'accès.

Nom de propriété

Type

Description

auto_create

Chaîne

Indique si la base de données doit être créée lorsqu'elle n'existe pas. Valeurs possibles : yes pour la créer et no pour empêcher sa création automatique (pour éviter tout écrasement accidentel en cas de volumes endommagés). Si cette propriété est définie sur no et qu'aucune base de données n'existe sur le volume d'utilisateur, l'appliance démarre en mode Maintenance (le démon PostgreSQL ne démarre pas).
La valeur par défaut est yes.

read_only

Chaîne

La base de données accessible via le terminal in est en lecture seule. Les valeurs possibles sont yes pour la lecture seule et no pour la lecture/l'écriture. Cette propriété est utilisée par PGSQL uniquement pour optimiser les performances pour la base de données. (Les bases de données en lecture seule n'ont pas besoin du nettoyage de la mémoire, etc.).
La valeur par défaut est no.

max_connections

Nombre entier

Le nombre maximum de connexions à la base de données actives simultanément que PGSQL doit gérer par le biais du terminal in. PGSQL utilise cette valeur dans des calculs avancés pour la gestion de mémoire. En général, PGSQL a besoin de 128 Go de mémoire pour 80 connexions simultanées. Une fois la limite de connexion atteinte, PGSQL refuse toutes les connexions ultérieures.
La valeur par défaut est 100.

query_complexity

Chaîne

Cette propriété spécifie la complexité générale des requêtes que les utilisateurs doivent exécuter sur la base de données utilisée avec PGSQL. Les valeurs possibles sont :
simple - Requêtes simples tenant sur quelques lignes (utilisation courante). La majorité des applications de base de données Web utilisent les requêtes simples.
complex - Requêtes complexes comprenant des centaines de lignes et accédant à des millions de lignes de la base de données (c'est-à-dire, les applications de prise en charge de décision ou les applications de traitement de transactions volumineuses).
=PGSQL= Utilise la complexité de requête pour déterminer la quantité de mémoire qui doit être allouée pour le traitement des requêtes.
La valeur par défaut est simple.

sync_on_write

Chaîne

Indique si PGSQL doit patienter pendant que les mises à jour la de base de données sont physiquement écrites sur le disque (surtout lors de la validation des transactions). Les valeurs possibles sont yes pour patienter pendant les mises à jour du disque physique ou no pour mettre en cache les mises à jour et les écrire ultérieurement, améliorant ainsi les performances (écriture retardée). La définition de cette propriété sur yes peut affecter les performances, mais veille également à ce que la base de données soit restaurée dans un état cohérent après qu'un arrêt brutal ou un échec de l'appliance. Notez que si la base de données est spécifiée en lecture seule, PGSQL désactive automatiquement cette fonctionnalité et ignore la valeur de cette propriété.
La valeur par défaut est yes.

timezone

Chaîne

Spécifie le fuseau horaire utilisé dans l'appliance. Si cette propriété est vide, le fuseau horaire reste inchangé. Une liste des fuseaux horaires pris en charge est disponible ici. Valeur par défaut : vide

Propriétés de journalisation

Nom de propriété

Type

Description

log_filename

Chaîne

Nom du fichier journal de la base de données relatif au système de fichiers accessible via le terminal de journal (par exemple, postgresql.log pour /mnt/log/postgresql.log, ou /pgsql_logs/postgresql.log pour /mnt/log/pgsql_logs/postgresql.log). Si aucun nom n'est spécifié, la journalisation est désactivée. %-escapes peut être spécifié dans le nom du fichier journal (sur la base du modèle Linux strftime. Pour obtenir une liste complète des propriétés %-escapes, reportez-vous à la section Référence à la fin de cette rubrique). Si aucune propriété %-escapes n'est utilisée, PGSQL ajoute l'heure de la création du fichier journal. La valeur par défaut est (vide).

log_age

Nombre entier

Durée de vie maximum du fichier journal, spécifiée en minutes. Une fois le nombre de minutes écoulé, un nouveau fichier journal est créé à l'aide de la propriété log_filename. PGSQL tronque le fichier journal s'il existe déjà ; cela permet la rotation des journaux. Définissez la valeur sur 0 pour désactiver la création de nouveaux fichiers journaux basés sur l'heure.
La valeur par défaut est 1440 (un journal par jour).

log_size

Nombre entier

Taille maximum d'un fichier journal spécifiée en mégaoctets. Lorsque le fichier journal atteint la taille spécifiée, un nouveau fichier journal est créé à l'aide de la propriété log_filename. PGSQL tronque le fichier journal s'il existe déjà ; cela permet la rotation des journaux. Définissez la valeur sur 0 pour désactiver la création de nouveaux fichiers journaux basés sur la taille.
La valeur par défaut est 0.

log_level

Chaîne

Niveau de journalisation de la base de données. Les valeurs possibles sont :
none - Ne journalise aucun élément.
error - Ne journalise que les erreurs détectées par PGSQL.
warn - Journalise les avertissements et les erreurs.
notice - Journalise les avertissements, les erreurs et les avis.
debug - Consigne des informations de débogage supplémentaires en plus des avertissements, des avis et des erreurs. Les informations de débogage incluent des instructions SQL exécutées et des informations de connexion à la base de données (établissement/déconnexion).
La valeur par défaut est warn.

log_cmd_stats

Chaîne

Indique s'il convient de journaliser les statistiques lors de l'exécution des commandes SQL dans PGSQL (avec l'heure de début de l'exécution des commandes). Les valeurs possibles sont yes pour activer la journalisation et no pour la désactiver. Vous pouvez accéder aux statistiques à l'aide de la vue système pg_stat_activity dans PGSQL. Si elle est définie sur no, les compteurs personnalisés de PGSQL sont désactivés.
La valeur par défaut est yes. La journalisation de statistiques est requise pour le vidage automatique.

Important : L'appliance PGSQL ne parvient pas à démarrer si la journalisation est activée et le terminal de journal n'est pas connecté.

Compteurs personnalisés

L'appliance PGSQL signale les compteurs personnalisés suivants via le terminal mon, pour autant que la propriété log_cmd_stats soit définie sur yes. Ces compteurs appartiennent au groupe de compteurs PostgreSQL :

Nom du compteur

Description

Processus actifs

Nombre de processus de serveur actifs pour le serveur

Transactions validées

Transactions validées sur le serveur

Restauré

Transactions restaurées sur le serveur

DB Block fetch requests

Nombre de requêtes de récupérations de blocs de disque pour le serveur

DB Block fetch hits

Nombre de requêtes de récupérations de blocs de disque trouvées dans le cache pour le serveur

Messages d'erreur

En cas d'échec de démarrage de l'appliance, les erreurs suivantes peuvent être consignées dans le journal système :

Message d'erreur

Description

ERROR: Failed to update the postgres.conf configuration file, possibly due to low disk space on the boot volume.

PGSQL n'a pas pu mettre à jour le fichier de configuration postgres.conf. Cause probable : Le volume de démarrage est complet, problème d'autorisation.

ERROR: Unexpected internal error: missing postgres.conf.tmpl file, please contact CA Technical Support

Le fichier modèle postgresql.conf.tmpl n'existe pas ou ne peut pas être lu. Contactez le support CA

ERROR: Unable to access the specified log file; please check that the log_filename property contains the proper path and that the log terminal is connected.

PGSQL n'est pas parvenu à déterminer le répertoire de fichiers journaux. Cause probable : La valeur n'est pas valide.

ERROR: Unable to write into the specified log file; please check that the specified log directory is writable.

Impossible d'écrire le fichier journal de PostgreSQL.

ERROR: Unknown log level has been specified for the log_level property

La valeur log_level spécifiée n'est pas valide. Les valeurs valides sont none, error, warn, notice et debug.

ERROR: log_cmd_stats cannot be enabled since the database is specified as read-only

log_cmd_stats requiert que la base de données soit en lecture-écriture.

ERROR: Failed to mount the user's database volume. Vérifiez que le volume a été formaté avec un système de fichiers valide.

PGSQL n'est pas parvenu à monter le volume spécifié avec les fichiers de base de données. Vérifiez que le volume existe et st formaté avec un système de fichiers ext3.

ERROR: PGSQL started in maintenance mode due to unrecognized PostgreSQL database on supplied database volume

Le volume de base de données spécifié ne contient pas de base de données valide et auto_create est défini sur no. L'appliance démarrera en mode maintenance

ERROR: Failed to create a new database on the supplied database volume. Reportez-vous au fichier /var/log/appliance/log de PGSQL pour plus d'informations sur l'échec.

PGSQL n'est pas parvenu à vider le répertoire de base de données ou à en créer un nouveau.

ERROR: Failed to start the PostgreSQL server. Please see the /var/log/appliance/log log file in PGSQL for more details on the failure

PGSQL n'est pas parvenu à lancer le serveur PostgreSQL. Pour plus d'informations, reportez-vous aux fichiers /var/log/pgstartup.log et /var/log/appliance/log.

ERROR: log_filename is specified but log terminal is not connected.

La propriété log_filename n'est pas vide, mais le terminal log de PGSQL n'est pas connecté.

ERROR: log_filename is specified but log device is not mounted.

La propriété log_filename n'est pas vide, mais PGSQL n'est pas parvenu à accéder à l'unité de journalisation. La cause probable est que PGSQL a été démarré avant NAS.

Messages de tableau de bord

En cas d'erreurs critiques nécessitant l'attention de l'utilisateur, PGSQL journalise des messages dans le tableau de bord de la grille comme suit :

Message

Description

Data volume has less than 5% of free disk space

L'espace disque disponible sur le volume de donnée de l'appliance PGSQL est inférieur à 5 %. Il est conseillé d'augmenter la taille du volume.

Data volume has less than 1% of free disk space

L'espace disponible sur le volume de données de l'appliance PGSQL est inférieur à 1 %. Faites attention car vous risquez de perdre des données.

Ces messages ne sont consignés qu'une seule fois lorsque la quantité d'espace libre sur le disque passe sous le seuil défini.

Performances

Les performances de PGSQL sont considérablement influencées par les valeurs de propriétés sync_on_write, log_filename et log_cmd_stats. Pour obtenir les meilleures performances possibles, désactivez fsync, la journalisation et les statistiques (sync_on_write=no, log_filename="" log_cmd_stats=no). Le tableau ci-dessous contient des exemples de résultats de test pgbench (exprimés en tps - transactions par seconde) lorsque ces fonctionnalités sont activées et désactivées. pgbench est un utilitaire fourni avec PostgreSQL qui permet de mesurer les performances de la base de données.

Configuration de test pgbench

activé

désactivé

1 client, 100 requêtes

40-70 tps

650 tps

10 clients, 100 requêtes

60-90 tps

1100 tps

100 clients, 100 requêtes

70-110 tps

1200 tps

Application simple à deux niveaux (application de base de données Web)

Le diagramme suivant affiche une utilisation standard de l'appliance PGSQL dans une application Web à deux niveaux adaptée à de nombreux utilisateurs exécutant des requêtes simples :

Appliances en cours d'utilisation :

Les requêtes client arrivent sur la passerelle utilisateur. La passerelle envoie les requêtes au serveur Web, qui les traite. Lorsque le script (par exemple, Perl ou PHP) sur IIS doit accéder à des données permanentes, il utilise l'appliance dbase via le terminal db.

Dans cet exemple, la base de données utilisée avec dbase n'est pas en lecture seule et de nombreux utilisateurs peuvent y accéder via srv pour exécuter des requêtes simples. L'appliance dbase proprement dite est configurée pour utiliser 256 Mo de mémoire. Par ailleurs, la base de données ne conserve aucun fichier journal d'erreurs de base de données (le terminal de journal n'est pas connecté).

Exemple de configuration de propriété :

Nom de propriété

Valeur

Notes

auto_create

Oui

Crée la base de données si le volume de données est vide.

read_only

non

La base de données n'est pas en lecture seule. Elle peut être modifiée.

query_complexity

Simple

Les utilisateurs exécutent généralement des requêtes simples.

sync_on_write

Oui

Attend que les mises à jour de base de données soient physiquement écrites sur le disque.

Remarque : Le volume de données doit également être configuré sur dbase et le volume de contenu doit être configuré sur web. Pour créer des volumes virtuels d'application pouvant être utilisés ici, reportez-vous au Manuel de l'utilisateur de la grille.

Application évolutive à deux niveaux (application de base de données Web)

Le diagramme suivant affiche une utilisation standard de l'appliance PGSQL dans une application Web à deux niveaux dans laquelle la base de données est utilisée pour partager l'état et les données entre plusieurs serveurs Web à charge équilibrée (destinée à de nombreux utilisateurs exécutant des requêtes simples). Par ailleurs, dans cet exemple, il existe une entrée distincte pour la maintenance, via laquelle un administrateur peut se connecter et accéder à la base de données à des fins de maintenance, ainsi qu'une autre entrée via laquelle un administrateur peut se connecter et afficher le journal d'erreurs PostgreSQL.

Appliances en cours d'utilisation :

Les requêtes client arrivent sur la passerelle utilisateur. Cette dernière envoie les requêtes à l'équilibreur de charge Web, qui les transmet à un des serveurs Web (srv1 ou srv2 ). Lorsque des scripts (par exemple, Perl ou PHP) sur les serveurs Web doivent accéder à des données permanentes, ils utilisent l'appliance SQL via leurs terminaux db.

La base de données dbase écrit son journal d'erreurs dans l'appliance de journaux via le terminal de journal. Un administrateur peut, par ailleurs, se connecter à l'appliance de journaux via la passerelle de journal et afficher les fichiers journaux d'erreurs de base de données (ainsi que les fichiers journaux du serveur Web).

En outre, un administrateur peut se connecter via SSH au serveur admin, par le biais de la passerelle maint. A partir du serveur admin, l'administrateur peut accéder à la base de données dbase pour consulter des statistiques ou modifier le schéma de base de données. Le serveur admin peut accéder à Internet via la passerelle gway pour, par exemple, télécharger une version plus récente des bibliothèques ou le schéma de base de données.

Dans cet exemple, la base de données utilisée avec dbase n'est pas en lecture seule et de nombreux utilisateurs peuvent y accéder via les serveurs Web pour exécuter des requêtes simples. L'appliance dbase proprement dite est configurée pour utiliser 256 Mo de mémoire. La base de données est également configurée pour conserver les fichiers journaux pendant une semaine, à raison de un par jour (après chaque semaine, les fichiers journaux sont écrasés).

Exemple de configuration de propriété :

Nom de propriété

Valeur

Notes

auto_create

Oui

Crée la base de données si le volume de données est vide.

read_only

non

La base de données n'est pas en lecture seule. Elle peut être modifiée.

query_complexity

Simple

Les utilisateurs exécutent généralement des requêtes simples.

sync_on_write

Oui

Attend que les mises à jour de base de données soient physiquement écrites sur le disque.

log_filename

dblog.%a

Nom de fichier journal d'erreurs qui doit être stocké sur le volume de données de journaux - un par jour.

log_age

1440

Chaque fichier journal correspond à un jour, par exemple dblog.Mon.

log_level

error

Niveau de journalisation des erreurs.

Remarques :

Application simple à deux niveaux (système de prise en charge de décision)

Le diagramme suivant affiche une utilisation standard de l'appliance PGSQL dans une application Web à deux niveaux implémentant un système de prise en charge de décision pour quelques utilisateurs exécutant des requêtes complexes sur une grande base de données d'une taille de plusieurs Go.

Appliances en cours d'utilisation :

Les requêtes client arrivent sur la passerelle utilisateur. La passerelle envoie les requêtes au serveur srv, qui les traite. Lorsque les scripts (par exemple, Perl ou PHP) sur srv doit accéder à des données permanentes, il utilise l'appliance dbase via le terminal db. L'appliance dbase est configurée pour stocker ses fichiers journaux dans le répertoire racine du partage fourni par les journaux.

Les administrateurs se connectent à la passerelle admin à l'aide d'un navigateur pour afficher les fichiers journaux PostgreSQL. La passerelle admin envoie les requêtes à l'appliance NAS de journaux.

Dans cet exemple, la base de données utilisée avec dbase n'est pas en lecture seule et les utilisateurs peuvent y accéder via srv en exécutant des requêtes complexes (requêtes volumineuses accédant à des millions de lignes). L'appliance dbase proprement dite est configurée pour utiliser 1536 Mo de mémoire. La base de données est également configurée pour conserver les fichiers journaux pendant une semaine, à raison de un par jour (après chaque semaine, les fichiers journaux sont écrasés).

Exemple de configuration de propriété :

Nom de propriété

Valeur

Notes

auto_create

Oui

Crée la base de données si le volume de données est vide.

max_connections

25

La base de données est limitée à 25 utilisateurs simultanés.

read_only

non

La base de données n'est pas en lecture seule. Elle peut être modifiée.

query_complexity

complex

Les utilisateurs exécutent généralement des requêtes complexes.

sync_on_write

Oui

Attend que les mises à jour de base de données soient physiquement écrites sur le disque.

log_filename

dblog.%a

Nom de fichier journal d'erreurs qui doit être stocké sur le volume de données de journaux - un par jour.

log_age

1440

Chaque fichier journal correspond à un jour, par exemple dblog.Mon.

log_level

error

Niveau de journalisation des erreurs.

Remarque : Le volume de données doit également être configuré sur l'appliance dbase ainsi que sur l'appliance de journaux.

Application simple à deux niveaux (application de base de données Web en lecture seule)

Une utilisation moins courante de l'appliance PGSQL est celle en tant qu'application Web à deux niveaux à l'aide d'une base de données en lecture seule. Il s'agit de la même que pour les exemples précédents d'applications simples si ce n'est que la base de données est en lecture seule (aucune modification n'est autorisée). Il est important de paramétrer PGSQL de façon à utiliser une base de données en lecture seule afin de désactiver diverses fonctionnalités PostgreSQL qui ne sont pas nécessaires pour les bases de données en lecture seule. Les performances seront ainsi améliorées (vidage automatique de la base de données, statistiques de modification de la base de données, etc.).

Exemple de configuration de propriété :

Nom de propriété

Value (Valeur)

Commentaires

auto_create

non

La base de données sur le volume de données doit déjà exister.

read_only

Oui

La base de données est en lecture seule. Les modifications ne sont pas autorisées.

query_complexity

Simple

Les utilisateurs exécutent généralement des requêtes simples.

log_filename

dblog.%a

Nom de fichier journal d'erreurs qui doit être stocké sur le volume de données de journaux - un par jour.

log_age

1440

Chaque fichier journal correspond à un jour, par exemple dblog.Mon.

log_level

error

Niveau de journalisation des erreurs.

Applications de débogage de base de données

PGSQL présente des propriétés pour activer le débogage d'une base de données à l'aide du fichier journal paramétré (log_filename). Cette propriété est par exemple utile lorsque vous devez suivre des instructions SQL, voir la durée d'exécution des instructions SQL, voir pourquoi une instruction SQL échoue, etc. Les informations de débogage sont les suivantes :

Pour déboguer une base de données, les propriétés suivantes sont généralement configurées :

Nom de propriété

Value (Valeur)

Commentaires

log_level

debug

Niveau de journalisation de débogage.

log_cmd_stats

Oui

Consigne les statistiques de commande SQL (délai, traitement, exécution, etc.).

Les informations de débogage sont soit stockées dans le journal d'erreurs accessible via le terminal de journal ou sont disponibles via les vues de statistiques PostgreSQL : http://www.postgresql.org/docs/8.3/static/monitoring-stats.html.

Commentaires

Mise en garde :

Logiciels tiers et Open Source utilisés sur cette appliance

Les logiciels Open Source tiers suivants sont utilisés en plus des logiciels disponibles sur la classe de base d'appliance (LUX64 est la classe de base de PGSQL64).

Logiciel

Version

Modifié

Licence

Notes

libgcrypt

1.4.5-9.el6_2.2

Non

GPLv2

N/D

libgpg-error

1.7-4

Non

GPLv2

N/D

postgresql

9.0.10-1PGDG

Non

BSD

N/D

postgresql-libs

9.0.10-1PGDG

Non

BSD

N/D

postgresql-server

9.0.10-1PGDG

Non

BSD

N/D

postgresql-test

9.0.10-1PGDG

Non

BSD

N/D

samba-client

3.5.10-125

Non

GPLv3

N/D

samba-common

3.5.10-125

Non

GPLv3

N/D