| 1 | = Some PostgreSQL commands = |
| 2 | * List of DB with parameters |
| 3 | {{{#!sh |
| 4 | $ psql postgres --command="\l" |
| 5 | }}} |
| 6 | * Create user |
| 7 | {{{#!sh |
| 8 | postgres:~$ createuser -D -R -S <UNIX user> |
| 9 | }}} |
| 10 | * Create DB |
| 11 | {{{#!sh |
| 12 | postgres:~$ createdb -O <postgres user> <database name> |
| 13 | }}} |
| 14 | * Backup |
| 15 | {{{#!sh |
| 16 | $ pg_dump -Fc --verbose --file=<file name (.data)> <database name> |
| 17 | }}} |
| 18 | * Drupal backup https://www.drupal.org/node/2607038#comment-11204141 |
| 19 | {{{#!sh |
| 20 | PGPASSWORD="" pg_dumpall -w -U <user> -h /var/run/postgresql -p 5432 -l user -f /.../<user>-2016-07-22-10-17-49.sql |
| 21 | }}} |
| 22 | * Restore the data base as a different user eg. to clone a Drupal website (bad idea to clone a drupal website) |
| 23 | {{{#!sh |
| 24 | $ pg_restore --verbose --no-owner --no-privileges --dbname=<database name> <file name (.data)> |
| 25 | }}} |
| 26 | * Mark cache tables as {{{UNLOGGED}}} Postgres <= 9.4 (Debian 8.0 Jessie) |
| 27 | {{{#!sh |
| 28 | ...=> \d name |
| 29 | ... |
| 30 | ...=> CREATE UNLOGGED TABLE toto (id serial, ...); |
| 31 | }}} |
| 32 | * http://www.postgresql.org/docs/9.4/static/sql-createtable.html |
| 33 | * It is easier to get schema from pgAdmin III, maybe on development server. |
| 34 | * Mark cache tables as {{{UNLOGGED}}} Postgres >= 9.5 |
| 35 | {{{#!sql |
| 36 | ALTER TABLE name SET UNLOGGED; |
| 37 | }}} |
| 38 | * http://www.postgresql.org/docs/current/static/sql-altertable.html |
| 39 | * //[https://stackoverflow.com/questions/9153157/postgres-hstore-vs-redis-performance-wise Postgres Hstore vs. Redis - performance wise]// |
| 40 | * {{{-E}}} or {{{--echo-hidden}}} See SQL requests send by {{{psql}}} for commands like {{{\l}}} ({{{\list}}}) |
| 41 | {{{#!sh |
| 42 | $ psql --echo-hidden --dbname postgres |
| 43 | }}} |
| 44 | * http://www.postgresql.org/docs/9.4/static/app-psql.html |
| 45 | * http://www.postgresql.org/message-id/18380.994171549@sss.pgh.pa.us |
| 46 | * How do I get a list of databases in a Postgresql database ? |
| 47 | * [http://www.thegeekstuff.com/2009/04/15-practical-postgresql-database-adminstration-commands 15 Practical PostgreSQL Database Administration Commands] |
| 48 | * Root Password |
| 49 | {{{#!sh |
| 50 | $ sudo -u postgres psql postgres |
| 51 | ALTER USER postgres WITH PASSWORD '<password>'; |
| 52 | \q |
| 53 | }}} |
| 54 | * https://www.leaseweb.com/labs/2014/04/10-developer-tools-install-ubuntu-14-04/ |
| 55 | * Drop all tables in a database |
| 56 | * keywords: drop all tables from postgres database |
| 57 | * This can be copyed into psql |
| 58 | {{{#!sql |
| 59 | DROP FUNCTION IF EXISTS remove_all(); |
| 60 | |
| 61 | CREATE FUNCTION remove_all() RETURNS void AS $$ |
| 62 | DECLARE |
| 63 | rec RECORD; |
| 64 | cmd text; |
| 65 | BEGIN |
| 66 | cmd := ''; |
| 67 | |
| 68 | FOR rec IN SELECT |
| 69 | 'DROP SEQUENCE ' || quote_ident(n.nspname) || '.' |
| 70 | || quote_ident(c.relname) || ' CASCADE;' AS name |
| 71 | FROM |
| 72 | pg_catalog.pg_class AS c |
| 73 | LEFT JOIN |
| 74 | pg_catalog.pg_namespace AS n |
| 75 | ON |
| 76 | n.oid = c.relnamespace |
| 77 | WHERE |
| 78 | relkind = 'S' AND |
| 79 | n.nspname NOT IN ('pg_catalog', 'pg_toast') AND |
| 80 | pg_catalog.pg_table_is_visible(c.oid) |
| 81 | LOOP |
| 82 | cmd := cmd || rec.name; |
| 83 | END LOOP; |
| 84 | |
| 85 | FOR rec IN SELECT |
| 86 | 'DROP TABLE ' || quote_ident(n.nspname) || '.' |
| 87 | || quote_ident(c.relname) || ' CASCADE;' AS name |
| 88 | FROM |
| 89 | pg_catalog.pg_class AS c |
| 90 | LEFT JOIN |
| 91 | pg_catalog.pg_namespace AS n |
| 92 | ON |
| 93 | n.oid = c.relnamespace WHERE relkind = 'r' AND |
| 94 | n.nspname NOT IN ('pg_catalog', 'pg_toast') AND |
| 95 | pg_catalog.pg_table_is_visible(c.oid) |
| 96 | LOOP |
| 97 | cmd := cmd || rec.name; |
| 98 | END LOOP; |
| 99 | |
| 100 | FOR rec IN SELECT |
| 101 | 'DROP FUNCTION ' || quote_ident(ns.nspname) || '.' |
| 102 | || quote_ident(proname) || '(' || oidvectortypes(proargtypes) |
| 103 | || ');' AS name |
| 104 | FROM |
| 105 | pg_proc |
| 106 | INNER JOIN |
| 107 | pg_namespace ns |
| 108 | ON |
| 109 | (pg_proc.pronamespace = ns.oid) |
| 110 | WHERE |
| 111 | ns.nspname = |
| 112 | 'public' |
| 113 | ORDER BY |
| 114 | proname |
| 115 | LOOP |
| 116 | cmd := cmd || rec.name; |
| 117 | END LOOP; |
| 118 | |
| 119 | EXECUTE cmd; |
| 120 | RETURN; |
| 121 | END; |
| 122 | $$ LANGUAGE plpgsql; |
| 123 | |
| 124 | SELECT remove_all(); |
| 125 | }}} |
| 126 | http://stackoverflow.com/questions/3327312/drop-all-tables-in-postgresql |
| 127 | * http://stackoverflow.com/questions/20017552/delete-all-table-without-droping-database-in-postgres-in-django-dbshell-in-one-c |
| 128 | = Postgres for cache tables = |
| 129 | * nardberjean: dkg: may I ask you a question about postrgres and drupal cache tables? |
| 130 | * nardberjean: I read that posgres can be configured to be faster on less important data |
| 131 | * dkg: nardberjean: you can always ask questions here -- even though some of us might not know the answers ;) |
| 132 | * nardberjean: so I was asking me if that would apply to cache table |
| 133 | * dkg: yes, i recommend that cache tables be created as in-memory tables if you have enough RAM |
| 134 | * nardberjean: well I do not know it I can do that on mf machines |
| 135 | * nardberjean: as a member |
| 136 | * nardberjean: I have been told that the less RAM used the better on theses machines |
| 137 | * dkg: you might be interested in a few different points of documentation at a system level: [https://www.postgresql.org/docs/9.4/static/non-durability.html] |
| 138 | * dkg: in particular, look at [https://www.postgresql.org/docs/9.4/static/sql-createtable.html] and "unlogged" |
| 139 | * dkg: "the less RAM used the better" is always generally true but isn't very nuanced -- if you use less RAM by swapping everything to disk all the time to the point where no one can use the disk it seems worse to me. |
| 140 | * dkg: in my experience, most MF/PL machines are I/O constrained, not RAM constrained. |
| 141 | * nardberjean: well Non-Durable Settings would be good for I/O, and I could do it by myself, even if I feel the change should be made into Drupal code. |
| 142 | * nardberjean: for RAM tables, I do not know if it is already configured on mf machines, once I will have that info, I could try to move some small cache table to it... |
| 143 | * dkg: cool! please report on support.mayfirst.org once you tried it out -- whether you make successful progress or otherwise, sorting this out is likely to be helpful to everyone on MF/PL. :) |
| 144 | * nardberjean: dkg: with d8 being very intense on cache, it makes it more an issue |
| 145 | 2016-08-04 |