postgres备份恢复相关

25.3. 连续归档和时间点恢复(PITR)

第一步建立wal归档

wal_level配置成replica或更高

archive_mode为on

配置archive_command,在archive_command中,%p会被将要归档的文件路径所替代,而%f只会被文件名所替代(路径名是相对于当前工作目录而言的,即集簇的数据目录)。

archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'  # Unix

第二步,制作一个基础备份

可以用pg_basebackup工具,制作一个基础备份。

备份通过一个常规PostgreSQL连接制作,并且使用复制协议。该连接必须由一个超级用户或者一个具有REPLICATION权限(第 21.2 节)的用户建立,并且pg_hba.conf必须显式地允许该复制连接。该服务器还必须被配置,使max_wal_senders设置得足够高以留出至少一个会话用于备份以及一个用于WAL流(如果使用流)。

例子

要创建服务器mydbserver的一个基础备份并将它存储在本地目录/usr/local/pgsql/data中:

$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data

要创建本地服务器的一个备份,为其中每一个表空间产生一个压缩过的 tar 文件,并且将它存储在目录backup中,在运行期间显示一个进度报告:

$ pg_basebackup -D backup -Ft -z -P

要创建一个单一表空间本地数据库的备份并且使用bzip2压缩它:

$ pg_basebackup -D - -Ft -X fetch | bzip2 > backup.tar.bz2

(如果在该数据库中有多个表空间,这个命令将失败)。

要创建一个本地数据库的备份,其中/opt/ts中的表空间被重定位到./backup/ts

$ pg_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts


也可以使用低级api制作一个基础备份:

制作一个非排他低级备份:

1.确保wal归档被启用且正在工作。

2.用有运行pg_start_backup权力的用户连到服务器,发出命令:    select pg_start_backup('label', false, false);             #需要保持到备份结束。

          第二个参数如果改为true,代表尽可能快地开始备份,将会发出一个立即的检查点并且使用尽可能多的io。

          第三个参数如果改为true,表示要做一个非排他基础备份。

3.使用tar或者cpio执行备份。不需要停止正常的数据库操作。

4.在同一个连接中,发出命令:     select * from pg_stop_backup(false);    #这会终止备份模式。

猜你喜欢

转载自www.cnblogs.com/alexhjl/p/12551016.html