Postgresql91 » Historie » Version 1
Jeremias Keihsler, 12.01.2017 14:45
1 | 1 | Jeremias Keihsler | h1. PostgreSQL Disaster Recovery |
---|---|---|---|
2 | |||
3 | h2. Backup (Exporting DB) |
||
4 | |||
5 | h3. Requirements |
||
6 | |||
7 | h3. Preliminary Note |
||
8 | |||
9 | The PostgreSQL-Database-Cluster is saved periodically in background by @rsnapshot@ and the @backup_psql.sh@-script. |
||
10 | |||
11 | The backup is located in @/var/cache/rsnapshot/@ where several subdirectories exist. |
||
12 | <pre><code class="bash"> |
||
13 | cd /var/cache/rsnapshot |
||
14 | ls |
||
15 | </code></pre> |
||
16 | will give you an output like |
||
17 | <pre><code class="bash"> |
||
18 | daily.0 hourly.10 hourly.14 hourly.18 hourly.21 hourly.4 hourly.8 |
||
19 | daily.1 hourly.11 hourly.15 hourly.19 hourly.22 hourly.5 hourly.9 |
||
20 | hourly.0 hourly.12 hourly.16 hourly.2 hourly.23 hourly.6 |
||
21 | hourly.1 hourly.13 hourly.17 hourly.20 hourly.3 hourly.7 |
||
22 | </code></pre> |
||
23 | @hourly.0@ is the most recent hourly backup, while @hourly.1@ is one hour before @hourly.0@ and so on. Once a day @hourly.23@ is copied to @daily.0@ and the former @daily.0@ is moved to @daily.1@ and so on. |
||
24 | |||
25 | if you want to save just the most recent backup go for @hourly.0@. The following example shows how to retrieve the backup with PSFTP [[vbip:software:remoteaccess|Remote Access for Windows machines]] |
||
26 | |||
27 | # find out what your local working directory is |
||
28 | # open connection to server in this example @192.168.2.167@ |
||
29 | ## if you connect to the server the first time, you can check the fingerprint and continue by storing the fingerprint locally by answering @y@ |
||
30 | ## *or* by not storing the fingerprint and answering @n@ |
||
31 | ## *or* pressing @<enter>@ if you don't trust this server |
||
32 | ## login as: @root@ |
||
33 | ## provide your password |
||
34 | # change to the remote @rsnapshot@ directory |
||
35 | # change to the database-backup directory |
||
36 | # list the files |
||
37 | # download all files |
||
38 | ## pg_dumpall.sql |
||
39 | ## pg_hba.conf |
||
40 | ## pg_ident.conf |
||
41 | ## postgresql.conf |
||
42 | # close connection |
||
43 | # close terminal |
||
44 | |||
45 | <pre><code class="bash"> |
||
46 | lpwd |
||
47 | open 192.168.2.167 |
||
48 | cd /var/cache/rsnapshot/hourly.0 |
||
49 | cd localhost/postgres |
||
50 | ls |
||
51 | get pg_dumpall.sql |
||
52 | get pg_hba.conf |
||
53 | get pg_ident.conf |
||
54 | get postgresql.conf |
||
55 | close |
||
56 | bye |
||
57 | </code></pre> |
||
58 | |||
59 | h2. Restore (Importing DB) |
||
60 | |||
61 | Importing the complete DB involves |
||
62 | * upload the DB-dump |
||
63 | * drop the current DB |
||
64 | * reloading a complete DB-dump |
||
65 | |||
66 | The following example shows how to retrieve the backup with PSFTP [[vbip:software:remoteaccess|Remote Access for Windows machines]] |
||
67 | |||
68 | # find out what your local working directory is |
||
69 | # change your local working directory to the local directory containing the @pg_dumpall.sql@ file |
||
70 | # open connection to server in this example @192.168.2.167@ |
||
71 | ## if you connect to the server the first time, you can check the fingerprint and continue by storing the fingerprint locally by answering @y@ |
||
72 | ## *or* by not storing the fingerprint and answering @n@ |
||
73 | ## *or* pressing @<enter>@ if you don't trust this server |
||
74 | ## login as: @root@ |
||
75 | ## provide your password |
||
76 | # change to the remote @postgres-data@ directory |
||
77 | # upload the dump file |
||
78 | ## pg_dumpall.sql |
||
79 | # close connection |
||
80 | # close terminal |
||
81 | |||
82 | <pre><code class="bash"> |
||
83 | lpwd |
||
84 | lcd c:\psql.bak\ |
||
85 | open 192.168.2.167 |
||
86 | cd /var/lib/pgsql/9.1/data |
||
87 | |||
88 | put pg_dumpall.sql |
||
89 | close |
||
90 | bye |
||
91 | </code></pre> |
||
92 | |||
93 | if applicable drop the expired current database via remote shell |
||
94 | <pre><code class="bash"> |
||
95 | cd /var/lib/pgsql/9.1/data |
||
96 | su postgres |
||
97 | dropdb JANUS_11002 |
||
98 | exit |
||
99 | </code></pre> |
||
100 | |||
101 | restore the dump |
||
102 | <pre><code class="bash"> |
||
103 | cd /var/lib/pgsql/9.1/data |
||
104 | chown postgres:postgres pg_dumpall.sql |
||
105 | su postgres |
||
106 | psql -f pg_dumpall.sql postgres |
||
107 | </code></pre> |