2.3 为什么要执行基础备份?
首先,参见“PG8.x提供的备份方式使用方法”一节,了解基础备份的方式与步骤。
其次,要明白,使用“pg_start_backup”与“pg_stop_backup”是完成一次基础备份操作。这样做的原因是:
首先,“pg_start_backup”通过调用“RequestCheckpoint”使得“RequestCheckpoint”通过发送信号(SIGINT)的方式要求bgwriter(BackgroundWriterMain)进程创建checkpoint;并记载“checkpointloc”和“startpoint”信息到备份标签文件中,而这两个变量的信息源自:
checkpointloc = ControlFile->checkPoint;
startpoint = ControlFile->checkPointCopy.redo;
其次,当文件拷贝完毕后,执行“pg_stop_backup”时,为了记载“stoppoint”的信息,强迫PG系统对Xlog日志段的文件进行切换操作,即“日志切换”(参见“日志切换的时机”,表明了切换的条件和时机),代码如下:
stoppoint = RequestXLogSwitch();
有了起始点与结束点的信息后,则把这些信息记载到类似“000000010000000000000000.003A4320.backup”这样的文件中,然后要求系统立即归档。
第三,当系统崩溃时,需要使用日志进行恢复时,就要用到备份标记文件,参见“恢复过程步骤”,因为恢复时使用了备份标记文件,这样就能保证恢复的完整性。
说明,所有这些,实质是为恢复时提供一个有效的可用的checkpoint所记载的信息。所以当进行基础备份时,有并发操作日志文件也是允许的,因为并发操作写的是日志文件,不影响对于有效checkpoint的记载。