一. PostgreSQL热备份的过程一般为:

  • 数据库中执行:pg_start_backup() ;
  • 然后使用操作系统的tar或 cp命令拷贝 PostgreSQL数据文件。
  • 数据库中执行:pg_stop_backup()  ;
 
1. 配置归档模式
   配置归档需要编辑postgresql.conf文件; 
  # vi postgresql.conf
archive_mode = on
archive_command = 'cp -i %p /home/postgres/archive/%f'
wal_level = archive
修改完之后;重启下数据库。
 
2. 创建备份
postgres=# select pg_start_backup('hot_back');
 pg_start_backup
-----------------
 /
( row)
3. 复制数据文件
 # tar -zcvf $HOME/backup/hotback.tar.gz data/
 
4. 停止备份
postgres=# select pg_stop_backup();
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
 pg_stop_backup
----------------
 /30000C0
( row)
在这里;备份过程已经完成了。
其中pg_start_backup() 操作的作用类似于oracle的“alter database begin backup”

实际上pg_start_backup()主要做了以下两个工作:

  • 置写日志标志为:XLogCtl->Insert.forcePageWrites = true,也就是把这个标志设置为true后,数据库会把变化的整个数据块都记录到数据库中,而不仅仅是块中记录的变化。
  • 强制发生一次checkpoint点。

最后奉上备份脚本

##===========================================================
##   pg_hot_back.sh
##   created by lottu
##   //
##   usage: pg_hot_back.sh
##============================================================
#!/bin/bash
DATE=`date +%Y%m%d`;
PG_ARCHIVE=/home/postgres/archive/
PG_DATA=/home/postgres/data/
PG_HOME=/home/postgres
BACK_LOG=/home/postgres/log/hot_${DATE}.log

#START BACKUP
echo "START BACKUP..............." > $BACK_LOG
psql postgres -c "select pg_start_backup('hot_back')" >> $BACK_LOGcd $PG_HOME
tar -zcvf ${PG_HOME}/backup/pg_back_${DATA}.tar.gz data/ >> $BACK_LOG
psql postgres -c "select pg_stop_backup()" >> $BACK_LOG
psql postgres -c "select pg_switch_xlog()" >> $BACK_LOG
psql postgres -c "select pg_current_xlog_location()" >> $BACK_LOG
echo "BACKUP  END" > $BACK_LOG
 
二. postgresql 恢复操作
 
  postgresql恢复操作同样很简单
1. 停掉数据库
   # pg_stop;
 
2. 删除/data/
   # rm –r /home/postgres/data/       #数据文件是放在/home/postgres/data/
   #若这个时候启动数据pg_start; 启动是成功的;不会报错!这个跟oracle是不同的;启动日志也不会出现error的错误提示;
 
3. 恢复备份
   # cp backup/hotback.tar.gz ./
   # tar -zxvf hotback.tar.gz 
 
4. 删除pg_xlog文件夹并重建
  # rm -rf pg_xlog 
  # mkdir -p pg_xlog/archive_status
 
5. 拷贝recovery.conf文件并修改
  # vi /data/pgdata/recovery.conf
    --新增内容,指定恢复文件和路径,%f,%p见上面说明
  restore_command = 'cp /home/postgres/archive/%f "%p"' 
 
6. 启动数据库
  #pg_start;

postgresql 热备与恢复的更多相关文章

  1. 采用pacemaker+corosync实现postgresql双机热备、高可用方案

    环境说明 参照上章已完成postgresql流复制配置,并关闭postgres服务. su - postgres pg_ctl -D /data/postgresql/data/ stop -m fa ...

  2. 使用xtrbackup 热备MySQL数据库 以及恢复和自动删除脚本

    直接上脚本 热备(全备) #!/bin/bash user='root' passwd='123456' my_config='/etc/my.cnf' #mysql configure log=fu ...

  3. oracle数据库热备中的备份和恢复及例子

    手工热备(开库状态) 备份控制文件: alter database backup controlfile to '/u01/oradata/prod/con.bak1'; 备份数据文件(这里用到pl/ ...

  4. postgresql双机热备、高可用方案(采用pacemaker+corosync实现)

    http://blog.csdn.net/qguanri/article/details/51151974 需求描述 我们有两台centos7的数据库主机A.B.要对A.B实现双机热备,A作为数据库m ...

  5. CentOS系统MySQL双机热备配置

    1  概述 在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux.Windows以及UNIX.其中Linux备受青睐的主要原因有两个: 首先,Linux作为自由软件有两个 ...

  6. 一张“神图”看懂单机/集群/热备/磁盘阵列(RAID)

    单机部署(stand-alone):只有一个饮水机提供服务,服务只部署一份 集群部署(cluster):有多个饮水机同时提供服务,服务冗余部署,每个冗余的服务都对外提供服务,一个服务挂掉时依然可用 热 ...

  7. 一张图看懂单机/集群/热备/磁盘阵列(RAID)

  8. Nginx+keepalived双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...

  9. keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

    本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...

随机推荐

  1. 红帽Linux 配置VNC桌面远程工具

    1.先确认VNC是否安装 默认情况下,Red Hat Enterprise Linux安装程序会将VNC服务安装在系统上. 使用rpm命令检查是否安装了vnc,如果安装了就显示软件名称: [root@ ...

  2. checkbox的完美用户体验(转)

    如需查看效果-->自行建个html文件,或者-->原文:http://bbs.blueidea.com/thread-2711834-1-7.html 最常见的checkbox的使用: & ...

  3. 使用mysql 的docker

    sudo docker run --name phpmyAdmin3 --link some-mysql:mysql -d phpmyadmin/phpmyadmin:latest -p 8080:8 ...

  4. PostgreSQL中字符串相关问题

    PostgreSQL的字符串类型有character.character varying和text的值.在使用character类型的时候, 它有自动填充空白的潜在影响,特别是在其它数据库(MySQL ...

  5. 源码搭建LNMP

      源码安装LNMP 作者:尹正杰   版权声明:原创作品,谢绝转载!否则将追究法律责任.       欢迎加入:高级运维工程师之路 598432640 前言:非常简单的一个平台LNMP,在生产实际环 ...

  6. JAVA多线程与多进程

    并发与并行是两个既相似而又不相同的概念,但往往容易混为一谈,这两者究竟有什么区别呢?本文通过一个例子让你更好地理解(本文由并发编程网翻译). 现代社会是并行的:多核.网络.云计算.用户负载,并发技术对 ...

  7. 最新RubyMine2016.2开发Ruby ON Rails(ROR)程序的流程

    1.RubyMine新建ROR工程 File->New Project     选择Rails下的"New Application"     点击OK 后生成ROR项目   ...

  8. linux第10天 msg消息队列

    cat /proc/sys/kernel/msgmax最大消息长度限制 cat /proc/sys/kernel/msgmnb消息队列总的字节数 cat /proc/sys/kernel/msgmni ...

  9. Java Switch(String)

    package shb.java.test; /** * switch支持字符串 * @Package:shb.java.test * @Description: * @author shaobn * ...

  10. Power Gating的设计(模块)

    Switching Fabric的设计: 三种架构:P沟道的switch vdd(header switch),N沟道的switch vss(footer switch),两个switch. 但是如果 ...