PostgreSQL เจธเจฐเจ—เจฐเจฎ เจธเฉˆเจธเจผเจจ เจ‡เจคเจฟเจนเจพเจธ - เจจเจตเจพเจ‚ pgsentinel เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ

เจซเจฐเจฎ pgsentinel เจ‰เจธเฉ‡ เจจเจพเจฎ เจฆเจพ pgsentinel เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ (github เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€), เจœเฉ‹ เจชเฉ‹เจธเจŸเจ—เจฐเฉ‡เจเจธเจ•เจฏเฉ‚เจเจฒ เจตเจฟเฉฑเจš pg_active_session_history เจฆเฉเจฐเจฟเจธเจผ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ โ€” เจธเจฐเจ—เจฐเจฎ เจธเฉˆเจธเจผเจจเจพเจ‚ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ (เจ“เจฐเฉ‡เจ•เจฒ เจฆเฉ‡ v$active_session_history เจฆเฉ‡ เจธเจฎเจพเจจ)เฅค

เจœเจผเจฐเฉ‚เจฐเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน pg_stat_activity เจคเฉ‹เจ‚ เจฆเฉ‚เจœเฉ‡-เจฆเจฐ-เจธเฉˆเจ•เจฟเฉฐเจก เจธเจจเฉˆเจชเจธเจผเจพเจŸ เจนเจจ, เจชเจฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเฉเจ•เจคเฉ‡ เจนเจจ:

  1. เจธเจพเจฐเฉ€ เจ‡เจ•เฉฑเจคเจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ•เฉ‡เจตเจฒ RAM เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจ–เจชเจค เจ•เฉ€เจคเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจชเจฟเจ›เจฒเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเฉเจ†เจฐเจพ เจจเจฟเจฏเฉฐเจคเฉเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค
  2. queryid เจซเฉ€เจฒเจก เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ - pg_stat_statements เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจคเฉ‹เจ‚ เจ‰เจนเฉ€ queryid (เจชเฉ‚เจฐเจต-เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ)เฅค
  3. top_level_query เจซเฉ€เจฒเจก เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ - เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจŸเฉˆเจ•เจธเจŸ เจœเจฟเจธ เจคเฉ‹เจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€ (เจœเฉ‡เจ•เจฐ pl/pgsql เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹)


pg_active_session_history เจ–เฉ‡เจคเจฐเจพเจ‚ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€:

      เจ•เจพเจฒเจฎ | เจ•เจฟเจธเจฎ ------------------+------------ เจเจธเจผ_เจŸเจพเจˆเจฎ | เจŸเจพเจˆเจฎ เจœเจผเฉ‹เจจ datid เจจเจพเจฒ เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจช | oid datename | เจŸเฉˆเจ•เจธเจŸ pid | เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• useysid | oid เจตเจฐเจคเฉ‹เจ‚เจจเจพเจฎ | เจŸเฉˆเจ•เจธเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ_เจจเจพเจฎ | เจŸเฉˆเจ•เจธเจŸ client_addr | เจŸเฉˆเจ•เจธเจŸ เจ•เจฒเจพเจ‡เฉฐเจŸ_เจนเฉ‹เจธเจŸเจจเจพเจฎ | เจŸเฉˆเจ•เจธเจŸ เจ•เจฒเจพเจ‡เฉฐเจŸ_เจชเฉ‹เจฐเจŸ | เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• เจฌเฉˆเจ•เจเจ‚เจก_เจธเจŸเจพเจฐเจŸ | เจŸเจพเจˆเจฎ เจœเจผเฉ‹เจจ xact_start | เจฆเฉ‡ เจจเจพเจฒ เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจช เจŸเจพเจˆเจฎ เจœเจผเฉ‹เจจ query_start | เจจเจพเจฒ เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจช เจŸเจพเจˆเจฎ เจœเจผเฉ‹เจจ state_change เจฆเฉ‡ เจจเจพเจฒ เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจช | เจธเจฎเจพเจ‚ เจœเจผเฉ‹เจจ เจ‰เจกเฉ€เจ•_เจˆเจตเฉˆเจ‚เจŸ_เจŸเจพเจˆเจช | เจฆเฉ‡ เจจเจพเจฒ เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจช เจŸเฉˆเจ•เจธเจŸ wait_event | เจŸเฉˆเจ•เจธเจŸ เจธเจŸเฉ‡เจŸ | เจŸเฉˆเจ•เจธเจŸ backend_xid | xid backend_xmin | xid top_level_query | เจŸเฉˆเจ•เจธเจŸ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› | เจŸเฉˆเจ•เจธเจŸ queryid | bigint backend_type | เจŸเฉˆเจ•เจธเจŸ                     

เจ…เจœเฉ‡ เจคเฉฑเจ• เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฒเจˆ เจ•เฉ‹เจˆ เจคเจฟเจ†เจฐ เจชเฉˆเจ•เฉ‡เจœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจ…เจคเฉ‡ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจฆเจพ เจธเฉเจเจพเจ… เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจ†เจชเจฃเฉ‡ เจธเจฐเจตเจฐ เจฒเจˆ โ€œdevelโ€ เจชเฉˆเจ•เฉ‡เจœ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ PATH เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเจฟเฉฑเจš pg_config เจฒเจˆ เจฎเจพเจฐเจ— เจธเฉˆเฉฑเจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

cd pgsentinel/src
เจ•เจฐ
เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹

postgres.conf เจตเจฟเฉฑเจš เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹:

shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = เจธเจพเจฐเฉ‡

# เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เฉ‡ เจคเจพเจœเจผเจพ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€
pgsentinel_ash.max_entries = 10000

PostgreSQL เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจฌเจฃเจพเจ“:

เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ pgsentinel เจฌเจฃเจพเจ“;

เจ‡เจ•เฉฑเจคเจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจพเจจเฉ‚เฉฐ เจธเจตเจพเจฒเจพเจ‚ เจฆเฉ‡ เจœเจตเจพเจฌ เจฆเฉ‡เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ:

  • เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจนเฉœเฉ‡ เจ‰เจกเฉ€เจ• เจธเฉˆเจธเจผเจจเจพเจ‚ 'เจคเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจฎเจพเจ‚ เจฌเจฟเจคเจพเจ‡เจ†?
  • เจ•เจฟเจนเฉœเฉ‡ เจธเฉˆเจธเจผเจจ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจฐเจ—เจฐเจฎ เจธเจจ?
  • เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจฐเจ—เจฐเจฎ เจธเจจ?

เจคเฉเจธเฉ€เจ‚, เจฌเฉ‡เจธเจผเฉฑเจ•, SQL เจธเจตเจพเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจนเจจเจพเจ‚ เจธเจตเจพเจฒเจพเจ‚ เจฆเฉ‡ เจœเจตเจพเจฌ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจฎเจพเจŠเจธ เจจเจพเจฒ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจ…เฉฐเจคเจฐเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจœเจพเจ—เจฐ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจ—เฉเจฐเจพเจซ 'เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ—เจค เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เจฃเจพ เจตเจงเฉ‡เจฐเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจ‡เฉฑเจ• เจฎเฉเจซเจค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเจพเจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจชเจพเจธเจผ-เจฆเจฐเจธเจผเจ• (เจคเฉเจธเฉ€เจ‚ เจญเจพเจ— เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจคเจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจฌเจพเจˆเจจเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจฐเฉ€เจฒเฉ€เจœเจผ).

เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, PASH- Viewer (เจตเจฐเจœเจจ 0.4.0 เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ) pg_active_session_history เจตเจฟเจŠ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ‡เจน เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจ‡เจธ เจคเฉ‹เจ‚ เจชเฉ‚เจฐเจพ เจธเฉฐเจšเจฟเจค เจ‡เจคเจฟเจนเจพเจธ เจฒเฉ‹เจก เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจจเจตเฉ‡เจ‚ เจ†เจ‰เจฃ เจตเจพเจฒเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ, เจนเจฐ 15 เจธเจ•เจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจ—เฉเจฐเจพเจซ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

PostgreSQL เจธเจฐเจ—เจฐเจฎ เจธเฉˆเจธเจผเจจ เจ‡เจคเจฟเจนเจพเจธ - เจจเจตเจพเจ‚ pgsentinel เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹