| 137 | | == Some PostgreSQL commands == |
| 138 | | * List of DB with parameters |
| 139 | | {{{#!sh |
| 140 | | $ psql postgres --command="\l" |
| 141 | | }}} |
| 142 | | * Create user |
| 143 | | {{{#!sh |
| 144 | | postgres:~$ createuser -D -R -S <UNIX user> |
| 145 | | }}} |
| 146 | | * Create DB |
| 147 | | {{{#!sh |
| 148 | | postgres:~$ createdb -O <postgres user> <database name> |
| 149 | | }}} |
| 150 | | * Backup |
| 151 | | {{{#!sh |
| 152 | | $ pg_dump -Fc --verbose --file=<file name (.data)> <database name> |
| 153 | | }}} |
| 154 | | * Drupal backup https://www.drupal.org/node/2607038#comment-11204141 |
| 155 | | {{{#!sh |
| 156 | | PGPASSWORD="" pg_dumpall -w -U <user> -h /var/run/postgresql -p 5432 -l user -f /.../<user>-2016-07-22-10-17-49.sql |
| 157 | | }}} |
| 158 | | * Restore the data base as a different user eg. to clone a Drupal website (bad idea to clone a drupal website) |
| 159 | | {{{#!sh |
| 160 | | $ pg_restore --verbose --no-owner --no-privileges --dbname=<database name> <file name (.data)> |
| 161 | | }}} |
| 162 | | * Mark cache tables as {{{UNLOGGED}}} Postgres <= 9.4 (Debian 8.0 Jessie) |
| 163 | | {{{#!sh |
| 164 | | ...=> \d name |
| 165 | | ... |
| 166 | | ...=> CREATE UNLOGGED TABLE toto (id serial, ...); |
| 167 | | }}} |
| 168 | | * http://www.postgresql.org/docs/9.4/static/sql-createtable.html |
| 169 | | * It is easier to get schema from pgAdmin III, maybe on development server. |
| 170 | | * Mark cache tables as {{{UNLOGGED}}} Postgres >= 9.5 |
| 171 | | {{{#!sql |
| 172 | | ALTER TABLE name SET UNLOGGED; |
| 173 | | }}} |
| 174 | | * http://www.postgresql.org/docs/current/static/sql-altertable.html |
| 175 | | * //[https://stackoverflow.com/questions/9153157/postgres-hstore-vs-redis-performance-wise Postgres Hstore vs. Redis - performance wise]// |
| 176 | | * {{{-E}}} or {{{--echo-hidden}}} See SQL requests send by {{{psql}}} for commands like {{{\l}}} ({{{\list}}}) |
| 177 | | {{{#!sh |
| 178 | | $ psql --echo-hidden --dbname postgres |
| 179 | | }}} |
| 180 | | * http://www.postgresql.org/docs/9.4/static/app-psql.html |
| 181 | | * http://www.postgresql.org/message-id/18380.994171549@sss.pgh.pa.us |
| 182 | | * How do I get a list of databases in a Postgresql database ? |
| 183 | | * [http://www.thegeekstuff.com/2009/04/15-practical-postgresql-database-adminstration-commands 15 Practical PostgreSQL Database Administration Commands] |
| 184 | | * Root Password |
| 185 | | {{{#!sh |
| 186 | | $ sudo -u postgres psql postgres |
| 187 | | ALTER USER postgres WITH PASSWORD '<password>'; |
| 188 | | \q |
| 189 | | }}} |
| 190 | | * https://www.leaseweb.com/labs/2014/04/10-developer-tools-install-ubuntu-14-04/ |
| 191 | | * Drop all tables in a database |
| 192 | | * keywords: drop all tables from postgres database |
| 193 | | * This can be copyed into psql |
| 194 | | {{{#!sql |
| 195 | | DROP FUNCTION IF EXISTS remove_all(); |
| 196 | | |
| 197 | | CREATE FUNCTION remove_all() RETURNS void AS $$ |
| 198 | | DECLARE |
| 199 | | rec RECORD; |
| 200 | | cmd text; |
| 201 | | BEGIN |
| 202 | | cmd := ''; |
| 203 | | |
| 204 | | FOR rec IN SELECT |
| 205 | | 'DROP SEQUENCE ' || quote_ident(n.nspname) || '.' |
| 206 | | || quote_ident(c.relname) || ' CASCADE;' AS name |
| 207 | | FROM |
| 208 | | pg_catalog.pg_class AS c |
| 209 | | LEFT JOIN |
| 210 | | pg_catalog.pg_namespace AS n |
| 211 | | ON |
| 212 | | n.oid = c.relnamespace |
| 213 | | WHERE |
| 214 | | relkind = 'S' AND |
| 215 | | n.nspname NOT IN ('pg_catalog', 'pg_toast') AND |
| 216 | | pg_catalog.pg_table_is_visible(c.oid) |
| 217 | | LOOP |
| 218 | | cmd := cmd || rec.name; |
| 219 | | END LOOP; |
| 220 | | |
| 221 | | FOR rec IN SELECT |
| 222 | | 'DROP TABLE ' || quote_ident(n.nspname) || '.' |
| 223 | | || quote_ident(c.relname) || ' CASCADE;' AS name |
| 224 | | FROM |
| 225 | | pg_catalog.pg_class AS c |
| 226 | | LEFT JOIN |
| 227 | | pg_catalog.pg_namespace AS n |
| 228 | | ON |
| 229 | | n.oid = c.relnamespace WHERE relkind = 'r' AND |
| 230 | | n.nspname NOT IN ('pg_catalog', 'pg_toast') AND |
| 231 | | pg_catalog.pg_table_is_visible(c.oid) |
| 232 | | LOOP |
| 233 | | cmd := cmd || rec.name; |
| 234 | | END LOOP; |
| 235 | | |
| 236 | | FOR rec IN SELECT |
| 237 | | 'DROP FUNCTION ' || quote_ident(ns.nspname) || '.' |
| 238 | | || quote_ident(proname) || '(' || oidvectortypes(proargtypes) |
| 239 | | || ');' AS name |
| 240 | | FROM |
| 241 | | pg_proc |
| 242 | | INNER JOIN |
| 243 | | pg_namespace ns |
| 244 | | ON |
| 245 | | (pg_proc.pronamespace = ns.oid) |
| 246 | | WHERE |
| 247 | | ns.nspname = |
| 248 | | 'public' |
| 249 | | ORDER BY |
| 250 | | proname |
| 251 | | LOOP |
| 252 | | cmd := cmd || rec.name; |
| 253 | | END LOOP; |
| 254 | | |
| 255 | | EXECUTE cmd; |
| 256 | | RETURN; |
| 257 | | END; |
| 258 | | $$ LANGUAGE plpgsql; |
| 259 | | |
| 260 | | SELECT remove_all(); |
| 261 | | }}} |
| 262 | | http://stackoverflow.com/questions/3327312/drop-all-tables-in-postgresql |
| 263 | | * http://stackoverflow.com/questions/20017552/delete-all-table-without-droping-database-in-postgres-in-django-dbshell-in-one-c |
| 264 | | === Postgres for cache tables === |
| 265 | | * nardberjean: dkg: may I ask you a question about postrgres and drupal cache tables? |
| 266 | | * nardberjean: I read that posgres can be configured to be faster on less important data |
| 267 | | * dkg: nardberjean: you can always ask questions here -- even though some of us might not know the answers ;) |
| 268 | | * nardberjean: so I was asking me if that would apply to cache table |
| 269 | | * dkg: yes, i recommend that cache tables be created as in-memory tables if you have enough RAM |
| 270 | | * nardberjean: well I do not know it I can do that on mf machines |
| 271 | | * nardberjean: as a member |
| 272 | | * nardberjean: I have been told that the less RAM used the better on theses machines |
| 273 | | * 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] |
| 274 | | * dkg: in particular, look at [https://www.postgresql.org/docs/9.4/static/sql-createtable.html] and "unlogged" |
| 275 | | * 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. |
| 276 | | * dkg: in my experience, most MF/PL machines are I/O constrained, not RAM constrained. |
| 277 | | * 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. |
| 278 | | * 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... |
| 279 | | * 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. :) |
| 280 | | * nardberjean: dkg: with d8 being very intense on cache, it makes it more an issue |
| 281 | | 2016-08-04 |
| | 137 | == Postgres == |
| | 138 | [Postgres] |