4.2.2 文件级别备份
根据操作系统的不同,使用文件拷贝命令即可。
如:
Linux/unix下:
tar -cf backup.tar /usr/local/pgsql/data
cp
windows下:
jar cvfm classes.jar mymanifest -C foo/ .
copy命令等
4.2.3 在线备份(热备份)
(1) 确保 WAL 归档打开并且可以运转。 (另外单独讲解归档操作)
(2) 用客户端工具,以数据库超级用户身份连接到数据库,发出命令 :
SELECT pg_start_backup('label');//命令格式
select pg_start_backup('E:\\work\\monitor3\\bin\\data_back-20070207');//实际执行的命令
这里的 label 是任意DBA想使用的这次备份操作的唯一标识。
一个好习惯是使用你想把备份转储文件放置的目的地的全路径。
pg_start_backup 方法使用将用DBA指定的备份的信息,在数据目录里,创建一个备份标签文件, 叫做 “backup_label”,写入了如下信息(windows版本):
START WAL LOCATION: 0/3911E0 (file 000000010000000000000000)
CHECKPOINT LOCATION: 0/3911E0
START TIME: 2007-02-07 13:30:56 中国标准时间
LABEL: E:\work\monitor3\bin\data_back-20070207
(3) 至于连接到集群中的哪个数据库没什么关系。可以忽略函数返回的结果; 但是如果它报告错误,那么在继续之前处理它。
(4) 执行备份,使用任何方便的文件系统工具,比如 tar 或者 cpio。 这些操作过程中既不需要关闭数据库,也不希望关闭数据库的操作。
(5) 再次以数据库超级用户身份连接数据库,然后发出命令 :
SELECT pg_stop_backup();
PG将生成一个文件,如“000000010000000000000000.003911E0.backup”,这是一个备份的历史文件。pg_stop_backup()将保留本次生成的备份历史文件,然后把上次执行本方式备份产生的备份历史文件清理掉,然后发信号告知归档进程(pg_stop_backup -> CleanupBackupHistory -> XLogArchiveCheckDone -> XLogArchiveNotify -> SendPostmasterSignal),可以归档了。
(6) 返回成功。
归档的一些准备工作:
设置“postgresql.conf”文件:
Windows:
archive_command = 'copy "%p" E:\\work\\monitor3\\bin\\data_back\\%f'
linux:
archive_command = 'cp -i %p /mnt/server/archivedir/%f </dev/null'
归档进程会调用这命令把需要归档的文件拷贝到指定的归档目录