Portál AbcLinuxu, 10. května 2025 20:40

Dotaz: Jak správně nastavit Postgres Streaming replication

16.1.2019 11:12 majales | skóre: 29 | blog: Majales
Jak správně nastavit Postgres Streaming replication
Přečteno: 1309×
Odpovědět | Admin
Přílohy:
Zdravím, Provozuji pár postgresů v konfuguraci master -> Streaming replication slave, ale nejsem si jistý zda je vše nastaveno správně.

Pokud se na slave zeptám opakovaně na "SELECT CASE WHEN pg_last_xlog_receive_location() = pg_last_xlog_replay_location() THEN 0 ELSE EXTRACT (EPOCH FROM now() - pg_last_xact_replay_timestamp()) END AS log_delay;" dostanu toto:

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 6.465722
(1 row)

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 0.905263
(1 row)

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 2.105338
(1 row)

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 3.225638
(1 row)

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 4.210284
(1 row)

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 5.066044
(1 row)

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 5.930428
(1 row)

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 6.708723
(1 row)

postgres=# SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag;
 time_lag 
----------
 0.068862
(1 row)
V příloze je pak jal to vypadá v monitoringu. V postgresql.conf mám ( na slave) na konci nastaveno toto.

   
    wal_level = hot_standby
    full_page_writes = on
    wal_log_hints = on
    max_wal_senders = 6
    max_replication_slots = 6
    hot_standby = on
    hot_standby_feedback = on

Otázkou tedy je zda je to nastaveno správně a proč dochází k lagu aplikování WAL na slave. Neuměl by mi někdo poradit zda je to takto správně, a pokud není, tak jak to nastavit?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

okbob avatar 16.1.2019 11:46 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Jak správně nastavit Postgres Streaming replication
Odpovědět | | Sbalit | Link | Blokovat | Admin
A je tam nějaká aktivita na masteru? viz https://www.postgresql.org/message-id/CADp-Sm5Gevh2s2as%2BOmm2HEYoP26LNnHHZ%2BMKYKKQE%3Dnn_BZ%2Bg%40mail.gmail.com.

Uvedený vzorec funguje, pouze tehdy, pokud se z masteru něco posílá. Pokud master nemá nutkání něco zapsat do transakčního logu, tak narůstá takto spočítaný lag

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.