Dieser Beitrag erklärt einige praktische psql-Befehle und beschreibt, wie die PostgreSQL-Abfragen von der Befehlszeile aus ausgeführt werden, um nützliche Informationen aus der Engine-Datenbank zu erhalten.
Stellen Sie über die Befehlszeile eine Verbindung zur „Postgres“-Datenbank her
So stellen Sie eine Verbindung zur „Postgres“-Datenbank her:
# su - postgres Last login: Thu Apr 30 20:25:36 AEST 2020 on pts/1
Da postgres aus Softwaresammlungen stammt, müssen Sie postgresql aktivieren, um eine Verbindung zur Engine-Datenbank herzustellen:
Für 4.2.8:
-bash-4.2$ scl enable rh-postgresql95 "psql -d engine -U postgres" psql (9.5.14) Type "help" for help. engine=#
Für 4.3.6:
-bash-4.2$ scl enable rh-postgresql10 "psql -d engine -U postgres" psql (10.6) Type "help" for help.
Einige praktische und nützliche psql-Befehle
1. Holen Sie sich Hilfe zu psql-Befehlen.
Um alle verfügbaren psql-Befehle zu kennen, verwenden Sie das \? Befehl, um Hilfe zu erhalten.
engine=# \?
2. Alle Datenbanken mit ‚\l‘ auflisten.
RHV hat zwei verwandte Datenbanken:Engine und Ovirt-Engine-History. RHV erstellt eine PostgreSQL-Datenbank namens engine. Während der Installation des Pakets ovirt-engine-dwh wird eine zweite Datenbank namens ovirt-engine-history erstellt, die historische Konfigurationsinformationen und statistische Metriken enthält, die im Laufe der Zeit jede Minute aus der Betriebsdatenbank der Engine gesammelt wurden. Sie können die beiden Datenbankinformationen unten sehen:
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)
Verwenden Sie „\l+“ für detaillierte Informationen:
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. Informationen über die aktuelle Datenbankverbindung anzeigen.
engine=# \conninfo You are connected to database "engine" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
4. Verfügbare Schemas auflisten:
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. Listen Sie alle Tabellen mit „\z“ auf:
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. Tabellen in der aktuellen Engine-Datenbank anzeigen:
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. Beschreiben Sie eine Tabelle:
engine-# \d table_name
Zum Beispiel:
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
Führen Sie die SQL-Abfrage von Engine-Tabellen aus, um Informationen zu erhalten
Hier sind einige Beispielabfragen:
1. So rufen Sie alle Benutzer in der PostgreSQL-Engine-Datenbank ab:
engine=# select user_id, name, username from users;
2. So erhalten Sie Ihr gesamtes Netzwerk:
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. So erhalten Sie Informationen zu KVM-Hosts:
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. So überprüfen Sie die maximal zulässige Anzahl von Client-Verbindungen:
engine=# select setting::bigint from pg_settings where name='max_connections'; setting --------- 150 (1 row)
5. So überprüfen Sie die Speichermenge, die von internen Sortiervorgängen und Hash-Tabellen verwendet werden soll, bevor Sie in temporäre Festplattendateien schreiben:
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. So überprüfen Sie die gemeinsam genutzten Puffer darauf, wie viel Speicher für PostgreSQL zum Zwischenspeichern von Daten reserviert ist:
engine=# select setting::bigint from pg_settings where name='shared_buffers'; setting --------- 16384 (1 row)
7. So prüfen Sie die geschätzte maximale RAM-Nutzung:
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)
Andere
1. Laden Sie die Konfigurationsdateien mit select pg_reload_config():
neuengine=# select pg_reload_conf(); pg_reload_conf ---------------- t (1 row)
2. Zeigen Sie den Befehlsverlauf an, Sie verwenden den Befehl \s.
engine=# \s
3. Um psql zu beenden, verwenden Sie den Befehl \q und drücken Sie die Eingabetaste, um psql zu beenden.
engine=# \q