PostgreSQL » History » Version 1
Marc Dequènes, 2018-05-02 18:03
| 1 | 1 | Marc Dequènes | h1. PostgreSQL |
|---|---|---|---|
| 2 | |||
| 3 | h2. Authentication |
||
| 4 | |||
| 5 | 3 methods: |
||
| 6 | * access via UNIX socket for all accounts |
||
| 7 | * access via local role database for local accounts |
||
| 8 | * access via PAM for non-local accounts |
||
| 9 | |||
| 10 | h3. Local Accounts |
||
| 11 | |||
| 12 | These are accounts needed for system services (user services should use secondary accounts defined in the LDAP instead). |
||
| 13 | |||
| 14 | Creation: |
||
| 15 | * create a normal role with login right (and probably inherit right too) |
||
| 16 | * add the role in the special ''local-roles'' role members |
||
| 17 | |||
| 18 | Beware all roles directly or *indirectly* members of the *local-roles* role (indirect members == members of members of members...) will have to authenticate via their local hash and not via PAM! |
||
| 19 | |||
| 20 | h3. PAM Accounts |
||
| 21 | |||
| 22 | Creation: |
||
| 23 | * create a normal role with login right (and probably inherit right too) with no password |
||
| 24 | |||
| 25 | That's all ! |
||
| 26 | |||
| 27 | h3. Managing Team Work |
||
| 28 | |||
| 29 | Create: |
||
| 30 | * create a normal role without login right and password |
||
| 31 | * add user roles as member of this role |
||
| 32 | * give this role rights to the parts the team is working on |
||
| 33 | |||
| 34 | Beware not to use this role for login, or you'll probably end-up adding it to the *local-roles* and all PAM users not able to login anymore (see remark in the *Local Accounts* chapter)! |
||
| 35 | |||
| 36 | h2. Storage sizes |
||
| 37 | |||
| 38 | h3. Databases sizes |
||
| 39 | |||
| 40 | <pre> |
||
| 41 | SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database; |
||
| 42 | </pre> |
||
| 43 | |||
| 44 | h3. Tables sizes in current database |
||
| 45 | |||
| 46 | <pre> |
||
| 47 | SELECT nspname, relname, |
||
| 48 | pg_size_pretty(tablesize+indexsize+toastsize+toastindexsize) AS totalsize |
||
| 49 | FROM |
||
| 50 | (SELECT ns.nspname, cl.relname, pg_relation_size(cl.oid) AS tablesize, |
||
| 51 | COALESCE((SELECT SUM(pg_relation_size(indexrelid))::bigint |
||
| 52 | FROM pg_index WHERE cl.oid=indrelid), 0) AS indexsize, |
||
| 53 | CASE WHEN reltoastrelid=0 THEN 0 |
||
| 54 | ELSE pg_relation_size(reltoastrelid) |
||
| 55 | END AS toastsize, |
||
| 56 | CASE WHEN reltoastrelid=0 THEN 0 |
||
| 57 | ELSE pg_relation_size((SELECT reltoastidxid FROM pg_class ct |
||
| 58 | WHERE ct.oid = cl.reltoastrelid)) |
||
| 59 | END AS toastindexsize |
||
| 60 | FROM pg_class cl, pg_namespace ns |
||
| 61 | WHERE cl.relnamespace = ns.oid |
||
| 62 | AND ns.nspname NOT IN ('pg_catalog', 'information_schema') |
||
| 63 | AND cl.relname IN |
||
| 64 | (SELECT table_name FROM information_schema.tables |
||
| 65 | WHERE table_type = 'BASE TABLE')) ss |
||
| 66 | ORDER BY tablesize+indexsize+toastsize+toastindexsize DESC; |
||
| 67 | </pre> |
||
| 68 | |||
| 69 | h2. PostgreSQL interrupted recovery |
||
| 70 | |||
| 71 | If you got something like this in your logs: |
||
| 72 | <pre> |
||
| 73 | 2011-07-15 16:23:12 CEST LOG: database system was interrupted while in recovery at 2008-03-21 00:02:22 CET |
||
| 74 | 2011-07-15 16:23:12 CEST HINT: This probably means that some data is corrupted and you will have to use the last backup for recovery. |
||
| 75 | 2011-07-15 16:23:12 CEST LOG: database system was not properly shut down; automatic recovery in progress |
||
| 76 | 2011-07-15 16:23:12 CEST LOG: consistent recovery state reached at 28/55780068 |
||
| 77 | 2011-07-15 16:23:12 CEST LOG: redo starts at 28/55780068 |
||
| 78 | 2011-07-15 16:23:12 CEST WARNING: specified item offset is too large |
||
| 79 | 2011-07-15 16:23:12 CEST CONTEXT: xlog redo insert: rel 1663/16387/17911; tid 76/212 |
||
| 80 | 2011-07-15 16:23:12 CEST PANIC: btree_insert_redo: failed to add item |
||
| 81 | 2011-07-15 16:23:12 CEST CONTEXT: xlog redo insert: rel 1663/16387/17911; tid 76/212 |
||
| 82 | 2011-07-15 16:23:12 CEST LOG: startup process (PID 2981) was terminated by signal 6: Aborted |
||
| 83 | 2011-07-15 16:23:12 CEST LOG: aborting startup due to startup process failure |
||
| 84 | </pre> |
||
| 85 | |||
| 86 | If you don't care about loosing uncommited data: |
||
| 87 | <pre> |
||
| 88 | su - postgres |
||
| 89 | /usr/lib/postgresql/9.0/bin/pg_resetxlog -f 9.0/main/ |
||
| 90 | </pre> |
||
| 91 | Running first without -f can give hints about the situation. |
||
| 92 | |||
| 93 | Dumping, reiniting, and reloading data is recommended. |