命令 - Backup

在当前数据库执行全部的备份。使用ZIP算法压缩备份文件。你可以通过RESTORE DATABASE命令还原。也可以使用 Automatic-Backup服务器插件自动备份。

备份和恢复类似于EXPORT DATABASEIMPORT DATABASE, 但是性能更好。

注意: OrientDB社区版不支持备份远程数据库。OrientDB 企业版支持 这个特征,详情看远程备份.

语法:

BACKUP DATABASE <output-file> [-incremental] [-compressionLevel=<compressionLevel>] [-bufferSize=<bufferSize>]
  • <output-file> 定义备份文件的输出目录。
  • -incremental 可选项, 执行增量备份。设置后,会计算从上次备份后的数据变化。2.2或者之后的版本会支持。
  • -compressionLevel 可选项, 定义压缩的级别。09,默认是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 定义压缩的级别。09,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();
}

更多信息, 参考: