Re: [HACKERS] make async slave to wait for lsn to be replayed
От | Ivan Kartyshov |
---|---|
Тема | Re: [HACKERS] make async slave to wait for lsn to be replayed |
Дата | |
Msg-id | aa550b92-792d-890e-9ed1-c64489ebffcd@postgrespro.ru обсуждение исходный текст |
Ответ на | Re: [HACKERS] make async slave to wait for lsn to be replayed (David Steele <david@pgmasters.net>) |
Ответы |
Re: [HACKERS] make async slave to wait for lsn to be replayed
|
Список | pgsql-hackers |
Rebase done. Meanwhile I made some more changes. Changes ======= 1) WAITLSN is now implemented as an extension called "pg_waitlsn" 2) Call new hook "lsn_updated_hook" right after xact_redo_commit (xlog.c) 3) Corresponding functions: pg_waitlsn('0/693FF800', 10000) - wait 10 seconds pg_waitlsn_infinite('0/693FF800') - for infinite wait pg_waitlsn_no_wait('0/693FF800') - once check if LSN was replayed or not. 4) Add two GUCs which help tuning influence on StartupXLOG: count_waitlsn (denominator to check not each LSN) int count_waitlsn = 10; interval_waitlsn (Interval in milliseconds to additional LSN check) int interval_waitlsn = 100; 5) Optimize loop that set latches. How to use it ========== Master: 1) Make "wal_level = replica" Slave: 2) Add shared_preload_libraries = 'pg_waitlsn' hot_standby = on (in postgresql.conf) 3) Create extension pg_waitlsn; 4) And in hot_standby you can wait for LSN (pgsleep), when LSN will replayed on slave pg_waitlsn will release select pg_waitlsn(‘LSN’ [, timeout in ms]); select pg_waitlsn_infinite(‘LSN’); select pg_waitlsn_no_wait(‘LSN’); #Wait until LSN 0/303EC60 will be replayed, or 10 second passed. select pg_waitlsn(‘0/303EC60’, 10000); #Or same without timeout. select pg_waitlsn(‘0/303EC60’); select pg_waitlsn_infinite('0/693FF800'); #To check if LSN is replayed can be used. select pg_waitlsn_no_wait('0/693FF800'); Notice: select pg_waitlsn will release on PostmasterDeath or Interruption events if they come earlier then target LSN or timeout. -- Ivan Kartyshov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Вложения
В списке pgsql-hackers по дате отправления: