Postgresql 備份恢復

fiona8953發表於2016-07-28

線上備份以及即時恢復(PITR)

組合檔案系統備份與WAL檔案的備份。如果需要恢復,我們就恢復備份, 然後重放備份了的WAL檔案,把備份恢復到當前的時間。
注意: 
pg_dump和 pg_dumpall沒有產生檔案系統級別備份,並且不能作為 連續歸檔解決方案的一部分。比如備份是符合邏輯的並且不包含 WAL重放使用的足夠資訊。
24.3.1. 設定WAL歸檔
一個執行著的PostgreSQL系統生成一個無限長的WAL日誌序列。 系統物理上把這個序列分隔成WAL段檔案,通常每段16M(在編譯PostgreSQL的 時候可以改變其大小)。這些段檔案的名字是數值命名的,這些數值反映他們在抽取出來的 WAL 序列中的位置。在不適用WAL歸檔的時候,系統通常只是建立幾個段檔案然 後"迴圈"使用它們,方法是把不再使用的段檔案的名字重新命名為更高的段編號。 系統假設那些內容比前一次檢查點更老的段檔案已經沒用了,然後就可以迴圈利用。

# - Archiving -
archive_mode = on       # allows archiving to be done
                # (change requires restart)
#archive_command =  'test ! -f /u01/app/postgres/recovery/archive/crm03/%f && cp %p /u01/app/postgres/recovery/archive/crm03/%f'        # command to use to archive a logfile segment
#TBY-20160318::archive_command =  'rsync -a %p barman@rtdkm1bar01.100:/barman/rtdka1pgs51_crm03/incoming/'      # command to use to archive a logfile segment
archive_command =  '/var/lib/pgsql/archive_wal.sh %p %f'        # command to use to archive a logfile segment
archive_timeout = 1800      # force a logfile segment switch after this
                # number of seconds; 0 disables
----------------------------------------------------------------------------------------
cat archive_wal.sh
#!/bin/bash
# Script de  copie des WALs en local et vers le serveur esclave
# Usage:
# archive_command = '/var/lib/pgsql/archive_wal.sh %p %f'

FILE=$1
FILE_NAME=$2
INSTANCE=crm03
SLAVE=rtdkm1ply51.hosting.as
DATA=/u01/app/postgres/data/${INSTANCE}
#BARMAN=rtdka1pql69.dktetrix.net
#BARMAN_DIR=/barman/rtdka1pql51_mydkt01/incoming/
#TBY20160316::BARMAN=rtdkm1ply51.hosting.as
BARMAN=rtdkm1pgs51.hosting.as
BARMAN_DIR=/barman/rtdkm1pgs51_${INSTANCE}/incoming/
LOG=/tmp/rsync-archives.log
ARCHDIR=/u01/app/postgres/recovery/archive/${INSTANCE}
ARCHDIRDIST=/u01/app/postgres/recovery/archive/${INSTANCE}
date > $LOG

/usr/bin/rsync -a $DATA/$FILE $ARCHDIR/$FILE_NAME

if [ $? -ne 0 ]
then
    echo "Archiving error of the WAL $FILE on the master server" >> $LOG 2>&1
    exit 1
fi

/usr/bin/rsync $FILE postgres@$SLAVE:$ARCHDIRDIST/$FILE_NAME

if [ $? -ne 0 ]
then
    echo "Archiving error of the WAL $FILE on the slace server" >> $LOG 2>&1
    exit 1
fi

/usr/bin/rsync $FILE barman@$BARMAN:$BARMAN_DIR/$FILE_NAME

if [ $? -ne 0 ]
then
    echo "Archiving error of the WAL $FILE on the BARMAN server $BARMAN" >> $LOG 2>&1
    exit 1
fi
-------------------------------------------------------------------------------------------


pg_switch_xlog手動強制切換段檔案

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26477398/viewspace-2122677/,如需轉載,請註明出處,否則將追究法律責任。

相關文章