ITPub博客

首页 > 数据库 > 数据库开发技术 > Postgresql 备份恢复

Postgresql 备份恢复

原创 数据库开发技术 作者:fiona8953 时间:2016-07-28 13:47:20 0 删除 编辑

在线备份以及即时恢复(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博客 ” ,链接:https://blog.itpub.net/26477398/viewspace-2122677/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: PostgreSQL索引
请登录后发表评论 登录
全部评论

注册时间:2014-06-13

  • 博文量
    284
  • 访问量
    222484