derby数据库的数据_Derby数据库备份

derby数据库的数据

抽象

我已经发布了许多有关Derby的博客:

这本不打算是一个系列。 但是多年来,我越来越多地使用Derby。 最近,我开始将Derby用作微服务体系结构的首选数据库。 这些是个人使用的应用程序,因此Derby绰绰有余。 即使这些是个人使用的应用程序,我也需要具有受限用户权限的 多台服务器 ,并且最重要的是要备份。 我不想丢失我的数据! 这篇文章的目的是演示如何备份Derby数据库。

免责声明

这篇文章仅供参考。 在使用所提供的任何信息之前,请认真思考。 从中学到东西,但最终自己做出决定,风险自负。

要求

我使用以下主要技术完成了本文的所有工作。 您可能可以使用不同的技术或版本来做相同的事情,但不能保证。

  • Apache Derby 10.14.2.0
  • OpenJDK 64位服务器VM Zulu 11.1 + 23(内部版本11-ea + 22,混合模式)

下载

此博客文章没有下载。 脚本完整显示。

Derby系统实用程序

备份Derby数据库确实非常简单。 Derby具有用于执行备份的内置系统实用程序。 该实用程序是SYSCS_UTIL.SYSCS_BACKUP_DATABASE('/location/of/the/backup/') 。 调用时,Derby将锁定数据库并执行到您指定为SYSCS_BACKUP_DATABASE参数的文件系统位置的复制操作。 现在我们知道执行备份的系统实用程序,让我们看一下bash脚本来自动执行备份。

备份脚本

清单1是一个bash脚本,可以轻松对其进行修改以备份任何网络服务器上的任何Derby数据库。

清单1 – derby-mydatabase-backup.sh

#!/bin/bash

# Define a bunch of variables which will be used within this script.
# The names of the variables should be self-explanatory.
DERBY_HOME=/opt/db-derby-10.14.2.0-bin/
NETWORK_SERVER_HOST=localhost
NETWORK_SERVER_PORT=1527
DATABASE_NAME=mydatabase
DATABASE_USER=sa
DATABASE_PASSWORD=abc123
JDBC_URL="jdbc:derby://$NETWORK_SERVER_HOST:$NETWORK_SERVER_PORT/$DATABASE_NAME"
BACKUP_DIRECTORY="/tmp/$DATABASE_NAME-backup/$NETWORK_SERVER_PORT"
BACKUP_SCRIPT="$BACKUP_DIRECTORY/backup.sql"

# Remove old backup if it exists. It is not a good idea to
# perform a backup on top of an existing backup.
rm -rf $BACKUP_DIRECTORY
mkdir -p $BACKUP_DIRECTORY
cd $BACKUP_DIRECTORY

# Use the `echo` command to dynamically create an SQL file.
# This SQL file will be used by Derby `ij` to connect to
# the database and perform the backup.
echo "connect '$JDBC_URL' user '$DATABASE_USER' password '$DATABASE_PASSWORD';" >> $BACKUP_SCRIPT
echo "CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE('$BACKUP_DIRECTORY');" >> $BACKUP_SCRIPT
echo "exit;" >> $BACKUP_SCRIPT

# Run the Derby `ij` application, passing it the SQL file
# that was just dynamically created. `ij` will read the 
# SQL file, executing its commands. This will then
# cause `ij` to connect to the database and call the 
# system utility to perform the backup.
$DERBY_HOME/bin/ij $BACKUP_SCRIPT

让我们更详细地看一下这个脚本。

第5-15行设置了脚本中使用的许多变量。 一些变量用于设置其他变量的值。 这里没有什么太复杂的。 变量的名称不言自明。

第17-19行是文件系统维护。 在现有备份之上执行备份不是一个好主意。 因此,这些行将删除现有备份(如果存在),并创建一个新的空备份目录。

然后,第24–26行负责创建backup.sql脚本文件。 该脚本文件包含执行备份SQL命令。 第24行是connect命令,因此Derby ij可以连接到要备份的数据库。 第25行是调用SYSCS_BACKUP_DATABASE系统实用程序的SYSCS_BACKUP_DATABASE 。 备份目录的位置作为参数传递给实用程序。 执行此SQL命令后,Derby将锁定数据库并执行备份。 第26行是退出ijexit命令。

最后,第33行就是一切发生的地方。 使用动态创建的backup.sql文件的位置作为命令行参数传递给ij来调用Derby ij命令。 当bash执行第33行时,如果一切顺利,则将备份Derby数据库。

注意如果使用Java安全策略运行Derby网络服务器,则此脚本可能会遇到一些问题。 Java SecurityManager可能会阻止与数据库或SecurityManager的网络连接,而我在写入备份目录时遇到权限问题。

摘要

备份Derby数据库非常容易。 只需调用SYSCS_UTIL.SYSCS_BACKUP_DATABASE('/location/of/the/backup/')

参考资料

备份数据库。 (2013年1月24日)。 db.apache.org。 从https://db.apache.org/derby/docs/10.0/manuals/admin/hubprnt43.html检索。

翻译自: https://www.javacodegeeks.com/2018/11/derby-database-backup.html

derby数据库的数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值