Может ли кто-нибудь предложить шаги для проверки состояния репликации pgsql и когда сказать, что репликация не происходит должным образом?
Мы используем потоковую репликацию с pgsql9.0 и pgsql9.4.
Спасибо.
Может ли кто-нибудь предложить шаги для проверки состояния репликации pgsql и когда сказать, что репликация не происходит должным образом?
Мы используем потоковую репликацию с pgsql9.0 и pgsql9.4.
Спасибо.
Обычно я использую следующие SQL-запросы для проверки состояния Postgres v11.
На мастере:
select * from pg_stat_replication;
На реплике (потоковая репликация в моем случае):
select * from pg_stat_wal_receiver;
;
на \x\g\x
.
- person x-yuri; 24.10.2020
На вашем мастере pg_stat_replication предоставляет данные о текущей репликации:
select client_addr, state, sent_location, write_location,
flush_location, replay_location from pg_stat_replication;
В postgresql v10:
select client_addr, state, sent_lsn, write_lsn,
flush_lsn, replay_lsn from pg_stat_replication;
Показать статус репликации в PostgreSQL
postgres=# select usename,application_name,client_addr,backend_start,state,sync_state from pg_stat_replication ;
usename | application_name | client_addr | backend_start | state | sync_state
------------+------------------+----------------+-------------------------------+-----------+------------
replicator | walreceiver | 192.168.10.132 | 2018-07-06 06:12:20.786918+03 | streaming | async
(1 row)
postgres=# select pg_is_in_recovery();
pg_is_in_recovery
-------------------
t
(1 row)
postgres=# select pg_last_xlog_receive_location();
pg_last_xlog_receive_location
-------------------------------
0/540C1DB8
postgres=# select pg_last_xlog_replay_location();
pg_last_xlog_replay_location
------------------------------
0/540C1DB8
(1 row)
postgres=# 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;
log_delay
-----------
0
(1 row)
SELECT pg_last_xact_replay_timestamp();
дает полезную информацию!
- person user39950; 12.07.2018
select pg_last_xlog_receive_location(), pg_last_xlog_replay_location(), pg_last_xact_replay_timestamp(), 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;
- person Sergey Nemchinov; 14.04.2020