| 1 | #!/bin/bash |
|---|
| 2 | |
|---|
| 3 | # Copyright 2007 Peter Palfrader <peter@palfrader.org> |
|---|
| 4 | # |
|---|
| 5 | # Permission is hereby granted, free of charge, to any person obtaining |
|---|
| 6 | # a copy of this software and associated documentation files (the |
|---|
| 7 | # "Software"), to deal in the Software without restriction, including |
|---|
| 8 | # without limitation the rights to use, copy, modify, merge, publish, |
|---|
| 9 | # distribute, sublicense, and/or sell copies of the Software, and to |
|---|
| 10 | # permit persons to whom the Software is furnished to do so, subject to |
|---|
| 11 | # the following conditions: |
|---|
| 12 | # |
|---|
| 13 | # The above copyright notice and this permission notice shall be |
|---|
| 14 | # included in all copies or substantial portions of the Software. |
|---|
| 15 | # |
|---|
| 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|---|
| 17 | # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|---|
| 18 | # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|---|
| 19 | # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
|---|
| 20 | # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|---|
| 21 | # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|---|
| 22 | # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|---|
| 23 | |
|---|
| 24 | # Sync the postgres pg_xlog directory every few minutes to the backup host. |
|---|
| 25 | |
|---|
| 26 | trap "kill %%; exit 1" SIGTERM |
|---|
| 27 | |
|---|
| 28 | LOGTAG="xlogsync" |
|---|
| 29 | MYHOSTNAME=`hostname` |
|---|
| 30 | |
|---|
| 31 | errorcount=0 |
|---|
| 32 | cd /var/lib/postgresql/8.3/ircservices || exit 1 |
|---|
| 33 | |
|---|
| 34 | logger -t "$LOGTAG" "Starting" |
|---|
| 35 | while :; do |
|---|
| 36 | rsync -raz --delete-after --exclude archive_status pg_xlog/ backup:"pg_xlog-$MYHOSTNAME" |
|---|
| 37 | err="$?" |
|---|
| 38 | if [ "$err" != 0 ]; then |
|---|
| 39 | errorcount=$(( errorcount + 1 )) |
|---|
| 40 | logger -t "$LOGTAG" "Syncing pg_xlog/ failed for $errorcount consecutive tries." |
|---|
| 41 | else |
|---|
| 42 | errorcount=0 |
|---|
| 43 | logger -t "$LOGTAG" "Synced pg_xlog/ successfully." |
|---|
| 44 | fi |
|---|
| 45 | sleep 5m |
|---|
| 46 | done & |
|---|
| 47 | wait $! |
|---|
| 48 | |
|---|