PG_备份还原系列之物理备份
pg_basebackup
注意事项:
- 备份整个实例,无法备份单个数据库或者schema;
- pg_basebackup被用于获得一个正在运行的PostgreSQL数据库集簇的基础备份,不会影响连接到该数据库的其他客户端,并且可以被用于时间点恢复。
- 必须由一个超级用户或者一个具有REPLICATION权限的用户建立,并且pg_hba.conf必须显式地允许该复制连接。
- 可以改变数据、配置等文件的路径
参数解释:
|
-D directory 将输出写到哪个目录 -F format p 原样输出,即把主数据库中的各个数据文件,配置文件、目录结构都完全一样的写到备份目录; t 将输出写成目标目录中的 tar 文件 -r rate 从该服务器传输数据的最大传输率。值的单位是千字节每秒。加上一个后缀M表示兆字节每秒,限制在运行服务器上的pg_basebackup产生的影响 -R --write-recovery-conf 在输出目录中(或者当使用 tar 格式时再基础归档文件中)建立 standby.signal 并附加连接设置到postgresql.auto.conf 来简化设置一个后备服务器。postgresql.auto.conf文件将记录连接设置(如果有)以及pg_basebackup所使用的复制槽,这样流复制后面就会使用相同的设置。 -T olddir=newdir --tablespace-mapping=olddir=newdir 将指定目录下的表空间目录重构路径 --waldir=waldir 指定用于预写式日志目录的位置。waldir必须是绝对路径。只有当备份是平面文件模式时才能指定事务日志目录。 -X method n 不要在备份中包括预写式日志 f 在备份末尾收集预写式日志文件。因此,有必要把wal_keep_segments参数设置得足够高,这样在备份末尾之前日志不会被移除。如果在要传输日志时它已经被轮转,备份将失败并且是不可用的。 s 在备份被创建时流传送预写式日志 -z 启用压缩 -Z level 0 到 9,0 是不压缩,9 是最佳压缩 -P 启用进度报告 -h host 指定运行服务器的机器的主机名。 -U username 用户名 -c fast|spread --checkpoint=fast|spread 将检查点模式设置为 fast(立刻)或 spread(默认) |
例子:
|
--启用压缩等级为9 更改/data/pgsql/12下表空间路径为/testdata2/data/pgsql/12,同时采用流式备份wal日志。 nohup pg_basebackup -D /data/backup_pg -Ft -z -Z 9 -T /data/pgsql/12=/testdata2/data/pgsql/12 -Xs -P -Upostgres -p 5431 -h 127.0.0.1 & |
|
--搭建主从时,备份主库 export PGPASSWORD=repl && $PGHOME/bin/pg_basebackup -R -D /pgsql/12/data -Fp -Xs -P -h 192.168.88.130 -p 5432 -Urepl --checkpoint=fast |
还原:
|
pg12将recovery.conf合进了postgresql.conf中 1.将对应数据文件放到对应目录下 2.在postgresql.conf中添加如下配置 3.启动数据库实例pg_ctl start -D /pgdata/10/data1/ a.恢复到最新: restore_command = 'cp /pgdata/10/archive_wal/%f %p' recovery_target_timeline = 'latest'
b.恢复到指定的时间点: restore_command = 'cp /pgdata/10/archive_wal/%f %p' recovery_target_time = '2019-04-02 13:16:49.007657+08'
c.创建还原点: SELECT pg_create_restore_point('restore_point1');
d.恢复到还原点: restore_command = 'cp /pgdata/10/archive_wal/%f %p' recovery_target_name ='restore_point1' |
参考资料:

浙公网安备 33010602011771号