sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL用のpt-pg-summaryPerconaToolkitの使用

    Percona Toolkitは、Perconaによって開発された強力で無料のオープンソース製品です。これは、さまざまなMySQL、MongoDB、PostgreSQL、および一般に複雑すぎて手動で実行できないシステムタスクを実行できるようにするコマンドラインツールのコレクションです。これは、MySQL、MySQL、MariaDB、PostgreSQL、MongoDB、およびMongoDB用のPerconaサーバー用のPerconaサーバーをサポートします。

    このブログでは、Percona Toolkitのインストール方法と、最近PerconaToolkitパッケージに追加されたpt-pg-summaryという新しいツールの使用方法を紹介します。

    Perconaツールキットのインストール

    まず、pt-pg-summaryを使用できるようにPerconaToolkitをインストールする方法を見てみましょう。この場合、CentOS7とPostgreSQL12を使用します。

    Perconaリポジトリをインストールします:

    $ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

    リポジトリをインストールすると、percona-toolkitパッケージをインストールできるようになります。

    $ yum install percona-toolkit

    これで、正しいパラメーターを使用して実行する必要があります。

    $ pt-pg-summary --help
    
    usage: pt-pg-summary [<flags>]
    
    Percona Toolkit - PostgreSQL Summary
    
    Flags:
    
          --help                     Show context-sensitive help (also try --help-long and --help-man).
    
          --version                  Show application version.
    
          --databases=DATABASES ...  Summarize this comma-separated list of databases. All if not specified
    
      -h, --host=HOST                Host to connect to
    
      -W, --password=PASSWORD        Password to use when connecting
    
      -p, --port=PORT                Port number to use for connection
    
          --sleep=10                 Seconds to sleep when gathering status counters
    
      -U, --username=USERNAME        User for login if not current user
    
          --disable-ssl              Diable SSL for the connection
    
          --verbose                  Show verbose log
    
          --debug                    Show debug information in the logs

    Perconaツールキットの実行

    このツールを実行すると、次のカテゴリでグループ化された出力が表示されます。

      データベースポートとData_Directory 表スペースのリスト 奴隷とマスターとの遅れ クラスター情報 データベース インデックスキャッシュヒット率 テーブルキャッシュヒット率 クラスター全体のWait_eventsのリスト-すべてのデータベース
    • --all-databasesに接続されているユーザーとclient_addrまたはclient_hostnameのリスト
    • 10秒後にカウンターが異なります
    • データベースごとのテーブルアクセス インスタンス設定 起動コマンドを処理します

    では、PostgreSQLインスタンスで実行して、例を見てみましょう。

    $ pt-pg-summary -hlocalhost -p5432 -Uadmindb

    最初のアクションは、PostgreSQLサーバーから情報を収集することです:

    INFO[0000] Connecting to the database server using: host=localhost port=5432 user=admindb sslmode=disable dbname=postgres
    
    INFO[0000] Connection OK
    
    INFO[0000] Detected PostgreSQL version: 12.0.5
    
    INFO[0000] Getting global information
    
    INFO[0000] Collecting global counters (1st pass)
    
    INFO[0000] Collecting Cluster information
    
    INFO[0000] Waiting 10 seconds to read  counters
    
    INFO[0000] Collecting Connected Clients information
    
    INFO[0000] Collecting Database Wait Events information
    
    INFO[0000] Collecting Global Wait Events information
    
    ...

    次に、収集されたすべての情報が次のように表示されます。

    ##### --- Database Port and Data_Directory --- ####
    
    +----------------------+----------------------------------------------------+
    
    |         Name         |                      Setting                       |
    
    +----------------------+----------------------------------------------------+
    
    | data_directory       | /var/lib/pgsql/12/data                             |
    
    +----------------------+----------------------------------------------------+
    
    ##### --- List of Tablespaces ---- ######
    
    +----------------------+----------------------+-----------------------------+
    
    |         Name         |         Owner        |               Location      |
    
    +----------------------+----------------------+-----------------------------+
    
    | pg_default           | postgres             |                             |
    
    | pg_global            | postgres             |                             |
    
    +----------------------+----------------------+-----------------------------+
    
    ##### --- Slave and the lag with Master --- ####
    
    +----------------------+----------------------+------------------+----------+
    
    |  Application Name    |    Client Address    |      State       |   Lag    |
    
    +----------------------+----------------------+------------------+----------+
    
    | pgsql_14_node_0      | 10.10.10.127         | streaming        |     0.00 |
    
    +----------------------+----------------------+------------------+----------+
    
    ##### --- Cluster Information --- ####
    
    +---------------------------------------------------------------------------+
    
     Usename        : admindb
    
     Time           : 2020-11-12 17:27:18.200552 +0000 UTC
    
     Client Address : ::1
    
     Client Hostname:
    
     Version        : PostgreSQL 12.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8....
    
     Started        : 2020-11-12 17:07:07.185407 +0000 UTC
    
     Is Slave       : false
    
    +---------------------------------------------------------------------------+
    
    ##### --- Databases --- ####
    
    +----------------------+------------+
    
    |       Dat Name       |    Size    |
    
    +----------------------+------------+
    
    | postgres             |    8193 kB |
    
    | template1            |    8193 kB |
    
    | template0            |    8049 kB |
    
    +----------------------+------------+
    
    ##### --- Index Cache Hit Ratios --- ####
    
    Database: postgres
    
    +----------------------+------------+
    
    |      Index Name      |    Ratio   |
    
    +----------------------+------------+
    
    | index hit rate       |      0.00  |
    
    +----------------------+------------+
    
    ##### --- Table Cache Hit Ratios --- ####
    
    Database: postgres
    
    +----------------------+------------+
    
    |      Index Name      |    Ratio   |
    
    +----------------------+------------+
    
    | cache hit rate       |       0.00 |
    
    +----------------------+------------+
    
    ##### --- List of Wait_events for the entire Cluster - all-databases --- ####
    
    +----------------------+----------------------+---------+
    
    |   Wait Event Type    |        Event         |  Count  |
    
    +----------------------+----------------------+---------+
    
    | Activity             | BgWriterHibernate    |     1   |
    
    | Activity             | WalWriterMain        |     1   |
    
    | Activity             | LogicalLauncherMain  |     1   |
    
    | Activity             | WalSenderMain        |     1   |
    
    | Client               | ClientRead           |     2   |
    
    | Activity             | CheckpointerMain     |     1   |
    
    | Activity             | AutoVacuumMain       |     1   |
    
    +----------------------+----------------------+---------+
    
    ##### --- List of users and client_addr or client_hostname connected to --all-databases --- ####
    
    +----------------------+------------+---------+----------------------+--------+
    
    |   Wait Event Type    |        Client        |         State        |  Count |
    
    +----------------------+------------+---------+----------------------+--------+
    
    | admindb              | 10.10.10.121/32      | idle                 |      2 |
    
    | cmon_replication     | 10.10.10.127/32      | active               |      1 |
    
    | admindb              | ::1/128              | active               |      1 |
    
    +----------------------+------------+---------+----------------------+--------+
    
    ##### --- Counters diff after 10 seconds --- ####
    
    +----------------------+-------------+------------+--------------+-------------+------------+-------------+------------+-------------+------------+------------+-----------+-----------+-----------+------------+
    
    | Database             | Numbackends | XactCommit | XactRollback | BlksRead    | BlksHit    | TupReturned | TupFetched | TupInserted | TupUpdated | TupDeleted | Conflicts | TempFiles | TempBytes | Deadlocks  |
    
    +----------------------+-------------+------------+--------------+-------------+------------+-------------+------------+-------------+------------+------------+-----------+-----------+-----------+------------+
    
    |                      |       0     |       0    |       0      |       0     |     119    |      77     |      31    |       0     |       0    |       0    |       0   |       0   |       0   |       0    |
    
    | postgres             |       0     |      39    |       0      |       0     |    1541    |    1641     |     816    |       0     |       0    |       0    |       0   |       0   |       0   |       0    |
    
    ...
    
    ##### --- Table access per database --- ####
    
    Database: postgres
    
    +----------------------------------------------------+------+--------------------------------+---------+
    
    |                       Relname                      | Kind |             Datname            |  Count  |
    
    +----------------------------------------------------+------+--------------------------------+---------+
    
    | pg_database_datname_index                          |   i  |                                |       1 |
    
    | pg_class                                           |   r  | postgres                       |       1 |
    
    | pg_database                                        |   r  |                                |       1 |
    
    ...
    
    ##### --- Instance settings --- ####
    
                          Setting                                            Value
    
    allow_system_table_mods                       : off
    
    application_name                              :
    
    archive_cleanup_command                       :
    
    archive_command                               : (disabled)
    
    archive_mode                                  : off
    
    archive_timeout                               : 0
    
    array_nulls                                   : on
    
    authentication_timeout                        : 60
    
    autovacuum                                    : on
    
    autovacuum_analyze_scale_factor               : 0.1
    
    …
    
    ##### --- Processes start up command --- ####
    
    PID  :    Command line
    
      5158 : /usr/pgsql-12/bin/postgres -p 5432

    これですべての情報が得られたので、トラブルシューティング、パフォーマンスモニタリングなどのさまざまな目的に使用したり、現在の構成の概要を把握したりすることもできます。これを「pt-summary」などの別のPerconaToolkitで補完して、実行中のシステムに関する詳細情報を入手することもできます。

    結論

    Percona Toolkitは、データベース管理タスクを支援する強力なツールです。 pt-pg-summaryを使用すると、PostgreSQLインスタンスに関する情報を取得できるようになります。これを監視システムに統合したり、このツールを別のPercona Toolkitコンポーネントと組み合わせて、システムからさらに多くの情報を収集したりすることもできます。


    1. PostgreSQLで短い日の名前を取得する

    2. Oracleで文字列を分割する方法

    3. MySQL DATEDIFF()とTIMESTAMPDIFF():違いは何ですか?

    4. PostgreSQLでのAtanh()のしくみ