Perforce的备份恢复机制和策略
Perforce实施备份介绍
创建方法:在Perforce服务器,使用-jc标志创建。
P4d–r root –jc默认保存为Perforce程序根目录下checkpoint.n文件和journal.n-1到同时使journal开始重新记录历史数据。
上一次的checkpint.n和这次的journal。是本次创建checkpoint数据库的当前所有信息。例如:你可以使数据恢复到checkpoint.6创建的时候,用checkpint.5和变更记录journal.5。也可以理解为checkpoint5+journal.5 = checkpoint.6。
使checkpoint和journal保存在特定文件夹下或是使用文件前缀。也是使用-jc 选项。例如:p4d –jc prefix ,将保存checkpoint为prefix.ckp.n 和prefix.jnl.n.如果没有前缀,将默认保存为checkpoint.n & journal.n 。
使用p4 admincheckpoint [z] [prefix]来实现在不登录服务器的情况下实现备份。此时你必须是一个超级管理员。
在恢复的时候,checkpoint至少和当前depot中的源程序文件一样老。两者之间的时间差,越小越好。当然程序文件可以比checkpoint文件新。
Journal files
就是服务器中所有的数据库变更集log文件,(开始时间是上次备份),journal files是两个checkpoint之间的纽带。
确定在创建一个checkpoint在开启journnaling,
打开Journaling后:马上使用p4d –jc 和p4d –J journalfile。Journal的名字和存档地址可以更改。
注意:如果创建了journal文件用-Jfilename flag ,请确定,序列checkpoints 使用相同的名字,不然journaling是不会正确命名的。
关闭Journaling,设置P4JOURNAL 为off,在不使用-J flag 的情况下,执行p4d命令。
Versioned files:
源程序文件存放在服务器的更目录下,是存放为RCS根式,使用filename.v.只有一个RCS-format file 每个文本文件,
在checkpointing操作后:
为了保证versioned文件反应了数据库的所有信息。那些源程序文件必须重新保存,
备份过程:
1,确定server上的文件完整,增加MD5 数据和文件长度信息,到一个新的文件里。
P4 verify //…
使用p4 verify –q 可以保证只有在错误的信息的时候输出。
2,运行 p4d –jc 或者 p4 admincheckpoint
3,在备份的时候,会将数据库上锁。最好在备份的时候停止服务器。
4,停止、启动服务器命令:
Netstart perforce、Netstop perforce/P4 admin stop
5,保证在checkpoint成功创建后,再备份源程序文件,
6,如果checkpoint被成功创建后,
7,你不需要备份db.*,你最新的checkpoint和journal、源程序包含了所有用来恢复的信息。
恢复过程:
数据路损坏,源程序文件没有影响:
1.1 准备最近一次备份的checkpoint文件,
1.2 准备当前的journal文件,
1.3 停止当前perforce的运行,p4d admin stop
1.4 重命名或者移走db.*文件。
1.5 调用有p4d –jr 命令,确定最近一次的checkpoint 和当前的journal,如果你想指定Server root,就使用-r $P4ROOT 参数。例如:
P4d –r $P4ROOT –jr checkpoint_file journal_file
数据库文件和源程序文件都损坏:
2.1 必须保证VersiondFiles源程序不能比checkpoint更老。
2.2 最近一次备份的checkpoint文件,你的versioned文件,存放在P4Root目录下,
2.3 停止服务,p4 admin stop
2.4 重命名或者移走db.*文件,
2.5 使用-jr 参数调用p4d,例如:P4d–r $P4ROOT –jr checkpoint_file
2.6 恢复数据文件,将数据文件放到原来位置即可。
2.7 数据恢复后验证数据的完整性。
使用命令:p4verify –q //…