备份和恢复

OrientDB支持类似关系数据库的备份和恢复操作。

备份会针对当前打开的数据库执行一个完整的备份。备份文件使用ZIP算法压缩。恢复数据库使用Restore Database command。备份比导出数据库Export Database快很多。可以参考Export DatabaseImport Database命令。备可以通过 Automatic-Backup服务器插件自动完成。

何时使用备份,何时使用导出?

备份做一个当前数据库的一致性的拷贝,所有的写操作在备份期间都被锁住。数据库在备份操作期间只允许读取。如果你需要在备份期间读写数据库,需要设置为分布式的节点集群。

导出,不会锁库,允许导出过程并发写入。这意味着导出的数据库包括导出过程中数据库的变化。

备份数据库

从版本1.7.8开始,OrientDB提供了"backup.sh"脚本用于在命令窗口备份。语法:

./backup.sh <dburl> <user> <password> <destination> [<type>]

参数:

  • dburl: 数据库URL
  • user: 拥有备份权限的用户database user allowed to run the backup
  • password: 密码
  • destination: 备份文件的目录
  • type: 可选的备份类型,支持两种:
    • default, 备份期间会锁住数据库
    • lvm, 在后台执行,使用LVM的copy-on-write快照

使用"plocal"打开的数据库进行备份:

./backup.sh plocal:../database/testdb admin admin /dest/folder/backup.zip

无锁的备份

backup.sh脚本支持无锁备份,前提是操作系统支持 LVM。例如:

./backup.sh plocal:../database/testdb admin admin /dest/folder/backup.zip lvm

同样的例子,本地的远程模式数据库:

./backup.sh remote:localhost/testdb root rootpwd /dest/folder/backup.zip lvm

更多关于LVM和写时复制(Copy On Write (COS))参考:

使用命令行

你可以使用命令行窗口执行备份。之前的例子,使用命令行的方法如下:

orientdb> CONNECT plocal:../database/testdb admin admin
orientdb> BACKUP DATABASE /dest/folder/backup.zip
Backup executed in 0.52 seconds

恢复数据库

使用命令行窗口或者Java API进行恢复数据库,恢复操作只能在新的数据库上执行,也就是说恢复操作不知道数据库的合并。如果需要合并,使用 导出/导入数据库。举例:

orientdb> RESTORE DATABASE /backups/mydb.zip
Restore executed in 6.33 seconds

参考