【已测试】PostgreSQL备份和还原

时间:2024-04-14 21:47:26

postgerSQL提供了不同的方法来备份和恢复数据库,可以是某一时刻数据库的快照的完整备份或者增量备份,
可以使用SQL转储或者文件系统级别的备份,在增量备份的基础上还可以实现基于时间点的恢复。

有三种不同的基本方法来备份和恢复postgresql数据。

1、使用pg_dump和pg_dumpall进行存储,从SQL转储文件中恢复
    PG在做写入操作的时候,对数据文件的的任何修改信息,首先会写入WAL日志(预写日志),然后才会对数据文件信息物理修改。所以当服务器停电或者宕机,PG在启动的时候首先会读取WAL日志,对数据文件进行恢复。
    理论上如果有一个数据库基础备份(全备),再配合WAL日志,是可以将数据库恢复到任意时间节点的。
    
    但是WAL日志的文件个数并不是无限增长的,而且做的回滚操作太多,会影响生产的数据库性能。
    所以我们需要结合业务,对数据库定期的做全备、在结合WAL日志就可以实现恢复数据到任意时间节点。
    


    1.1 开启WAL日志归档


    创建存放基础备份backups,任务执行脚本scripts、存放归档的目录archive_wals
    [root@cdp1 data]# pwd
    /data
    [root@cdp1 data]# mkdir -p /data/{backups,scripts,archive_wals}
    [root@cdp1 data]# chown -R postgres:postgres /data/{backups,scripts,archive_wals}
    [root@cdp1 data]# ll