PostgreSQL与Oracle和DB2等很多数据库一样,也有归档日志和循环日志,并且可以利用归档日志进行基于时间点的恢复。 在线热备的前提是需要开启WAL日志,具体配置方法如下: vi /var/lib/pgsql/9.4/data/postgresql.conf 为了启动WAL归档,设置wal_level 配置参数到archive (或者hot_standby), archive_mode为on,并且所使用的shell命令由配置参数archive_command声明,它实际上总是放在postgresql.conf文件里的。在archive_command中,任何%p都被要归档文件的绝对路径代替,而任何%f只是被文件名代替。如果你需要在命令里嵌入一个真正的%字符,那么必须双写(%%)。最简单的有用命令类似下面这样: Unix/Linux环境:archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' Windows环境:archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' 它将把WAL段拷贝到/mnt/server/archivedir目录。这个只是一个例子,并非我们建议的方法, %p和%f参数被取代之后,实际执行的命令看起来这样: test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_xlog/00000001000000A900000065 /mnt/server/archivedir/00000001000000A900000065请根据实际情况进行路径和文件名的替代工作。重启数据库:-bash-3.2$ /usr/pgsql-9.4/bin/pg_ctl stop 等待服务器进程关闭 ......... 完成服务器进程已经关闭-bash-3.2$ /usr/pgsql-9.4/bin/pg_ctl start正在启动服务器进程-bash-3.2$ 日志: 日志输出重定向到日志收集进程提示: 后续的日志输出将出现在目录 "pg_log"中.-bash-3.2$ psql -U postgres musicpsql (9.4.0)输入 "help" 来获取帮助信息.进行基础备份:music=# SELECT pg_start_backup('music_full',true); pg_start_backup ----------------- 0/A000028(1 行记录)结束备份:music=# SELECT pg_stop_backup();注意: pg_stop_backup 执行完成,所有需要的WAL段都已经归档完成。 pg_stop_backup ---------------- 0/A0000B8(1 行记录)music=# 11-09 17:23