PostgreSQL เชธเช•เซเชฐเชฟเชฏ เชธเชคเซเชฐ เช‡เชคเชฟเชนเชพเชธ - เชจเชตเซเช‚ pgsentinel เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ

เชซเชฐเซเชฎ pgsentinel เชธเชฎเชพเชจ เชจเชพเชฎเชจเซเช‚ pgsentinel เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฌเชนเชพเชฐ เชชเชพเชกเซเชฏเซเช‚ (เช—เซ€เชฅเชฌ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€), เชœเซ‡ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชเชธเช•เซเชฏเซเชเชฒเชฎเชพเช‚ pg_active_session_history เชตเซเชฏเซ‚ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡ - เชธเช•เซเชฐเชฟเชฏ เชธเชคเซเชฐเซ‹เชจเซ‹ เช‡เชคเชฟเชนเชพเชธ (Oracleเชจเชพ v$active_session_history เชœเซ‡เชตเซ‹).

เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช† pg_stat_activity เชจเชพ เชฆเชฐเซ‡เช• เชฌเซ€เชœเชพ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเชนเชคเซเชตเชจเชพ เชฎเซเชฆเซเชฆเชพเช“ เช›เซ‡:

  1. เชฌเชงเซ€ เชธเช‚เชšเชฟเชค เชฎเชพเชนเชฟเชคเซ€ เชซเช•เซเชค RAM เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชตเชชเชฐเชพเชถ เช•เชฐเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชฎเชพเชคเซเชฐเชพ เช›เซ‡เชฒเซเชฒเชพ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡.
  2. queryid เชซเซ€เชฒเซเชก เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - pg_stat_statements เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชฎเชพเช‚เชฅเซ€ เชธเชฎเชพเชจ queryid (เชชเซ‚เชฐเซเชต-เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชœเชฐเซ‚เชฐเซ€).
  3. เชŸเซ‹เชช_เชฒเซ‡เชตเชฒ_เช•เซเชตเซ‡เชฐเซ€ เชซเซ€เชฒเซเชก เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - เช•เซเชตเซ‡เชฐเซ€เชจเซ‹ เชŸเซ‡เช•เซเชธเซเชŸ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชตเชฐเซเชคเชฎเชพเชจ เช•เซเชตเซ‡เชฐเซ€ เชฎเช‚เช—เชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ (pl/pgsql เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚)


pg_active_session_history เชซเซ€เชฒเซเชกเซเชธเชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟ:

      เช•เซ‰เชฒเชฎ | เชชเซเชฐเช•เชพเชฐ ------------------+------------ เชเชถ_เชŸเชพเช‡เชฎ | เชŸเชพเช‡เชฎ เชเซ‹เชจ เชธเชพเชฅเซ‡ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชช เชคเชพเชฐเซ€เช– | oid เชกเซ‡เชŸเชพเชจเซ‡เชฎ | เชŸเซ‡เช•เซเชธเซเชŸ pid | เชชเซ‚เชฐเซเชฃเชพเช‚เช• useysid | oid เชฏเซเชเชจเซ‡เชฎ | เชŸเซ‡เช•เซเชธเซเชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ_เชจเชพเชฎ | เชŸเซ‡เช•เซเชธเซเชŸ client_addr | เชŸเซ‡เช•เซเชธเซเชŸ เช•เซเชฒเชพเชฏเชจเซเชŸ_เชนเซ‹เชธเซเชŸเชจเชพเชฎ | เชŸเซ‡เช•เซเชธเซเชŸ เช•เซเชฒเชพเชฏเช‚เชŸ_เชชเซ‹เชฐเซเชŸ | เชชเซ‚เชฐเซเชฃเชพเช‚เช• เชฌเซ‡เช•เชเชจเซเชก_เชธเซเชŸเชพเชฐเซเชŸ | เชŸเชพเช‡เชฎ เชเซ‹เชจ เชธเชพเชฅเซ‡ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชช xact_start | เชŸเชพเช‡เชฎ เชเซ‹เชจ เชธเชพเชฅเซ‡ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชช เช•เซเชตเซ‡เชฐเซ€_เชธเซเชŸเชพเชฐเซเชŸ | เชŸเชพเช‡เชฎ เชเซ‹เชจ เชธเซเชŸเซ‡เชŸ_เชšเซ‡เชจเซเชœ เชธเชพเชฅเซ‡ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชช | เชŸเชพเช‡เชฎ เชเซ‹เชจ เชธเชพเชฅเซ‡ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชช wait_event_type | เชŸเซ‡เช•เซเชธเซเชŸ wait_event | เชŸเซ‡เช•เซเชธเซเชŸ เชธเซเชŸเซ‡เชŸ | เชŸเซ‡เช•เซเชธเซเชŸ backend_xid | xid backend_xmin | xid top_level_query | เชŸเซ‡เช•เซเชธเซเชŸ เช•เซเชตเซ‡เชฐเซ€ | เชŸเซ‡เช•เซเชธเซเชŸ เช•เซเชตเซ‡เชฐเซ€เช†เชˆเชกเซ€ | bigint backend_type | เชŸเซ‡เช•เซเชธเซเชŸ                     

เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชนเชœเซ เชธเซเชงเซ€ เช•เซ‹เชˆ เชคเซˆเชฏเชพเชฐ เชชเซ‡เช•เซ‡เชœ เชจเชฅเซ€. เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เช…เชจเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชœเชพเชคเซ‡ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฆเชฐเช–เชพเชธเซเชค เช›เซ‡. เชชเซเชฐเชฅเชฎ เชคเชฎเชพเชฐเซ‡ เชคเชฎเชพเชฐเชพ เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡ "devel" เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ PATH เชตเซ‡เชฐเซ€เชเชฌเชฒเชฎเชพเช‚ pg_config เชฎเชพเชŸเซ‡ เชชเชพเชฅ เชธเซ‡เชŸ เช•เชฐเซ‹. เช…เชฎเซ‡ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช:

cd pgsentinel/src
เชฌเชจเชพเชตเชตเชพ
เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹

postgres.conf เชฎเชพเช‚ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช‰เชฎเซ‡เชฐเซ‹:

shared_preload_libraries = 'pg_stat_statements,pgsentinel'
เชŸเซเชฐเซ‡เช•_เชเช•เซเชŸเชฟเชตเชฟเชŸเซ€_เช•เซเชตเซ‡เชฐเซ€_เชธเชพเช‡เช = 2048
pg_stat_statements.track = เชฌเชงเชพ

# เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฐเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เชคเชพเชœเซ‡เชคเชฐเชจเชพ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ
pgsentinel_ash.max_entries = 10000

PostgreSQL เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเซ‹เชก เช•เชฐเซ‹ เช…เชจเซ‡ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฌเชจเชพเชตเซ‹:

เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ pgsentinel เชฌเชจเชพเชตเซ‹;

เชธเช‚เชšเชฟเชค เชฎเชพเชนเชฟเชคเซ€ เช…เชฎเชจเซ‡ เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เชœเชตเชพเชฌ เช†เชชเชตเชพ เชฆเซ‡ เช›เซ‡ เชœเซ‡เชฎ เช•เซ‡:

  • เชธเชคเซเชฐเซ‹เช เชธเซŒเชฅเซ€ เชตเชงเซ เชธเชฎเชฏ เช•เชˆ เช…เชชเซ‡เช•เซเชทเชพเช“ เชชเชฐ เชตเชฟเชคเชพเชตเซเชฏเซ‹?
  • เช•เชฏเชพ เชธเชคเซเชฐเซ‹ เชธเซŒเชฅเซ€ เชตเชงเซ เชธเช•เซเชฐเชฟเชฏ เชนเชคเชพ?
  • เช•เชˆ เชตเชฟเชจเช‚เชคเซ€เช“ เชธเซŒเชฅเซ€ เชตเชงเซ เชธเช•เซเชฐเชฟเชฏ เชนเชคเซ€?

เชคเชฎเซ‡, เช…เชฒเชฌเชคเซเชค, เชเชธเช•เซเชฏเซเชเชฒ เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เชœเชตเชพเชฌเซ‹ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เชฎเชพเช‰เชธ เชธเชพเชฅเซ‡ เชฐเชธเชจเชพ เชธเชฎเชฏ เช…เช‚เชคเชฐเชพเชฒเซ‹เชจเซ‡ เชนเชพเช‡เชฒเชพเช‡เชŸ เช•เชฐเซ€เชจเซ‡, เชšเชพเชฐเซเชŸ เชชเชฐ เช†เชจเซ‡ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เชœเซ‹เชตเซเช‚ เชตเชงเซ เช…เชจเซเช•เซ‚เชณ เช›เซ‡. เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชฎเชซเชค เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชธเชพเชฅเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ PASH เชฆเชฐเซเชถเช• (เชคเชฎเซ‡ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชเช•เชคเซเชฐเชฟเชค เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชธเชฒเชพเชน).

เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชตเช–เชคเซ‡, PASH-เชตเซเชฏเซ‚เช…เชฐ (เชธเช‚เชธเซเช•เชฐเชฃ 0.4.0 เชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡) pg_active_session_history เชตเซเชฏเซ‚เชจเซ€ เชนเชพเชœเชฐเซ€ เชฎเชพเชŸเซ‡ เชคเชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‹ เชคเซ‡ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชธเชฎเช—เซเชฐ เชธเช‚เชšเชฟเชค เช‡เชคเชฟเชนเชพเชธ เชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชจเชตเชพ เช†เชตเชจเชพเชฐเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชตเชพเช‚เชšเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ‡ เช›เซ‡, เชฆเชฐ 15 เชธเซ‡เช•เชจเซเชกเซ‡ เช—เซเชฐเชพเชซ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡.

PostgreSQL เชธเช•เซเชฐเชฟเชฏ เชธเชคเซเชฐ เช‡เชคเชฟเชนเชพเชธ - เชจเชตเซเช‚ pgsentinel เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹