phoboz
Goto Top

Postgresql 9.6 - Synchronus Commit funktioniert nicht

Hi,

folgendes Setup:
habe eine Streaming Replication eingerichtet:

postgresql.conf parameter:
tcp_keepalives_idle = 60
tcp_keepalives_interval = 30
tcp_keepalives_count = 5
wal_level = hot_standby
archive_mode = on
archive_command = '/bin/true'  
hot_standby = on
wal_keep_segments = <100>
max_wal_senders = <2>

synchronus_commit = remote_apply
synchronous_standby_names = '*'  

Habe also ein Master und einen Slave Server und wollte nun ausprobieren, ob die beiden Datenbanken beim Insert in eine Tabelle auf dem Master auch immer gleich bleiben. Habe von meinem Test erwartet das man immer den selbe Count der Reocords beim Befüllen in einer Tabelle erhält, da ich es so verstanden hab, das erst commited wird, wenn der commit auf dem SLAVE server abgeschlossen ist:

Befülle die Tabelle auf dem Master:

while true; do nohup su - postgres -c 'while true;do psql -c "insert into test (test)  VALUES (generate_series(1,1000));" -d test  

Überprüfen mit diesem Skript ob der Count der beiden Tabelle übereinstimmt wenn ja dann true wenn nein dann false:

trigger_master_slave.sh
MAST_VALUE=$(sh /tmp/check_master.sh &  PIDMAST=$!)
SLAVE_VALUE=$(sh /tmp/check_slave.sh &  PIDSLAV=$!)
wait $PIDMAST
wait $PIDSLAV
if [ $MAST_VALUE != $SLAVE_VALUE ]; then
        echo "false"  
else
        echo "true"  
fi

Hier die beiden anderen Skripts die ich aufrufe:
/tmp/check_master.sh
psql -h 192.168.2.2-d test -U postgres -c "SELECT COUNT(ID) FROM test;" | head -n 3 | tail -n 1  
/tmp/check_slave.sh
psql -h 192.168.2.3 -d test -U postgres -c "SELECT COUNT(ID) FROM test;" | head -n 3 | tail -n 1  

Wenn ich nun das skript ausführe, bekomme ich leider sehr viele false zurück, da der count auf dem Master höher ist:
while true; do ./trigger_master_slave.sh; sleep 0.03; done

Kann mir hier jmd weiterhelfen?

Content-ID: 328652

Url: https://administrator.de/contentid/328652

Ausgedruckt am: 24.11.2024 um 19:11 Uhr