Argomento precedente: Applicazione di N-livelli eseguita su diversi dispositivi (adatto per il bilanciamento del carico e failover)

Argomento successivo: Appliance di database ORACLE


PGSQL64 - appliance di database PostgreSQL

PGSQL, PGSQL64: appliance del database PostgreSQL

In breve

Catalogo

Sistema

Categoria

Appliance di database

Volumi dell'utente

Num. minimo memoria

160 MB

OS

Linux

Vincoli

no

Domande/commenti

Fare richieste al forum

Panoramica funzionale

Importante: PGSQL non è disponibile in CA AppLogic 2.8 o versioni successive; usare invece PGSQL64.

PGSQL64 è un'appliance di database basata sul modulo PostgreSQLdatabase (http://www.postgresql.org). È un modo facile per aggiungere un database a qualsiasi applicazione. PGSQL64 è un'appliance di database in stile enterprise che supporta molte funzionalità attualmente non supportate dalle appliance di MYSQLx. Fra queste: procedure archiviate, trigger, visualizzazioni e tipi di dati definiti dall'utente.

PGSQL64 archivia il database su un volume definito dell'applicazione che è possibile configurare in ciascuna istanza di PGSQ64L. PGSQL64 crea facoltativamente un database vuoto quando viene avviato su un volume vuoto. Non è possibile dividere il volume del database di PGSQL64 fra più istanze di PGSQL (un volume di database per istanza PGSQL).

I client di PGSQL64 accedono al database configurato mediante il terminale IN. Le richieste del database sono elaborate e inviate mediante lo stesso terminale. PGSQL64 permette a qualsiasi utente Postgres valido di accedere al database mediante il terminale IN (l'appliance ha un ruolo di utente con privilegi avanzati pre-configurato: "postgres" standard). È possibile configurare PGSQL64 con il numero massimo di connessioni concorrenti supportate.

PGSQL64 è anche in grado di mantenere accessibile un log di database mediante il terminale del log. Il log è utile per tenere traccia delle informazioni di database e della registrazione degli errori. Il percorso del log, il nome, l'età e i contenuti sono configurabili. Inoltre, le statistiche dei database e le informazioni di correzione degli errori di programma possono essere abilitate per la configurazione dei modelli di accesso al database e la diagnosi di problemi/errori.

PGSQL64 è usato generalmente per le applicazioni di database Web generiche (piccoli database con un grande numero di utenti che eseguono query semplici) oppure database di supporto delle decisioni (grandi database con un numero ridotto di utenti che eseguono query complesse).

Nome

Ultima versione

OS

PostgreSQL

note

PGSQL64

2.0.2-1

CentOS 5.5

9.0.1

 

Risorse

Risorsa

Minimo

Massimo

Predefinito

CPU

0.1

16

0.4

Memoria

160 MB

32 G

512 MB

Larghezza di banda

1 Mbps

2 Gbps

250 Mbps

Nota: la memoria deve essere aumentata sulla base di due fattori principali: il numero di utenti concorrenti e le dimensioni del database. Generalmente, il PGSQL può supportare circa 80 utenti concorrenti per 128 MB di memoria. Più il database è grande, maggiore è la memoria che PGSQL dovrebbe avere per l'elaborazione. Ad esempio, PGSQL dovrebbe essere configurato con almeno 1 G di memoria per un database di 10 G, ossia 1 G in più per prestazioni migliori.

Terminali

Nome

Dir

Protocol

Description

in

in

PGSQL

Riceve richieste di database di PostgreSQL da client.

log

out

CIFS

Utilizzato per accedere a un file system remoto per l'archiviazione dei log di errore. Questo terminale può essere lasciato non connesso se non viene utilizzato.

mon

out

CCE

Invia le statistiche sull'utilizzo delle risorse e le prestazioni. Questo terminale può essere lasciato non connesso.

L'interfaccia predefinita è abilitata. È destinato per la diagnosi e la risoluzione dei problemi (su SSH). Le versioni future di questa appliance possono disabilitare l'accesso di SSH.

Volumi di utente

Volume

Description

dati

Volume per l'archiviazione di dati del database.

Importante: Il volume di dati deve dedicato esclusivamente all'istanza di PGSQL (non può essere condiviso con altre appliance).

Proprietà

Nota: nessuna delle proprietà PGSQL fa distinzione tra caratteri maiuscoli o minuscoli, fatta eccezione per i nomi di file e dei percorsi.

Nome di proprietà

Tipo

Description

auto_create

Stringa

Se creare il database se non esiste. I valori possibili sono yes crearlo e no per non crearlo automaticamente (per evitare accidenti di sovrascrittura in caso di volumi corrotti). Se impostato su no e il database non esiste sul volume di utente, gli avvii di appliance in modalità di mantenimento (deamon di PostgreSQL non avviato).
Il valore predefinito è yes.

read_only

Stringa

Il database è accessibile dal terminale IN è di sola lettura. I valori possibili sono sì per sola lettura e non per la lettura/scrittura. Questa proprietà viene utilizzata da PGSQL per ottimizzare le prestazioni per il database (i database di sola lettura non hanno bisogno della raccolta di garbage, ecc.).
Il valore predefinito è no.

max_connections

Numero intero

Il numero massimo di connessioni attive concorrenti al database che PGSQL dovrebbe gestire mediante il terminale IN. Il PGSQL usa questo valore nei calcoli avanzati per la gestione della memoria. In generale, PGSQL ha bisogno di 128 MB di memoria per ogni 80 connessioni concorrenti. Una volta raggiunto il limite delle connessioni, PGSQL respinge tutte le altre connessioni.
Il valore di ripetizione predefinito è 100.

query_complexity

Stringa

Questa proprietà specifica la complessità generale delle query che gli utenti eseguirebbero contro il database utilizzato con PGSQL. I valori possibili sono:
semplice - query semplici che consistono di qualche linea (uso generale). Una maggioranza di applicazioni di database Web usano query semplici.
complesso - query complesse che consistono di centinaia di linee e accedono a milioni di righe nel database (che, cioè, le applicazioni di supporto delle decisioni o le applicazioni che elaborano transazioni pesanti).
=PGSQL= usa la complessità di query per determinare il valore di memoria che dovrebbe essere riservata per l'elaborazione di query.
Il valore predefinito è semplice.

sync_on_write

Stringa

Se il PGSQL deve attendere per gli aggiornamenti di database da scrivere fisicamente sul disco (soprattutto quando si eseguono le transazioni). I valori possibili sono yes per attendere gli aggiornamenti del disco fisico e no per nascondere gli aggiornamenti e scriverli in una fase successiva per migliorare le prestazioni (scrittura ritardata). Se si imposta questa proprietà su yes, ci può essere una penalità nelle prestazioni ma il database può tornare a uno stato coerente dopo il crash o un guasto dell'appliance. Se il database è specificato come di sola lettura, PGSQL disabilita automaticamente questa funzione e ignora il valore di questa proprietà.
Il valore predefinito è yes.

fuso orario

Stringa

Specifica il fuso orario usato nell'appliance. Se questa proprietà è vuota, il fuso orario non è modificato e viene lasciato com'è. Un elenco dei fusi orari supportati è disponibile qui. Predefinito: vuoto

Registrazione delle proprietà

Nome di proprietà

Tipo

Description

log_filename

Stringa

Nome di file per i file di log del database, relativo al file system cui si è avuto accesso dal terminale di log (ad esempio, postgresql.log per /mnt/log/postgresql.log, o /pgsql_logs/postgresql.log per /mnt/log/pgsql_logs/postgresql.log). Se lasciato vuoto, la registrazione è disabilitata. %-escapes può essere specificato nel nome di file di registro (lo stesso del modello strftime di Linux - consultare la sezione di riferimento alla fine di questo argomento per l'elenco completo di %-escapes). Se nessun %-escapes è usato, PGSQL aggiunge l'epoca del tempo di creazione dei file di registro. Il valore predefinito è (vuoto).

log_age

Numero intero

La durata di vita massima dei file di log; specificato in minuti. Trascorso il numero specificato di minuti, un nuovo file di log è creato usando la proprietà di log_filename. PGSQL tronca i file di log se esistono già; questo permette la rotazione di log. Impostato su 0 per disabilitare la creazione a tempo di nuovi file di log.
Il valore predefinito è 1440 (un log al giorno).

log_size

Numero intero

La durata di vita massima dei file di log; specificata in megabyte. Quando i file di log raggiungono la dimensione specificata, viene creato un nuovo file di log usando la proprietà di log_filename. PGSQL tronca i file di log se esistono già; questo permette la rotazione di log. Impostato su 0 per disabilitare la creazione basata sulla dimensione di nuovi file di log.
Il valore predefinito è 0.

log_level

Stringa

Livello di registrazione del database. I valori possibili sono:
nessuno - nessuna registrazione.
emerg - sono registrati soltanto gli errori rilevati da PGSQL.
avviso - registra gli avvisi e gli errori.
nota - registra gli avvisi, gli errori e le informative.
debug - registra le informazioni di debug aggiuntive ad avvisi, errori e informative. Le informazioni di debug includono le dichiarazioni di SQL eseguite e le informazioni di connessione database (stabilimento/disconnessione).
Il valore predefinito è avviso.

log_cmd_stats

Stringa

Se registrare le statistiche di log sull'esecuzione dei comandi SQL in PGSQL (oltre al tempo, i comandi avviano l'esecuzione). I valori possibili sono yes per abilitare la registrazione e non per disabilitare la registrazione. È possibile accedere alle statistiche usando la vista di sistema di pg_stat_activity in PGSQL. Se impostato su no, i contatori personalizzati di PGSQL sono disabilitati.
Il valore predefinito è yes. La registrazione delle statistiche sono richieste per lo svuotamento automatico.

Importante: L'appliance di PGSQL non viene avviata se la registrazione è abilitata e il terminale di log non è connesso.

Contatori personalizzati

L'appliance di PGSQL riporta i seguenti contatori personalizzati dal terminale di mon, purché la proprietà di log_cmd_stats è impostata su sì. Questi contatori appartengono al gruppo di contatori di PostgreSQL:

Nome di contatore

Description

Processi attivi

Numero di processi server attivi per server

Transazioni confermate

Transazioni confermate nel server

Ripristinate

Le transazioni ripristinate nel server

Richieste di recupero del blocco di DB

Numero di richieste di recupero del blocco di disco per server

Hit di recupero del blocco di database

Numero di richieste di recupero di blocco di disco trovate nella cache per server

Messaggi di errore

In caso di errore nell'avvio dell'appliance, è possibile che vengano registrarti i seguenti errori nel log di sistema:

Messaggio di errore

Description

ERRORE: impossibile aggiornare i file di configurazione di postgres.conf, forse a causa di spazio insufficiente sul volume di avvio.

PGSQL non è riuscito ad aggiornare il file di configurazione di postgres.conf. Causa probabile - il volume di avvio è pieno, problema di autorizzazione

ERRORE: errore interno imprevisto: file postgres.conf.tmpl mancante. Contattare il Supporto Tecnico di CA

Il file di template postgresql.conf.tmpl non esiste o è illeggibile. Contattare il Supporto di CA

ERRORE: impossibile accedere ai file di log specificato; controllare che la proprietà di log_filename contiene il percorso corretto e che il terminale di log è connesso.

PGSQL non è riuscito a determinare la directory dei file di log, causa probabile - il valore di log_filename non è valido

ERRORE: impossibile scrivere nei file di log specificati; controllare che la directory di log specificata è scrivibile.

Impossibile scrivere nei file di log di PostgreSQL

ERRORE: livello di log sconosciuto specificato per la proprietà di log_level

Il valore di log_level specificato non è valido, dovrebbe essere uno fra nessuno, errore, avviso, nota e debug

ERRORE: impossibile abilitare log_cmd_stats perché il database è specificato come di sola lettura

log_cmd_stats richiede il database di sola scrittura

ERRORE: impossibile montare il volume di database dell'utente. Verificare che il volume sia stato formattato con un file system valido

PGSQL non è riuscito a montare il volume specificato con i file di database. Verificare che il volume esista e sia formattato con file system di ext3

ERRORE: PGSQL è stato avviato in modalità di mantenimento a causa di database di PostgreSQL non riconosciuto sul volume di database fornito

Il volume di database specificato non contiene un database valido e auto_create è impostato su 'no'. L'appliance verrà avviata in modalità di mantenimento

ERRORE: impossibile creare un nuovo database sul volume di database fornito. Consultare il file di /var/log/appliance/log in PGSQL per maggiori informazioni sull'errore

PGSQL non è riuscito a svuotare la directory di database o a crearne uno nuovo

ERRORE: impossibile avviare il server di PostgreSQL. Consultare il file di /var/log/appliance/log in PGSQL per maggiori informazioni sull'errore

PGSQL non è riuscito ad avviare il server di PostgreSQL, consultare /var/log/pgstartup.log e /var/log/appliance/log per maggiori informazioni

ERRORE: log_filename è specificato ma il terminale di log non è connesso.

La proprietà di log_filename non è vuota, ma il terminale di log di PGSQL non è connessa

ERRORE: log_filename è specificato ma la periferica non è montata.

La proprietà di log_filename non è vuota, ma PGSQL non è riuscito ad accedere alla periferica di registrazione. La probabile causa è che PGSQL è stato avviato prima di NAS

Messaggi di dashboard

Qualora vengano riscontrati gli errori critici che richiedono l'attenzione dell'utente, PGSQL registra i messaggi nel dashboard della griglia come segue:

Messaggio

Description

Lo spazio su disco disponibile per il volume di dati è inferiore al 5%

Lo spazio su disco disponibile per il volume di dati su PGSQL è inferiore all'5% Si consiglia di aumentare la dimensione del volume.

Lo spazio su disco disponibile per il volume di dati è inferiore all'1%

Lo spazio su disco disponibile per il volume di dati su PGSQL è inferiore all'1% È richiesta attenzione immediata perché potrebbe verificarsi una perdita di dati.

Questi messaggi sono registrati soltanto una volta quando lo spazio libero su disco scende sotto la soglia.

Prestazioni

Le prestazioni di PGSQL sono fortemente influenzate dai valori di proprietà sync_on_write, log_filename e log_cmd_stats. Per conseguire i migliori risultati di prestazioni durante fsync, disabilitare tutte le registrazioni e le statistiche (sync_on_write=no, log_filename=" log_cmd_stats=no). La tabella di seguito contiene i risultati del test pgbench campione (specificato in unità tps, transazioni per secondo) quando queste caratteristiche sono abilitate o disabilitate. pgbench è un'utility inclusa in PostgreSQL che viene usata per misurare le prestazioni del database.

configurazione del test di pgbench

abilitato

disabilitato

1 client, 100 richieste

40-70 tps

650 tps

10 client, 100 richieste

60-90 tps

1100 tps

100 client, 100 richieste

70-110 tps

1200 tps

Applicazione a due livelli semplice (applicazione del database Web)

Il seguente diagramma mostra un uso tipico dell'appliance di PGSQL in un'applicazione Web a due livelli destinata agli utenti che eseguono query semplici:

Applicazione a due livelli semplice (applicazione del database Web)

Appliance in uso:

Le richieste del client arriva sul gateway usr. Il gateway inoltra le richieste al server Web, che serve la richiesta. Quando lo script (ad esempio, Perl o PHP) su srv deve accedere a dati persistenti, utilizza l'appliance di dbase attraverso il terminale DB.

In questo esempio, il database utilizzato con dbase non è di sola lettura e molti utenti possono accedervi mediante srv eseguendo query complesse. Come tale, dbase è configurato per utilizzare 256 MB di memoria. Il database non mantiene i file di log di errore di database (il terminale di log non è connesso).

Esempio di configurazione della proprietà:

Nome di proprietà

Valore

note

auto_create

Creare il database se i volumi sono vuoti.

read_only

no

Il database non è di sola lettura, può essere modificato.

query_complexity

semplice

Gli utenti generalmente eseguono query semplici.

sync_on_write

Attendere che gli aggiornamenti di database siano scritti fisicamente sul disco.

Nota: è necessario inoltre configurare il volume di dati sul database e il volume di contenuto sul Web. Per creare volumi di applicazione che è possibile utilizzare qui, consultare la Guida degli utenti della griglia.

Applicazione a due livelli scalabile (applicazione del database Web)

Il seguente diagramma mostra un uso tipico dell'appliance di PGSQL su un'applicazione Web a due livelli in cui il database è utilizzato per condividere lo stato e i dati tra più server Web, server Web con bilanciamento del carico (destinati a molti utenti che eseguono semplici query). Inoltre, questo esempio ha un input separato di manutenzione, attraverso il quale un amministratore può registrarsi e accedere al database per la manutenzione e l'input per consentire agli amministratori di leggere i log PostgreSQL.

Applicazione a due livelli scalabile (applicazione del database Web)

Appliance in uso:

Le richieste del client arriva sul gateway usr. Il gateway inoltra le richieste all'utilità di bilanciamento del carico Web, che indirizza la richiesta a uno dei server Web (srv1 o srv2). Quando lo script (ad esempio, PHP.NET) sui server Web deve poter accedere a dati persistenti, usa l'appliance di SQL mediante i terminali DB.

Il database di dbase scrive il suo registro di errore all'appliance di log attraverso il terminale di log. Inoltre, un amministratore può accedere attraverso il gateway di log all'appliance di log e visualizzare i file di log degli errori di database (oltre ai file di log del server Web).

Inoltre, un amministratore può accedere a SSH attraverso il gateway di maint al server di admin. Dal server di admin, l'amministratore può accedere al database di db per statistiche o modificando lo schema del database. Il server di admin può accedere a Internet attraverso il gateway di gway per, ad esempio, scaricare una versione più nuova delle librerie o lo schema del database.

In questo esempio, il database usato con dbase non è di sola lettura e molti utenti possono accedervi mediante IIS eseguendo semplici query. Come tale, dbase è configurato per utilizzare 256 MB di memoria. Il database è configurato, inoltre, per tenere una settimana di file di log uno al giorno (dopo ogni settimana i file di log sono sovrascritti).

Esempio di configurazione della proprietà:

Nome di proprietà

Valore

note

auto_create

Creare il database se i volumi sono vuoti.

read_only

no

Il database non è di sola lettura, può essere modificato.

query_complexity

semplice

Gli utenti generalmente eseguono query semplici.

sync_on_write

Attendere che gli aggiornamenti di database siano scritti fisicamente sul disco.

log_filename

dblog.%a

Nome di file log degli errori che deve essere archiviato sul volume di dati di log - uno al giorno.

log_age

1440

Ogni file di log è per un giorno, ad esempio dblog.Mon.

log_level

errore

Livello di registrazione degli errori.

Note:

Applicazione a due livelli semplice (sistema di supporto delle decisioni)

Il seguente diagramma mostra un uso tipico dell'appliance di PGSQL in un'applicazione Web a due livelli che implementa un sistema di supporto delle decisioni per alcuni utente che eseguono query complesse su un database di diversi gigabyte.

Applicazione a due livelli semplice (sistema di supporto delle decisioni)

Appliance in uso:

Le richieste del client arriva sul gateway usr. Il gateway inoltra le richieste al server srv, che serve la richiesta. Quando lo script (ad esempio, Perl o PHP) su srv deve accedere a dati persistenti, utilizza l'appliance di dbase attraverso il terminale DB. L'appliance di dbase è configurata per archiviare i file di log nella directory principale della condivisione esposta dai log.

Mediante un browser, gli amministratori si connettono al gateway di admin per visualizzare i log di PostgreSQL. Il gateway di admin inoltra le richieste all'appliance NAS dei log.

In questo esempio, il database utilizzato con dbase non è di sola lettura e molti utenti possono accedervi mediante srv eseguendo query complesse (grandi query che accedono a milioni di righe).. Come tale, dbase è configurato per utilizzare 1536 MB di memoria. Il database è configurato, inoltre, per tenere una settimana di file di log uno al giorno (dopo ogni settimana i file di log sono sovrascritti).

Esempio di configurazione della proprietà:

Nome di proprietà

Valore

note

auto_create

Creare il database se i volumi sono vuoti.

max_connections

25

Il database è limitato a 25 utenti concorrenti.

read_only

no

Il database non è di sola lettura, può essere modificato.

query_complexity

complesso

Gli utenti generalmente eseguono query complesse.

sync_on_write

Attendere che gli aggiornamenti di database siano scritti fisicamente sul disco.

log_filename

dblog.%a

Nome di file log degli errori che deve essere archiviato sul volume di dati di log - uno al giorno.

log_age

1440

Ogni file di log è per un giorno, ad esempio dblog.Mon.

log_level

errore

Livello di registrazione degli errori.

Nota: è necessario inoltre configurare il volume di dati sull'appliance di db e sull'appliance di log.

Applicazione a due livelli semplice (applicazione del database Web di sola lettura)

Un uso meno comune dell'appliance di PGSQL è un'applicazione Web a due livelli mediante un database di sola lettura. Questo è lo stesso degli esempi di applicazione semplici precedenti tranne che il database è di sola lettura (nessuna modifiche vengono permesse). È importante impostare i parametri PGSQL in modo tale che questo usi sola lettura come si girerà di caratteristiche di PostgreSQL varie che non sono necessarie per database di sola lettura che si risolve in prestazioni migliore (database che automatico-vacuuming, statistiche di modifica di database, eccetera).

Esempio di configurazione della proprietà:

Nome di proprietà

Valore

note

auto_create

no

Il database sul volume di dati dovrebbe esistere già.

read_only

Il database è di sola lettura, non sono consentite modifiche.

query_complexity

semplice

Gli utenti generalmente eseguono query semplici.

log_filename

dblog.%a

Nome di file log degli errori che deve essere archiviato sul volume di dati di log - uno al giorno.

log_age

1440

Ogni file di log è per un giorno, ad esempio dblog.Mon.

log_level

errore

Livello di registrazione degli errori.

Applicazioni di database di debug

PGSQL espone le proprietà per abilitare il debug di un database usando il file di log parametrizzato (log_filename). Questo è utile per tenere traccia delle dichiarazioni di SQL, consultare il tempo necessario per eseguire dichiarazioni di SQL, consultare perché una dichiarazione di SQL non riesce, ecc. Le informazioni di debug includono:

Generalmente per eseguire il debug di un database, sono configurate le seguenti proprietà:

Nome di proprietà

Valore

note

log_level

debug

Livello di registrazione di debug.

log_cmd_stats

Registra le statistiche di comando SQL (temporizzazione, elaborazione, esecuzione, ecc.).

Le informazioni di debug sono archiviate nel registro di errore a cui si accede attraverso il terminale di log oppure sono disponibili attraverso una delle visualizzazioni di statistica di PostgreSQL: http://www.postgresql.org/docs/8.3/static/monitoring-stats.html.

note

Si ricorda che:

Software Open Source e di terze parti usati in questa appliance

Il seguente software Open Source è usato oltre al software trovato sulla classe di base dell'appliance (LUX64 è la classe di base di PGSQL64).

Software

Versione

Modificato

License

note

libgcrypt

1.4.4-5.el5

No

GPLv2

N/A

libgpg-error

1.4-2

No

GPLv2

N/A

libxslt

1.1.17-2.el5_2.2

No

GPLv2

N/A

postgresql

9.0.1-1PGDG

No

BSD

N/A

postgresql-libs

9.0.1-1PGDG

No

BSD

N/A

postgresql-server

9.0.1-1PGDG

No

BSD

N/A

postgresql-test

9.0.1-1PGDG

No

BSD

N/A

samba-client

3.0.28-1.el5_2.1

No

GPLv3

N/A

samba-common

3.0.28-1.el5_2.1

No

GPLv3

N/A