命令 - Backup
在当前数据库执行全部的备份。使用ZIP算法压缩备份文件。你可以通过RESTORE DATABASE
命令还原。也可以使用 Automatic-Backup服务器插件自动备份。
备份和恢复类似于EXPORT DATABASE
和 IMPORT DATABASE
, 但是性能更好。
语法:
BACKUP DATABASE <output-file> [-incremental] [-compressionLevel=<compressionLevel>] [-bufferSize=<bufferSize>]
<output-file>
定义备份文件的输出目录。-incremental
可选项, 执行增量备份。设置后,会计算从上次备份后的数据变化。2.2或者之后的版本会支持。- -
compressionLevel
可选项, 定义压缩的级别。0
到9
,默认是9
。1.7及之后支持。 -bufferSize
可选项, 定义压缩的buffer大小。默认1MB。1.7及之后版本支持。
举例:
- 备份数据库:
orientdb> CONNECT plocal:../databases/mydatabase admin admin
orientdb> BACKUP DATABASE /backups/mydb.zip
Backing current database to: database mydb.zip
Backup executed in 0.52 seconds
备份API
支持JAVA API的调用方式,增量和全量备份。
全量备份
使用backup()
方法对数据库进行全量备份:
db.backup(out, options, callable, listener, compressionLevel, bufferSize);
out
定义备份文件的输出流OutputStream
。可以使用FileOutputStream
持久化到硬盘。options
使用Map<String, Object>
定义备份选项callable
定义当数据库锁住之后的回调函数listener
定义针对备份消息的监听者compressionLevel
定义压缩的级别。0
到9
,0
表示无压缩,9
表示最高压缩。较高的级别得到较小的文件,但是需要更多的CPU资源。bufferSize
定义buffer的大小,字节单位。更大的buffer,压缩效率越高。
例子:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("plocal:/temp/mydb");
db.open("admin", "admin");
try{
OCommandOutputListener listener = new OCommandOutputListener() {
@Override
public void onMessage(String iText) {
System.out.print(iText);
}
};
OutputStream out = new FileOutputStream("/temp/mydb.zip");
db.backup(out,null,null,listener,9,2048);
} finally {
db.close();
}
增量备份
2.2版本,OrientDB支持增量备份,使用函数incrementalBackup()
。
db.incrementalBackup(backupDirectory);
backupDirectory
定义目录产生增量备份文件。
之前的增量备份文件必须在相同目录下,这样才能计算备份的数据库位置。
例子:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("plocal:/temp/mydb");
db.open("admin", "admin");
try{
db.backup("/var/backup/orientdb/mydb");
} finally {
db.close();
}
更多信息, 参考: