この投稿では、いくつかの実用的な psql コマンドについて説明し、コマンド ラインから PostgreSQL クエリを実行してエンジン データベースから有用な情報を取得する方法について説明します。
コマンド ラインから「Postgres」データベースに接続する
「Postgres」データベースに接続するには:
# su - postgres Last login: Thu Apr 30 20:25:36 AEST 2020 on pts/1
postgres はソフトウェア コレクションから取得されるため、postgresql を有効にしてエンジン データベースに接続する必要があります:
4.2.8 の場合:
-bash-4.2$ scl enable rh-postgresql95 "psql -d engine -U postgres" psql (9.5.14) Type "help" for help. engine=#
4.3.6 の場合:
-bash-4.2$ scl enable rh-postgresql10 "psql -d engine -U postgres" psql (10.6) Type "help" for help.
いくつかの実用的で便利な psql コマンド
1. psql コマンドのヘルプを取得します。
使用可能なすべての psql コマンドを知るには、\?ヘルプを表示するコマンド。
engine=# \?
2. すべてのデータベースを「\l」で一覧表示します。
RHV には、engine と ovirt-engine-history という 2 つの関連データベースがあります。 RHV は、engine と呼ばれる PostgreSQL データベースを作成します。 ovirt-engine-dw パッケージをインストールすると、ovirt-engine-history と呼ばれる 2 番目のデータベースが作成されます。このデータベースには、エンジン運用データベースから毎分収集された履歴構成情報と統計メトリックが含まれます。以下の 2 つのデータベース情報を確認できます:
engine=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------------+------------------------+----------+-------------+-------------+----------------------- engine | engine | UTF8 | en_US.UTF-8 | en_US.UTF-8 | ovirt_engine_history | ovirt_engine_history | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | templates | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (5 rows)
詳細情報には「\l+」を使用:
engine=# \l+ List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description ----------------------+----------------------+----------+-------------+-------------+-----------------------+---------+------------+-------------------------------------------- engine | engine | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 28 MB | pg_default | ovirt_engine_history | ovirt_engine_history | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 48 MB | pg_default | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7288 kB | pg_default | default administrative connection database templates | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| 7153 kB | pg_default | unmodifiable empty database | | | | | postgres=CTc/postgres | | | template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| 7288 kB | pg_default | default template for new databases | | | | | postgres=CTc/postgres | | | (5 rows)
3. 現在のデータベース接続に関する情報を表示します。
engine=# \conninfo You are connected to database "engine" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
4. 利用可能なスキーマをリストします:
engine=# \dn+ List of schemas Name | Owner | Access privileges | Description ----------+----------+----------------------+------------------------ aaa_jdbc | engine | | public | postgres | postgres=UC/postgres+| standard public schema | | =UC/postgres | (2 rows)
5. 「\z」を含むすべてのテーブルを一覧表示:
engine=# \z Access privileges Schema | Name | Type | Access privileges | Column privileges | Policies --------+--------------------------------------------------+----------+-------------------+-------------------+---------- public | active_migration_network_interfaces | view | | | public | ad_groups | table| | | ... public | all_disks | view | | | public | all_disks_for_vms | view | | | public | all_disks_including_snapshots | view | | | public | all_disks_including_snapshots_and_memory | view | | | public | audit_log | table | | | public | cluster | table | | |
6. 現在のエンジン データベースのテーブルを表示:
engine-# \dt List of relations Schema | Name | Type | Owner --------+-------------------------------------+-------+-------- public | ad_groups | table | engine public | cluster | table | engine public | cluster_features | table | engine public | cluster_policies | table | engine public | cluster_policy_units | table | engine public | disk_lun_map | table | engine public | disk_profiles | table | engine public | disk_vm_element | table | engine public | dwh_osinfo | table | engine ... public | vds_static | table | engine public | vds_statistics | table | engine public | vfs_config_labels | table | engine public | vfs_config_networks | table | engine public | vm_device | table | engine
7. テーブルの説明:
engine-# \d table_name
例:
engine-# \d vds_static Table "public.vds_static" Column | Type | Modifiers -------------------------------+--------------------------+---------------------------------------------------- vds_id | uuid | not null vds_name | character varying(255) | not null vds_unique_id | character varying(128) | host_name | character varying(255) | not null ... kernel_cmdline | text | last_stored_kernel_cmdline | text | reinstall_required | boolean | not null default false
エンジン テーブルから SQL クエリを実行して情報を取得する
クエリの例を次に示します:
1. PostgreSQL エンジン データベース内のすべてのユーザーを取得するには:
engine=# select user_id, name, username from users;
2. すべてのネットワークを取得するには:
engine=# select id,name,description,storage_pool_id,vdsm_name from network; id | name | description | storage_pool_id | vdsm_name --------------------------------------+-----------+--------------------+--------------------------------------+----------- <network id> | ovirtmgmt | Management Network | <storage_pool_id> | ovirtmgmt <network id> | vm_pub | vm network | <storage_pool_id> | vm_pub
3. KVM ホスト情報を取得するには:
engine=# select vds_name, vds_unique_id, port,cluster_id ,_create_date from vds_static; vds_name | vds_unique_id | port | cluster_id | _create_date --------------------------+--------------------------------------+-------+--------------------------------------+------------------------------- xxx.xxx.xxx.xxx || 54321 | | (1 row)
4. 許可されているクライアント接続の最大数を確認するには:
engine=# select setting::bigint from pg_settings where name='max_connections'; setting --------- 150 (1 row)
5. 一時ディスク ファイルに書き込む前に、内部ソート操作とハッシュ テーブルで使用されるメモリ量を確認するには:
engine=# select name, setting, unit, source from pg_settings where name = 'work_mem'; name | setting | unit | source ----------+---------+------+-------------------- work_mem | 8192 | kB | configuration file (1 row)
6. PostgreSQL がデータのキャッシュに使用する専用のメモリ量について共有バッファを確認するには:
engine=# select setting::bigint from pg_settings where name='shared_buffers'; setting --------- 16384 (1 row)
7. 推定最大 RAM 使用量を確認するには:
engine=# select pg_size_pretty(shared_buffers::bigint*block_size + max_connections*work_mem*1024 + autovacuum_max_workers*(case when autovacuum_work_mem=-1 then maintenance_work_mem else autovacuum_work_mem end)*1024) as estimated_max_ram_usage from ( select (select setting::bigint from pg_settings where name='block_size') as block_size, (select setting::bigint from pg_settings where name='shared_buffers') as shared_buffers, (select setting::bigint from pg_settings where name='max_connections') as max_connections,(select setting::bigint from pg_settings where name='work_mem') as work_mem, (select setting::bigint from pg_settings where name='autovacuum_max_workers') as autovacuum_max_workers,(select setting::bigint from pg_settings where name='autovacuum_work_mem') as autovacuum_work_mem,(select setting::bigint from pg_settings where name='maintenance_work_mem') as maintenance_work_mem)as _ ; estimated_max_ram_usage ------------------------- 1712 MB (1 row)
その他
1. select pg_reload_config() を使用して設定ファイルをリロードします:
engine=# select pg_reload_conf(); pg_reload_conf ---------------- t (1 row)
2. コマンド履歴を表示するには、\s コマンドを使用します。
engine=# \s
3. psql を終了するには、\q コマンドを使用し、Enter キーを押して psql を終了します。
engine=# \q