PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Monitoring de replication (Master / Slave)

Technique - interfaces | Monitoring de replication (Master / Slave)

Par mxltx le 12/08/2008 - 20:01

Bonjour,

Je souhaite monitorer une replication (Master/Slave) avec postgres 8.3.3 et slony 1.2.14.

Je cherche une methode a la mysql (show slave status\G;), mais apparement ca n'existe pas.
J'ai regardé dans les tables _replication.sl_* (_replication.sl_node; _replication.sl_status; _replication.sl_log_status; etc ...)

Lorsque ma replication est en cours j'obtiens ces valeurs

sagem=# select * from _replication.sl_node;
no_id | no_active | no_comment | no_spool
-------+-----------+----------------------------------+----------
1 | t | Node 1 - sagem@172.16.1.93 | f
2 | t | Node 2 - sagem_slave@172.16.1.94 | f

sagem=# select * from _replication.sl_status;
st_origin | st_received | st_last_event | st_last_event_ts | st_last_received | st_last_received_ts | st_last_received_event_ts | st_lag_num_events | st_lag_time
-----------+-------------+---------------+----------------------------+------------------+----------------------------+----------------------------
+-------------------+----------------
1 | 2 | 10872 | 2008-08-12 18:17:15.883313 | 10872 | 2008-08-12 18:17:21.004528 | 2008-08-12 18:17:15.883313 | 0 | 00:00:08.10195
(1 row)

sagem=# select * from _replication.sl_log_status;
sequence_name | last_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called
---------------+------------+--------------+-----------+-----------+-------------+---------+-----------+-----------
sl_log_status | 0 | 1 | 3 | 0 | 1 | 0 | f | t
(1 row)

sagem=# select * from _replication.sl_subscribe;
sub_set | sub_provider | sub_receiver | sub_forward | sub_active
---------+--------------+--------------+-------------+------------
1 | 1 | 2 | t | t
(1 row)

sagem=# select * from _replication.sl_nodelock_nl_conncnt_seq;
sequence_name | last_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called
----------------------------+------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------
sl_nodelock_nl_conncnt_seq | 12 | 1 | 9223372036854775807 | 1 | 1 | 32 | f | t
(1 row)

Et lorsque ma replication est broken (slon_kill), j'obtiens les memes valeurs. (mis a part pour le select * from _replication.sl_status; qui est different pour le time).

Dans les scripts fournis avec slony, j'ai trouver des choses interessentes comme cette requetes SQL :

select case
when ttlcount = okcount then 'OK - '||okcount||' nodes in sync'
else 'ERROR - '||ttlcount-okcount||' of '||ttlcount||' nodes not in sync'
end as syncstatus
from (
-- determine total active receivers
select (select count(distinct sub_receiver)
from _replication.sl_subscribe
where sub_active = true) as ttlcount,
(
-- determine active nodes syncing within 10 seconds
select count(*) from (
select st_received, st_last_received_ts - st_last_event_ts as cfmdelay
from _replication.sl_status
where st_received in (
select distinct sub_receiver
from _replication.sl_subscribe
where sub_active = true
)
) as t1
where cfmdelay < interval '10 secs') as okcount
) as t2;

Qui me retourne :

syncstatus
----------------------
OK - 1 nodes in sync
(1 ligne)

meme lorsque ma replication n'est plus active (j'entend par la que le cluster est bien initialisé avec les set qui vont bien, mais que le process slon n'est pas starté).

Par contre j'ai remarqué que dans phpPgAdmin 4.2 dans la partie Noeuds, il y avait un "statut" sur la synchro (Etat ou Hors synchro):
Nom Statut Actions Commentaire
Node 1 - sagem@172.16.1.93 État Supprimer Node 1 - sagem@172.16.1.93
Node 2 - sagem_slave@172.16.1.94 État Supprimer Node 2 - sagem_slave@172.16.1.94

Bref, comment faire pour avoir un apercu sur la synchro en temps réel ??
Dans quelle table puis-je retrouver les informations necessaires ??
Faut-il plutot fouiller sur le master ou le slave pour retrouver ces informations ??

Si quelqu'un a une idée...

Cdt,
Mxltx

© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.