PostgreSQL备份还原

PostgreSQL的备份恢复

备份:

  物理备份、逻辑备份。

物理备份

  文件的copy,创建备份点后执行文件copy(pg_start_backup,copy file,pg_stop_backup;),或者直接执行pg_basebackup;

  目前只支持全备份,如需支持差异备份:1级,2级,需使用其他插件。如:backuprest

  backup_label:

      START WAL LOCATION: 0/B060C10 (file 0000000E000000000000000B)  ----启动steam replication使用的日志点

      CHECKPOINT LOCATION: 0/B060C48  ----检查点时间

      BACKUP METHOD: pg_rewind    ----备份方式

      BACKUP FROM: standby      ----备份来源

      START TIME: 2020-01-13 00:06:27 PST  ----备份时间

  还原流程:

    1.读取pg_control file,若是PITR则从backup_label中读取checkpoint location;

    2.根据recovery.conf(12版本放到postgres.conf中)的restore_command,recovery_target_time,recovery_target_timeline等参数;

    3.从归档目录中恢复wal到$PGDATA/pg_wal中;

    4.重放wal日志数据;

    5.恢复完成后暂停/重新生成新的timeline history file;

    

逻辑备份

  数据逻辑导出,数据保持一致性状态,pg_dump(单库)/pg_dumpall(全实例所有库);

  • 支持压缩,本地进行压缩,需考虑CPU消耗,注意远程备份是在本地进行压缩。
  • 支持多分任务,只有pg_dump -Fd情况下配合-j <nums>支持。
  • 支持只导出对象定义 -s / -a数据

  恢复方式:

    --psql执行语句;

    --纯数据可以使用copy;

    --自定义格式-Fc,只能使用restore

eg:逻辑备份

备份db1库:

pg_dump -Fp -f /tmp/db1.sql db1

恢复db1库:

psql db1 atlasdb -f /tmp/db1.sql

备份db1库:

pg_dump -Fc -f /tmp/db1.dump db1

恢复db1库:

pg_restore  -Fp -C -d atlasdb /tmp/a.sql

  

eg:物理备份

备份:

开启归档:
archive_mode = on;
archive_command = 'cp %p /tmp/wakbak/%f';

执行备份:
pg_basebackup -d /databack -Ft -v -P -Xs

还原:

tar -xf /databack/base.tar -C $PGDATA
tar -xf /databack/pg_wal.tar -C $PGDATA/pg_wal
表空间根据情况进行解压

 

猜你喜欢

转载自www.cnblogs.com/angell-zuo/p/12206718.html