[Pgpool-general] Pgpool-general Digest, Vol 63, Issue 25

Muhammad Isnaini moch_isnaini at yahoo.com
Sat Feb 27 16:09:43 UTC 2010


> Thanks for answering Tatsuo,
> The test I did was:
> 
> 1) for loop inserting 50 values to a table.
> 2) stop one of the servers (in that moment the client in
> the loop gives the
> error I commented)
> 3) The online backup starts and works perfectly.
> 4) I look for all the values in the table, and, in fact,
> there is one
> missing value.
> 
> I see is not a big problem, and more now that I just lose
> one insert (not
> 7)(still if would be preferable not to). As an input, still
> if maybe you
> already know that, I think the problem is the health check.
> I think that,
> this problem occurs when the client is trying to insert a
> value to pgpool,
> and thisone has the two nodes with status 2, but one of
> them it is already
> down,... then the insert is lost. I suppose it is because
> the health check
> is done every second, and my inserts too, so, if my insert
> arrives before
> the health check (that makes pgpool correct the node to
> status 3) it is
> lost.
> 
> Maybe would be good if pgpool would send the insert to the
> nodes still up,
> but, if it is difficult, maybe it would be possible to
> reduce the minium
> time of the health checks to something "close to zero".
> 
> I hope this feedback could help you to make it yet better
> this projet.
> 
> Anyway, in my particular case, now, is more problematic the
> "unplug wire"
> problem,... wich makes pgpool get crazy (in my case), and
> stop receiving
> queries forever. I discovered the "SYN_SENT" thing, but,
> reduceing the
> number could make some other aplications (like ssh) stop
> working properly.
> 
> Thanks!

I propose a solution model for this problem. example pgpool have 3 ( or more ) master backends. first master call backend "A", second call backend "B", third call backend "C".
default start primary master should backend "A".
pgpool receive after insert / update / delete , pgpool should :

1. send to master ( backend "A" ).
2. if step 1 fail , mark backend "A" offline pgpool should save a sql command to disk on direcetory spesific for backend "A". change primary master to backend "B".
3. send to backend "C" of course except backend "A", backend "B".

on every process to backend should check save log. in order serialize content sql that ini log file should send before sending sql that come later.

sorry for poor english.
thank you.


      


More information about the Pgpool-general mailing list