PostgreSQL แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ - แƒแƒฎแƒแƒšแƒ˜ pgsentinel แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ

แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ pgsentinel แƒ’แƒแƒ›แƒแƒฃแƒจแƒ•แƒ แƒแƒ›แƒแƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก pgsentinel แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ (github แƒกแƒแƒชแƒแƒ•แƒ˜), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก pg_active_session_history แƒฎแƒ”แƒ“แƒก PostgreSQL - แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒแƒก (แƒแƒ แƒแƒ™แƒšแƒ˜แƒก v$active_session_history-แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜).

แƒแƒ แƒกแƒ”แƒ‘แƒ˜แƒ—แƒแƒ“, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฌแƒแƒ›-แƒฌแƒแƒ›แƒ˜แƒก แƒ™แƒแƒ“แƒ แƒ”แƒ‘แƒ˜ pg_stat_activity-แƒ“แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ”แƒ‘แƒ˜:

  1. แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ’แƒ แƒแƒ•แƒ˜แƒšแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ RAM-แƒจแƒ˜, แƒฎแƒแƒšแƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ แƒ”แƒ’แƒฃแƒšแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ‘แƒแƒšแƒ แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ—.
  2. แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ queryid แƒ•แƒ”แƒšแƒ˜ - แƒ˜แƒ’แƒ˜แƒ•แƒ” queryid pg_stat_statements แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ (แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ แƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ).
  3. แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ top_level_query แƒ•แƒ”แƒšแƒ˜ - แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜, แƒกแƒแƒ˜แƒ“แƒแƒœแƒแƒช แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ (แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— pl/pgsql)


pg_active_session_history แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ:

      แƒกแƒ•แƒ”แƒขแƒ˜ | แƒขแƒ˜แƒžแƒ˜ ------------------+------------------------ แƒœแƒแƒชแƒแƒ แƒ˜_แƒ“แƒ แƒ | แƒ“แƒ แƒแƒ˜แƒก แƒจแƒขแƒแƒ›แƒžแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒกแƒแƒ แƒขแƒงแƒ”แƒšแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ datid | oid datename | แƒขแƒ”แƒฅแƒกแƒขแƒ˜ pid | แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜ useysid | oid แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ | แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก_แƒกแƒแƒฎแƒ”แƒšแƒ˜ | text client_addr | text client_hostname | text client_port | แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜ backend_start | แƒ“แƒ แƒแƒ˜แƒก แƒจแƒขแƒแƒ›แƒžแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒกแƒแƒ แƒขแƒงแƒ”แƒšแƒ—แƒแƒœ xact_start | แƒ“แƒ แƒแƒ˜แƒก แƒจแƒขแƒแƒ›แƒžแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒ–แƒแƒœแƒ˜แƒก query_start | แƒ“แƒ แƒแƒ˜แƒก แƒจแƒขแƒแƒ›แƒžแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒกแƒแƒ แƒขแƒงแƒ”แƒšแƒ˜แƒก state_change | แƒ“แƒ แƒแƒ˜แƒก แƒจแƒขแƒแƒ›แƒžแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒกแƒแƒ แƒขแƒงแƒ”แƒšแƒ˜แƒก wait_event_type | แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒจแƒ˜_แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ | แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ | แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก backend_xid | xid backend_xmin | xid top_level_query | แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ | แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ | bigint backend_type | แƒขแƒ”แƒฅแƒกแƒขแƒ˜                     

แƒฏแƒ”แƒ  แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒ–แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒ˜แƒ–แƒแƒœแƒจแƒ”แƒฌแƒแƒœแƒ˜แƒšแƒ˜แƒ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ›แƒแƒแƒฌแƒงแƒแƒ— แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ. แƒ—แƒฅแƒ•แƒ”แƒœ แƒฏแƒ”แƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— "แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก" แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒ’แƒ–แƒ pg_config PATH แƒชแƒ•แƒšแƒแƒ“แƒจแƒ˜. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ—:

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-แƒ›แƒแƒงแƒฃแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ (แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒ แƒ”แƒšแƒ˜แƒ–แƒ”แƒ‘แƒ˜).

แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒกแƒแƒก, PASH-Viewer (แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ“แƒแƒœ 0.4.0) แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก pg_active_session_history แƒฎแƒ”แƒ“แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒแƒก แƒ“แƒ แƒ—แƒฃ แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก, แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒก แƒ›แƒ˜แƒกแƒ’แƒแƒœ แƒ›แƒ—แƒ”แƒš แƒ“แƒแƒ’แƒ แƒแƒ•แƒ˜แƒš แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒแƒก แƒ“แƒ แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒก แƒแƒฎแƒแƒšแƒ˜ แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก, แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒแƒก แƒงแƒแƒ•แƒ”แƒš 15 แƒฌแƒแƒ›แƒจแƒ˜ แƒ”แƒ แƒ—แƒฎแƒ”แƒš.

PostgreSQL แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ - แƒแƒฎแƒแƒšแƒ˜ pgsentinel แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ