{{tag>Brouillon Postgres DB SQL}} = Notes Postgres Voir : * https://linuxfr.org/users/spacefox/journaux/postgresql-ne-faites-pas-ca Voir le client **pgcli** en ligne de commande avec autocomplétion et coloration syntaxique http://blog.adminrezo.fr/2016/01/mycli-pgcli-mysql-postregsql-clients/ Schéma arbre hiérarchie CSV * http://www.davidchriqui.com/fast-closure-tree-building-from-csv-in-plain-postgresql-and-a-little-bit-of-ruby/ Postgres HA * https://support.ptc.com/help/thingworx/platform/r9/en/index.html#page/ThingWorx/Help/ThingWorxHighAvailability/ExampleDeploymentofPostgreSQLHAwithPgpoolII.html * WITNESS-SERVER Voir : * https://opensource.com/article/23/2/manage-large-postgres-databases Supervision : * temBoard Agent DSN: pgsql:host=localhost;port=5432;dbname=testdb;user=myuser;password=mypass (See PDO PostgreSQL) == Notes Création de la DB sudo su - postgres psql CREATE ROLE myuser WITH LOGIN PASSWORD 'P@ssw0rd'; CREATE DATABASE mydatabase OWNER myuser; Connexion psql -U myuser -h hostname -d mydatabase Ou avec un fichier hostname:port:database:username:password Échapper les caractères comme ':' du mot de passe avec un antislash Réindex sudo -u postgres reindexdb --all == Se connecter à une socket Voir [[Postgres - se connecter a une socket]] == Commande psql \l show databases \d show all \dt show tables \ef edit function \x row / line select === echo-hidden - commande cachées - psql détaillé commande SQL Avoir le détail des commandes cachées que psql fait Par exemple pour avoir le detail de la commande ''\dt'' C'est possible avec l'option ''--echo-hidden'' ou ''-E'' $ env PGPASSWORD=$TF_VAR_pgpass psql -E -q -h jbl1-rdsscm-dev-env.cuapezqvgl58.eu-central-1.rds.amazonaws.com -U $TF_VAR_pguser --dbname=$TF_VAR_pgname postgres=> \dt ********* QUERY ********** SELECT n.nspname as "Schema", c.relname as "Name", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'table' WHEN 'I' THEN 'index' END as "Type", pg_catalog.pg_get_userbyid(c.relowner) as "Owner" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','p','') AND n.nspname <> 'pg_catalog' AND n.nspname <> 'information_schema' AND n.nspname !~ '^pg_toast' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; ************************** == Requêtes système SELECT * FROM pg_stat_activity; Export les requêtes en cours dans un fichier CSV psql -h /tmp -p 5432 -q --csv -c "SELECT * FROM pg_stat_activity;" 2>>/tmp/log_query.err | gzip > /tmp/log_query_$(date +%Y-%m-%d-%H%M).csv.gz == Config === Recomandation RedHat pour AAP Source : https://access.redhat.com/documentation/fr-fr/red_hat_ansible_automation_platform/2.2/html/red_hat_ansible_automation_platform_installation_guide/planning-installation max_connections == 1024 shared_buffers == ansible_memtotal_mb*0.3 work_mem == ansible_memtotal_mb*0.03 maintenance_work_mem == ansible_memtotal_mb*0.04 Voir aussi : * https://docs.ansible.com/automation-controller/4.3.0/html/administration/performance.html == Ansible #!/usr/bin/ansible-playbook --- - name: Postgres Select Example hosts: localhost gather_facts: false tasks: - name: Select from users table postgresql_query: login_host: db1.acme.local login_user: pg_user login_password: "P@ssw0rd!" login_db: db1 login_port: 5455 query: "SELECT * FROM users LIMIT 10;" register: db_result - name: DEBUG 10 debug: var: db_result == Autres === Lors d'une mise à jour sous Debian o resolve the situation, before upgrading, execute: # su - postgres $ pg_lsclusters $ pg_ctlcluster 9.4 main start $ pg_dumpall --cluster 9.4/main | pigz > 9.4-main.dump.gz $ cp -a /etc/postgresql/9.4/main 9.4-main.config $ pg_dropcluster 9.4 main --stop Then after the upgrade, execute: # su - postgres $ pg_createcluster 9.4 main $ cp 9.4-main.config/* /etc/postgresql/9.4/main $ pg_ctlcluster 9.4 main start $ zcat 9.4-main.dump.gz | psql -q $ rm -rf 9.4-main.config 9.4-main.dump.gz === Force drop db while others may be connected A tester : * https://dba.stackexchange.com/questions/11893/force-drop-db-while-others-may-be-connected === Autres select DB,count(*) from performance_schema.processlist group by DB;