|
122 | 122 | 1. [Как терминировать заблокированные одинаковые запросы, образующие очередь?](#как-терминировать-заблокированные-одинаковые-запросы-образующие-очередь) |
123 | 123 | 1. [Как журналировать DDL команды в таблицу БД?](#как-журналировать-ddl-команды-в-таблицу-бд) |
124 | 124 | 1. [Как узнать, какие самые частые действия в таблице совершаются?](#как-узнать-какие-самые-частые-действия-в-таблице-совершаются) |
125 | | - 1. [Как узнать отставание реплики?](#как-узнать-отставание-реплики) |
| 125 | + 1. [Как узнать отставание реплик?](#как-узнать-отставание-реплик) |
126 | 126 | 1. [Как узнать процент достижения своего максимального значения для последовательностей?](#как-узнать-процент-достижения-своего-максимального-значения-для-последовательностей) |
127 | 127 |
|
128 | 128 | ## Получение пользовательских данных |
@@ -2501,9 +2501,29 @@ $ crontab -l |
2501 | 2501 | |Удаление | `D` (>90%) | `d` (>30%) | |
2502 | 2502 |
|
2503 | 2503 |
|
2504 | | -### Как узнать отставание реплики? |
| 2504 | +### Как узнать отставание реплик? |
2505 | 2505 |
|
2506 | | -Запускать на реплике: |
| 2506 | +На мастере: |
| 2507 | +```sql |
| 2508 | +SELECT |
| 2509 | + client_addr, |
| 2510 | + usename AS user, |
| 2511 | + application_name, |
| 2512 | + state, |
| 2513 | + sync_state AS mode, |
| 2514 | + pg_current_wal_lsn() - sent_lsn AS pending_bytes, -- объем данных к отправке, который состоит из всех журнальных записей, накопленных на основном узле, но еще не переданных на реплику |
| 2515 | + sent_lsn - write_lsn AS write_lag_bytes, -- объем данных, отправленных с основного узла, но еще не записанных на стороне реплики |
| 2516 | + write_lsn - flush_lsn AS flush_lag_bytes, -- объем данных, записанных, но еще не синхронизированных на реплике |
| 2517 | + flush_lsn - replay_lsn AS replay_lag_bytes, -- объем данных, готовых для воспроизведения процессом startup |
| 2518 | + pg_current_wal_lsn() - replay_lsn AS total_lag_bytes, |
| 2519 | + write_lag, -- время, прошедшее между локальной синхронизацией журнала и получением уведомления о том, что изменения записаны (но еще не синхронизированы) на реплике |
| 2520 | + flush_lag, -- время, прошедшее между локальной синхронизацией журнала и получением уведомления о том, что изменения записаны и синхронизированы на реплике |
| 2521 | + replay_lag, -- время, прошедшее между локальной синхронизацией журнала и получением уведомления о том, что изменения записаны, синхронизированы и применены |
| 2522 | + reply_time -- отметка времени о получении последнего служебного сообщения от реплики, в котором и содержатся данные по обработке журнала |
| 2523 | +FROM pg_stat_replication; |
| 2524 | +``` |
| 2525 | + |
| 2526 | +На реплике: |
2507 | 2527 | ```sql |
2508 | 2528 | select case when not pg_is_in_recovery() or pg_last_wal_receive_lsn() = pg_last_wal_replay_lsn() then '0'::interval |
2509 | 2529 | else now() - pg_last_xact_replay_timestamp() |
|
0 commit comments