[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [postgresql-it] Problemi con sincronizzazione tra due DB.



Ciao Gabriele,

Escludo sia un problema hardware in quanto il master ha:

2 processori Intel Bi Xeon E5606
RAM 24 GB DDR3 ECC
2 dischi in raid 1 HW da 2TB - SATA2 -

lo slave:
2 processori Intel Xeon i7 W3520
RAM 24 GB DDR3
2 dischi in raid 1 SW da 2TB - SATA2

Le macchine sono interconnesse tra di loro con una rete privata.
---
Sistema operativo (entrambe le macchine)
Description:    Debian GNU/Linux 6.0.4 (squeeze)
Release:        6.0.4
Codename:       squeeze

Il Db è su file system Ext4.


--- Parametri rilevanti della configurazione postgres ----

default_statistics_target = 100 # pgtune wizard 2012-03-02
maintenance_work_mem = 1GB # pgtune wizard 2012-03-02
constraint_exclusion = on # pgtune wizard 2012-03-02
checkpoint_completion_target = 0.9 # pgtune wizard 2012-03-02
effective_cache_size = 15GB # pgtune wizard 2012-03-02
work_mem = 1GB # pgtune wizard 2012-03-02
wal_buffers = 32MB # pgtune wizard 2012-03-02
checkpoint_segments = 64 # pgtune wizard 2012-03-02
shared_buffers = 5632MB # pgtune wizard 2012-03-02
max_connections = 100 # pgtune wizard 2012-03-02
-----


Attualmente i due db vengono replicati con una procedura, ansicrona tramite shell script:

- dump del db master
- copia dei file sql
- restore su db slave in una tabella d'appoggio
- rinomina la tabella_d'appoggio in tabella originale
- ricrea gl'indici.

La procedura Viene eseguita dopo 40 minuti dalla fine della precedente esecuzione.
Ricreando tabelle ed indici, appena termina,  i tempi di risposta sono accettabili.
Ovviamente questa procedura è da sostituire con una configurazione master slave.

-----

Sulla macchina oltre al DB è in esecuzione Apache (2.2) + php5, ma il collo di bottiglia è Postgres.
Per generare una pagina ci mette 1558ms di cui 1190ms di query postgress.
Quando la stessa query sul Db sincronizzato tramite shell script ci mette la 731ms.

Spero che le informazioni che vi ho fornito siano sufficenti per avere un quadro migliore del problema.

Saluti e Grazie

Nicolas



Da: Gabriele Bartolini <gabriele.bartolini@xxxxxxxxx>
A: postgresql-it <postgresql-it@xxxxxxxxxxxxx>
Cc: Nicolas <lecce07-postgres@xxxxxxxx>
Inviato: Lunedì 2 Aprile 2012 13:12
Oggetto: Re: [postgresql-it] Problemi con sincronizzazione tra due DB.

Ciao,

Il 02/04/12 13:00, Nicolas ha scritto:
I db sono Pg versione 9.2, per la sicronizzazione uso Bucardo 4.0.
Sistema operativo?
La sincronizzazione funziona correttamente ed è "abbastanza veloce"... il problema sono le prestazioni del DB, che in interrogazione calano vertiginosamente !!!

Non ho capito se le prestazioni calano sul master o sullo slave.
Il problema a quanto pare sono gli indici, se ricreo gli indici delle tabelle, le prestazioni ricominciano ad essere "accettabili".
Il problema può dipendere da tante cose:

1) hardware
2) sistema operativo
3) configurazione di PostgreSQL
4) struttura del database
5) workload

A seconda di tutto questo, il problema potrebbe anche non dipendere necessariamente dalla replica.
Secondo voi come potrei risolvere ?
Purtroppo dalle informazioni che hai mandato, ti rispondo che può dipendere da una delle 5 cose scritte sopra (almeno).
avete altri programmi per fare la replica tra due DB ?
Certo: http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling

Altrimenti puoi comprarti un libro su PostgreSQL: http://www.postgresql.org/docs/books/

Il libro nostro di 2ndQuadrant su "Administration Cookbook" ha una sezione specifica sulla replica e copre anche Londiste (il tool utilizzato da Skype).

Ciao,
Gabriele

-- 
 Gabriele Bartolini - 2ndQuadrant Italia
 PostgreSQL Training, Services and Support
 gabriele.bartolini@xxxxxxxxxxxxxx | www.2ndQuadrant.it